From 59747d0291b84791fe72b55cf946eb10a826d69c Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Thu, 17 Mar 2016 19:26:52 +0100 Subject: [PATCH] Small change to innosetup script so that install can be performed by non-privileged user --- .hgignore | 121 + packaging/FreeBSD/recoll/Makefile | 34 + packaging/FreeBSD/recoll/distinfo | 2 + packaging/FreeBSD/recoll/pkg-descr | 24 + packaging/FreeBSD/recoll/pkg-plist | 100 + packaging/debian/buildppa.sh | 185 + packaging/debian/debian/README.Debian | 23 + packaging/debian/debian/changelog | 579 + packaging/debian/debian/compat | 1 + packaging/debian/debian/control | 85 + packaging/debian/debian/copyright | 194 + packaging/debian/debian/patches/series | 0 packaging/debian/debian/python-recoll.install | 2 + .../debian/debian/python3-recoll.install | 2 + packaging/debian/debian/recoll.install | 12 + packaging/debian/debian/recoll.menu | 2 + packaging/debian/debian/rules | 89 + packaging/debian/debian/source/format | 1 + packaging/debian/debian/watch | 2 + packaging/debian/debiankio/changelog | 92 + packaging/debian/debiankio/compat | 1 + packaging/debian/debiankio/control | 32 + packaging/debian/debiankio/copyright | 113 + packaging/debian/debiankio/dirs | 2 + packaging/debian/debiankio/docs | 1 + .../patches/fix-cmake-build-parser.patch | 21 + packaging/debian/debiankio/patches/series | 1 + packaging/debian/debiankio/rules | 6 + packaging/debian/debiankio/source/format | 1 + packaging/debian/debiankio/watch | 4 + packaging/debian/debianunitylens/changelog | 30 + packaging/debian/debianunitylens/compat | 1 + packaging/debian/debianunitylens/control | 18 + packaging/debian/debianunitylens/copyright | 20 + packaging/debian/debianunitylens/docs | 1 + packaging/debian/debianunitylens/rules | 52 + packaging/debian/debianunitylens/watch | 12 + packaging/homebrew/00README.txt | 10 + packaging/homebrew/recoll.rb | 35 + packaging/macports/README.txt | 24 + packaging/macports/textproc/recoll/Portfile | 45 + .../files/patch-sampleconf-mimeview.diff | 147 + packaging/rpm/kio_recoll.spec | 77 + packaging/rpm/recoll-mageia.spec | 75 + packaging/rpm/recoll.spec | 224 + packaging/rpm/recollCooker.spec | 88 + packaging/rpm/recollfedora.spec | 224 + packaging/rpm/recollmdk.spec | 130 + src/COPYING | 340 + src/ChangeLog | 10552 +++++ src/INSTALL | 1348 + src/Makefile.am | 638 + src/README | 4612 ++ src/VERSION | 1 + src/aspell/Makefile | 12 + src/aspell/aspell-local.h | 729 + src/aspell/rclaspell.cpp | 596 + src/aspell/rclaspell.h | 79 + src/autogen.sh | 4 + src/bincimapmime/00README.recoll | 3 + src/bincimapmime/AUTHORS | 45 + src/bincimapmime/COPYING | 356 + src/bincimapmime/Makefile | 11 + src/bincimapmime/config.h | 0 src/bincimapmime/convert.cc | 129 + src/bincimapmime/convert.h | 316 + src/bincimapmime/mime-inputsource.h | 222 + src/bincimapmime/mime-parsefull.cc | 625 + src/bincimapmime/mime-parseonlyheader.cc | 189 + src/bincimapmime/mime-printbody.cc | 52 + src/bincimapmime/mime-utils.h | 50 + src/bincimapmime/mime.cc | 164 + src/bincimapmime/mime.h | 187 + src/bincimapmime/trbinc.cc | 126 + src/common/Makefile | 33 + src/common/autoconfig-win.h | 186 + src/common/autoconfig.h.in | 181 + src/common/beaglequeuecache.cpp | 95 + src/common/beaglequeuecache.h | 50 + src/common/conf_post.h | 80 + src/common/cstr.cpp | 6 + src/common/cstr.h | 86 + src/common/rclconfig.cpp | 1684 + src/common/rclconfig.h | 409 + src/common/rclinit.cpp | 392 + src/common/rclinit.h | 66 + src/common/rclversion.h.in | 1 + src/common/syngroups.cpp | 254 + src/common/syngroups.h | 41 + src/common/textsplit.cpp | 1240 + src/common/textsplit.h | 225 + src/common/unacpp.cpp | 249 + src/common/unacpp.h | 40 + src/common/uproplist.h | 202 + src/configure.ac | 569 + src/desktop/hotrecoll.py | 66 + src/desktop/recoll-searchgui.desktop | 10 + src/desktop/recoll.appdata.xml | 24 + src/desktop/recoll.ico | Bin 0 -> 13094 bytes src/desktop/recoll.png | Bin 0 -> 457 bytes src/desktop/recoll.svg | 275 + src/desktop/recoll.xcf | Bin 0 -> 3825 bytes src/desktop/recoll_index_on_ac.sh | 69 + src/desktop/recollindex.desktop | 13 + src/desktop/xdg-utils-1.0.1/LICENSE | 18 + .../xdg-utils-1.0.1/scripts/xdg-desktop-menu | 1261 + .../xdg-utils-1.0.1/scripts/xdg-icon-resource | 837 + src/desktop/xdg-utils-1.0.1/scripts/xdg-open | 436 + src/doc/man/recoll.1 | 99 + src/doc/man/recoll.conf.5 | 369 + src/doc/man/recollindex.1 | 317 + src/doc/man/recollq.1 | 148 + src/doc/prog/Doxyfile | 1212 + src/doc/prog/Makefile | 5 + src/doc/prog/filters.txt | 47 + src/doc/prog/top.txt | 20 + src/doc/user/00README.txt | 30 + src/doc/user/Makefile | 40 + src/doc/user/docbook-xsl.css | 212 + src/doc/user/docbook.css | 208 + src/doc/user/usermanual-italian.html | 3849 ++ src/doc/user/usermanual.html | 9622 +++++ src/doc/user/usermanual.xml | 6686 +++ src/doc/user/webhelp/00README.txt | 13 + src/doc/user/webhelp/Makefile | 114 + .../webhelp/docs/RCL.INDEXING.CONFIG.GUI.html | 158 + .../docs/RCL.INDEXING.CONFIG.MULTIPLE.html | 172 + .../docs/RCL.INDEXING.CONFIG.SENS.html | 162 + .../webhelp/docs/RCL.INDEXING.CONFIG.html | 161 + .../webhelp/docs/RCL.INDEXING.EXTATTR.html | 147 + .../webhelp/docs/RCL.INDEXING.EXTTAGS.html | 138 + .../RCL.INDEXING.INTRODUCTION.CONFIG.html | 155 + .../docs/RCL.INDEXING.INTRODUCTION.MODES.html | 155 + .../docs/RCL.INDEXING.INTRODUCTION.html | 152 + .../docs/RCL.INDEXING.MONITOR.FASTFILES.html | 139 + .../webhelp/docs/RCL.INDEXING.MONITOR.html | 206 + .../docs/RCL.INDEXING.PERIODIC.AUTOMAT.html | 161 + .../docs/RCL.INDEXING.PERIODIC.EXEC.html | 190 + .../webhelp/docs/RCL.INDEXING.PERIODIC.html | 133 + .../docs/RCL.INDEXING.STORAGE.FORMAT.html | 144 + .../docs/RCL.INDEXING.STORAGE.SECURITY.html | 141 + .../webhelp/docs/RCL.INDEXING.STORAGE.html | 175 + .../webhelp/docs/RCL.INDEXING.WEBQUEUE.html | 151 + src/doc/user/webhelp/docs/RCL.INDEXING.html | 132 + .../user/webhelp/docs/RCL.INSTALL.BINARY.html | 156 + .../RCL.INSTALL.BUILDING.BUILD.SOLARIS.html | 137 + .../docs/RCL.INSTALL.BUILDING.BUILD.html | 207 + .../docs/RCL.INSTALL.BUILDING.INSTALL.html | 148 + .../docs/RCL.INSTALL.BUILDING.PREREQS.html | 169 + .../webhelp/docs/RCL.INSTALL.BUILDING.html | 132 + .../docs/RCL.INSTALL.CONFIG.ENVIR.html | 150 + .../RCL.INSTALL.CONFIG.EXAMPLES.ADDINDEX.html | 154 + .../RCL.INSTALL.CONFIG.EXAMPLES.ADDVIEW.html | 157 + .../docs/RCL.INSTALL.CONFIG.EXAMPLES.html | 132 + .../docs/RCL.INSTALL.CONFIG.FIELDS.XATTR.html | 139 + .../docs/RCL.INSTALL.CONFIG.FIELDS.html | 181 + .../docs/RCL.INSTALL.CONFIG.MIMECONF.html | 140 + .../docs/RCL.INSTALL.CONFIG.MIMEMAP.html | 149 + .../docs/RCL.INSTALL.CONFIG.MIMEVIEW.html | 182 + .../docs/RCL.INSTALL.CONFIG.PTRANS.html | 147 + .../RCL.INSTALL.CONFIG.RECOLLCONF.FILES.html | 247 + ....INSTALL.CONFIG.RECOLLCONF.IDXTHREADS.html | 189 + .../RCL.INSTALL.CONFIG.RECOLLCONF.MISC.html | 226 + ...RCL.INSTALL.CONFIG.RECOLLCONF.STORAGE.html | 164 + .../RCL.INSTALL.CONFIG.RECOLLCONF.TERMS.html | 271 + .../docs/RCL.INSTALL.CONFIG.RECOLLCONF.html | 144 + .../user/webhelp/docs/RCL.INSTALL.CONFIG.html | 231 + .../webhelp/docs/RCL.INSTALL.EXTERNAL.html | 212 + src/doc/user/webhelp/docs/RCL.INSTALL.html | 130 + .../webhelp/docs/RCL.INTRODUCTION.RECOLL.html | 226 + .../webhelp/docs/RCL.INTRODUCTION.SEARCH.html | 162 + .../webhelp/docs/RCL.INTRODUCTION.TRYIT.html | 146 + .../user/webhelp/docs/RCL.INTRODUCTION.html | 142 + .../user/webhelp/docs/RCL.KICKER-APPLET.html | 146 + .../docs/RCL.PROGRAM.API.ELEMENTS.html | 159 + .../webhelp/docs/RCL.PROGRAM.API.PYTHON.html | 132 + .../user/webhelp/docs/RCL.PROGRAM.API.html | 132 + .../user/webhelp/docs/RCL.PROGRAM.FIELDS.html | 176 + .../docs/RCL.PROGRAM.FILTERS.ASSOCIATION.html | 176 + .../docs/RCL.PROGRAM.FILTERS.HTML.html | 193 + .../docs/RCL.PROGRAM.FILTERS.MULTIPLE.html | 164 + .../docs/RCL.PROGRAM.FILTERS.PAGES.html | 136 + .../docs/RCL.PROGRAM.FILTERS.SIMPLE.html | 154 + .../webhelp/docs/RCL.PROGRAM.FILTERS.html | 202 + .../docs/RCL.PROGRAM.PYTHON.COMPAT.html | 154 + .../docs/RCL.PROGRAM.PYTHON.EXAMPLES.html | 160 + .../docs/RCL.PROGRAM.PYTHON.INTRO.html | 161 + .../docs/RCL.PROGRAM.PYTHON.PACKAGE.html | 139 + .../docs/RCL.PROGRAM.PYTHON.RCLEXTRACT.html | 159 + .../docs/RCL.PROGRAM.PYTHON.RECOLL.html | 242 + src/doc/user/webhelp/docs/RCL.PROGRAM.html | 134 + .../user/webhelp/docs/RCL.SEARCH.ANCHOR.html | 152 + .../webhelp/docs/RCL.SEARCH.ANCHORWILD.html | 136 + .../webhelp/docs/RCL.SEARCH.CASEDIAC.html | 167 + .../webhelp/docs/RCL.SEARCH.COMMANDLINE.html | 192 + .../user/webhelp/docs/RCL.SEARCH.DESKTOP.html | 142 + .../docs/RCL.SEARCH.GUI.COMPLEX.FILTER.html | 156 + .../docs/RCL.SEARCH.GUI.COMPLEX.HISTORY.html | 136 + .../docs/RCL.SEARCH.GUI.COMPLEX.TERMS.html | 157 + .../webhelp/docs/RCL.SEARCH.GUI.COMPLEX.html | 145 + .../docs/RCL.SEARCH.GUI.CUSTOM.RESLIST.html | 243 + .../webhelp/docs/RCL.SEARCH.GUI.CUSTOM.html | 274 + .../webhelp/docs/RCL.SEARCH.GUI.FRAGBUTS.html | 193 + .../webhelp/docs/RCL.SEARCH.GUI.HISTORY.html | 138 + .../webhelp/docs/RCL.SEARCH.GUI.MULTIDB.html | 172 + .../docs/RCL.SEARCH.GUI.PREVIEW.SEARCH.html | 162 + .../webhelp/docs/RCL.SEARCH.GUI.PREVIEW.html | 156 + .../docs/RCL.SEARCH.GUI.RESLIST.SUGGS.html | 139 + .../webhelp/docs/RCL.SEARCH.GUI.RESLIST.html | 187 + .../webhelp/docs/RCL.SEARCH.GUI.RESTABLE.html | 151 + .../docs/RCL.SEARCH.GUI.RESULTLIST.MENU.html | 174 + .../docs/RCL.SEARCH.GUI.RUNSCRIPT.html | 161 + .../webhelp/docs/RCL.SEARCH.GUI.SIMPLE.html | 191 + .../webhelp/docs/RCL.SEARCH.GUI.SORT.html | 155 + .../docs/RCL.SEARCH.GUI.TERMEXPLORER.html | 179 + .../docs/RCL.SEARCH.GUI.THUMBNAILS.html | 146 + .../docs/RCL.SEARCH.GUI.TIPS.MISC.html | 177 + .../docs/RCL.SEARCH.GUI.TIPS.PHRASES.html | 162 + .../docs/RCL.SEARCH.GUI.TIPS.TERMS.html | 163 + .../webhelp/docs/RCL.SEARCH.GUI.TIPS.html | 132 + src/doc/user/webhelp/docs/RCL.SEARCH.GUI.html | 153 + .../webhelp/docs/RCL.SEARCH.KIO.INTRO.html | 151 + .../docs/RCL.SEARCH.KIO.SEARCHABLEDOCS.html | 150 + src/doc/user/webhelp/docs/RCL.SEARCH.KIO.html | 132 + .../docs/RCL.SEARCH.LANG.MODIFIERS.html | 152 + .../user/webhelp/docs/RCL.SEARCH.LANG.html | 323 + .../user/webhelp/docs/RCL.SEARCH.PTRANS.html | 167 + .../user/webhelp/docs/RCL.SEARCH.SAVING.html | 145 + .../webhelp/docs/RCL.SEARCH.SHORTCUT.html | 137 + .../webhelp/docs/RCL.SEARCH.SYNONYMS.html | 164 + .../docs/RCL.SEARCH.WILDCARDS.PATH.html | 148 + .../webhelp/docs/RCL.SEARCH.WILDCARDS.html | 163 + src/doc/user/webhelp/docs/RCL.SEARCH.html | 130 + src/doc/user/webhelp/docs/ch02s01s03.html | 180 + src/doc/user/webhelp/docs/ch02s01s04.html | 150 + src/doc/user/webhelp/docs/ch02s01s05.html | 139 + .../user/webhelp/docs/common/browserDetect.js | 116 + src/doc/user/webhelp/docs/common/css/ie.css | 13 + .../webhelp/docs/common/css/positioning.css | 377 + .../docs/common/images/admon/caution.png | Bin 0 -> 1250 bytes .../docs/common/images/admon/important.png | Bin 0 -> 722 bytes .../webhelp/docs/common/images/admon/note.png | Bin 0 -> 490 bytes .../webhelp/docs/common/images/admon/tip.png | Bin 0 -> 449 bytes .../docs/common/images/admon/warning.png | Bin 0 -> 1241 bytes .../webhelp/docs/common/images/callouts/1.png | Bin 0 -> 396 bytes .../docs/common/images/callouts/10.png | Bin 0 -> 524 bytes .../docs/common/images/callouts/11.png | Bin 0 -> 397 bytes .../docs/common/images/callouts/12.png | Bin 0 -> 517 bytes .../docs/common/images/callouts/13.png | Bin 0 -> 520 bytes .../docs/common/images/callouts/14.png | Bin 0 -> 474 bytes .../docs/common/images/callouts/15.png | Bin 0 -> 522 bytes .../docs/common/images/callouts/16.png | Bin 0 -> 539 bytes .../docs/common/images/callouts/17.png | Bin 0 -> 475 bytes .../docs/common/images/callouts/18.png | Bin 0 -> 542 bytes .../docs/common/images/callouts/19.png | Bin 0 -> 539 bytes .../webhelp/docs/common/images/callouts/2.png | Bin 0 -> 475 bytes .../docs/common/images/callouts/20.png | Bin 0 -> 588 bytes .../docs/common/images/callouts/21.png | Bin 0 -> 517 bytes .../docs/common/images/callouts/22.png | Bin 0 -> 503 bytes .../docs/common/images/callouts/23.png | Bin 0 -> 589 bytes .../docs/common/images/callouts/24.png | Bin 0 -> 542 bytes .../docs/common/images/callouts/25.png | Bin 0 -> 564 bytes .../docs/common/images/callouts/26.png | Bin 0 -> 596 bytes .../docs/common/images/callouts/27.png | Bin 0 -> 547 bytes .../docs/common/images/callouts/28.png | Bin 0 -> 594 bytes .../docs/common/images/callouts/29.png | Bin 0 -> 594 bytes .../webhelp/docs/common/images/callouts/3.png | Bin 0 -> 506 bytes .../docs/common/images/callouts/30.png | Bin 0 -> 597 bytes .../webhelp/docs/common/images/callouts/4.png | Bin 0 -> 425 bytes .../webhelp/docs/common/images/callouts/5.png | Bin 0 -> 490 bytes .../webhelp/docs/common/images/callouts/6.png | Bin 0 -> 526 bytes .../webhelp/docs/common/images/callouts/7.png | Bin 0 -> 437 bytes .../webhelp/docs/common/images/callouts/8.png | Bin 0 -> 509 bytes .../webhelp/docs/common/images/callouts/9.png | Bin 0 -> 537 bytes .../webhelp/docs/common/images/header-bg.gif | Bin 0 -> 619 bytes .../webhelp/docs/common/images/header-bg.png | Bin 0 -> 201 bytes .../docs/common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../docs/common/images/highlight-yellow.gif | Bin 0 -> 331 bytes .../webhelp/docs/common/images/loading.gif | Bin 0 -> 1553 bytes .../user/webhelp/docs/common/images/logo.png | Bin 0 -> 457 bytes .../webhelp/docs/common/images/next-arrow.png | Bin 0 -> 199 bytes .../docs/common/images/previous-arrow.png | Bin 0 -> 198 bytes .../docs/common/images/search-icon.png | Bin 0 -> 340 bytes .../docs/common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes .../webhelp/docs/common/images/sidebar.png | Bin 0 -> 177 bytes .../webhelp/docs/common/images/starsSmall.png | Bin 0 -> 1032 bytes .../webhelp/docs/common/images/toc-icon.png | Bin 0 -> 3447 bytes .../docs/common/jquery/jquery-1.7.2.min.js | 4 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../docs/common/jquery/jquery.cookie.js | 93 + .../docs/common/jquery/jquery.ui.all.js | 418 + .../common/jquery/layout/jquery.layout.js | 5449 +++ .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 398 + .../theme-redmond/jquery-ui-1.8.21.custom.css | 304 + .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.css | 85 + .../jquery/treeview/jquery.treeview.min.js | 16 + src/doc/user/webhelp/docs/common/main.js | 276 + .../user/webhelp/docs/common/splitterInit.js | 40 + src/doc/user/webhelp/docs/favicon.ico | Bin 0 -> 318 bytes src/doc/user/webhelp/docs/index.html | 130 + src/doc/user/webhelp/docs/search/l10n.js | 5 + .../webhelp/template/common/browserDetect.js | 116 + .../user/webhelp/template/common/css/ie.css | 13 + .../template/common/css/positioning.css | 377 + .../template/common/images/admon/caution.png | Bin 0 -> 1250 bytes .../common/images/admon/important.png | Bin 0 -> 722 bytes .../template/common/images/admon/note.png | Bin 0 -> 490 bytes .../template/common/images/admon/tip.png | Bin 0 -> 449 bytes .../template/common/images/admon/warning.png | Bin 0 -> 1241 bytes .../template/common/images/callouts/1.png | Bin 0 -> 396 bytes .../template/common/images/callouts/10.png | Bin 0 -> 524 bytes .../template/common/images/callouts/11.png | Bin 0 -> 397 bytes .../template/common/images/callouts/12.png | Bin 0 -> 517 bytes .../template/common/images/callouts/13.png | Bin 0 -> 520 bytes .../template/common/images/callouts/14.png | Bin 0 -> 474 bytes .../template/common/images/callouts/15.png | Bin 0 -> 522 bytes .../template/common/images/callouts/16.png | Bin 0 -> 539 bytes .../template/common/images/callouts/17.png | Bin 0 -> 475 bytes .../template/common/images/callouts/18.png | Bin 0 -> 542 bytes .../template/common/images/callouts/19.png | Bin 0 -> 539 bytes .../template/common/images/callouts/2.png | Bin 0 -> 475 bytes .../template/common/images/callouts/20.png | Bin 0 -> 588 bytes .../template/common/images/callouts/21.png | Bin 0 -> 517 bytes .../template/common/images/callouts/22.png | Bin 0 -> 503 bytes .../template/common/images/callouts/23.png | Bin 0 -> 589 bytes .../template/common/images/callouts/24.png | Bin 0 -> 542 bytes .../template/common/images/callouts/25.png | Bin 0 -> 564 bytes .../template/common/images/callouts/26.png | Bin 0 -> 596 bytes .../template/common/images/callouts/27.png | Bin 0 -> 547 bytes .../template/common/images/callouts/28.png | Bin 0 -> 594 bytes .../template/common/images/callouts/29.png | Bin 0 -> 594 bytes .../template/common/images/callouts/3.png | Bin 0 -> 506 bytes .../template/common/images/callouts/30.png | Bin 0 -> 597 bytes .../template/common/images/callouts/4.png | Bin 0 -> 425 bytes .../template/common/images/callouts/5.png | Bin 0 -> 490 bytes .../template/common/images/callouts/6.png | Bin 0 -> 526 bytes .../template/common/images/callouts/7.png | Bin 0 -> 437 bytes .../template/common/images/callouts/8.png | Bin 0 -> 509 bytes .../template/common/images/callouts/9.png | Bin 0 -> 537 bytes .../template/common/images/header-bg.gif | Bin 0 -> 619 bytes .../template/common/images/header-bg.png | Bin 0 -> 201 bytes .../template/common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../common/images/highlight-yellow.gif | Bin 0 -> 331 bytes .../template/common/images/loading.gif | Bin 0 -> 1553 bytes .../webhelp/template/common/images/logo.png | Bin 0 -> 457 bytes .../template/common/images/next-arrow.png | Bin 0 -> 199 bytes .../template/common/images/previous-arrow.png | Bin 0 -> 198 bytes .../template/common/images/search-icon.png | Bin 0 -> 340 bytes .../common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes .../template/common/images/sidebar.png | Bin 0 -> 177 bytes .../template/common/images/starsSmall.png | Bin 0 -> 1032 bytes .../template/common/images/toc-icon.png | Bin 0 -> 3447 bytes .../common/jquery/jquery-1.7.2.min.js | 4 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../template/common/jquery/jquery.cookie.js | 93 + .../template/common/jquery/jquery.ui.all.js | 418 + .../common/jquery/layout/jquery.layout.js | 5449 +++ .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 398 + .../theme-redmond/jquery-ui-1.8.21.custom.css | 304 + .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.css | 85 + .../jquery/treeview/jquery.treeview.min.js | 16 + src/doc/user/webhelp/template/common/main.js | 276 + .../webhelp/template/common/splitterInit.js | 40 + src/doc/user/webhelp/template/favicon.ico | Bin 0 -> 318 bytes .../webhelp/template/search/default.props | 1 + .../user/webhelp/template/search/en-us.props | 45 + .../user/webhelp/template/search/es-es.props | 179 + .../user/webhelp/template/search/ja-jp.props | 1 + .../webhelp/template/search/nwSearchFnt.js | 886 + .../webhelp/template/search/punctuation.props | 31 + .../template/search/stemmers/de_stemmer.js | 247 + .../template/search/stemmers/en_stemmer.js | 234 + .../template/search/stemmers/fr_stemmer.js | 299 + src/filters/injectcommon.sh | 15 + src/filters/msodump.zip | Bin 0 -> 115355 bytes src/filters/ppt-dump.py | 143 + src/filters/rcl7z | 125 + src/filters/rclabw | 179 + src/filters/rclaptosidman | 93 + src/filters/rclaudio | 115 + src/filters/rclcheckneedretry.sh | 48 + src/filters/rclchm | 343 + src/filters/rcldia | 112 + src/filters/rcldjvu | 180 + src/filters/rcldoc.py | 166 + src/filters/rcldvi | 150 + src/filters/rclepub | 108 + src/filters/rclexec1.py | 114 + src/filters/rclexecm.py | 429 + src/filters/rclfb2 | 139 + src/filters/rclgaim | 144 + src/filters/rclgnm | 191 + src/filters/rclics | 172 + src/filters/rclimg | 187 + src/filters/rclimg.py | 127 + src/filters/rclinfo | 212 + src/filters/rclkar | 324 + src/filters/rclkwd | 217 + src/filters/rcllatinclass.py | 131 + src/filters/rcllatinstops.zip | Bin 0 -> 12689 bytes src/filters/rcllyx | 243 + src/filters/rclman | 127 + src/filters/rclmpdf.py | 256 + src/filters/rclokulnote | 130 + src/filters/rclopxml.py | 225 + src/filters/rclppt.py | 61 + src/filters/rclps | 135 + src/filters/rclpurple | 181 + src/filters/rclpython | 268 + src/filters/rclrar | 118 + src/filters/rclrtf.py | 61 + src/filters/rclscribus | 190 + src/filters/rclshowinfo | 32 + src/filters/rclsiduxman | 92 + src/filters/rclsoff.py | 191 + src/filters/rclsvg.py | 142 + src/filters/rcltar | 90 + src/filters/rcltex | 102 + src/filters/rcltext.py | 54 + src/filters/rcluncomp | 46 + src/filters/rcluncomp.py | 52 + src/filters/rclwar | 61 + src/filters/rclwpd | 87 + src/filters/rclxls.py | 66 + src/filters/rclxml.py | 98 + src/filters/rclxslt.py | 70 + src/filters/rclzip | 177 + src/filters/recfiltcommon | 66 + src/filters/xls-dump.py | 252 + src/filters/xlsxmltocsv.py | 87 + src/index/Makefile | 18 + src/index/beaglequeue.cpp | 480 + src/index/beaglequeue.h | 81 + src/index/bglfetcher.cpp | 64 + src/index/bglfetcher.h | 30 + src/index/checkretryfailed.cpp | 58 + src/index/checkretryfailed.h | 33 + src/index/fetcher.cpp | 44 + src/index/fetcher.h | 76 + src/index/fsfetcher.cpp | 73 + src/index/fsfetcher.h | 34 + src/index/fsindexer.cpp | 885 + src/index/fsindexer.h | 162 + src/index/indexer.cpp | 363 + src/index/indexer.h | 156 + src/index/mimetype.cpp | 227 + src/index/mimetype.h | 39 + src/index/rclmon.h | 115 + src/index/rclmon.sh | 80 + src/index/rclmonprc.cpp | 629 + src/index/rclmonrcv.cpp | 755 + src/index/recollindex.cpp | 744 + src/index/recollindex.h | 31 + src/index/subtreelist.cpp | 131 + src/index/subtreelist.h | 33 + src/internfile/Filter.h | 206 + src/internfile/Makefile | 20 + src/internfile/extrameta.cpp | 146 + src/internfile/extrameta.h | 49 + src/internfile/htmlparse.cpp | 396 + src/internfile/htmlparse.h | 52 + src/internfile/indextext.h | 38 + src/internfile/internfile.cpp | 1229 + src/internfile/internfile.h | 300 + src/internfile/mh_exec.cpp | 201 + src/internfile/mh_exec.h | 113 + src/internfile/mh_execm.cpp | 332 + src/internfile/mh_execm.h | 126 + src/internfile/mh_html.cpp | 183 + src/internfile/mh_html.h | 58 + src/internfile/mh_mail.cpp | 658 + src/internfile/mh_mail.h | 84 + src/internfile/mh_mbox.cpp | 687 + src/internfile/mh_mbox.h | 59 + src/internfile/mh_null.h | 59 + src/internfile/mh_symlink.h | 74 + src/internfile/mh_text.cpp | 199 + src/internfile/mh_text.h | 67 + src/internfile/mh_unknown.h | 58 + src/internfile/mimehandler.cpp | 382 + src/internfile/mimehandler.h | 173 + src/internfile/myhtmlparse.cpp | 594 + src/internfile/myhtmlparse.h | 72 + src/internfile/txtdcode.cpp | 79 + src/internfile/uncomp.cpp | 141 + src/internfile/uncomp.h | 68 + src/kde/kioslave/kio_recoll/00README.txt | 94 + src/kde/kioslave/kio_recoll/CMakeLists.txt | 75 + src/kde/kioslave/kio_recoll/Makefile.kde3 | 59 + .../kioslave/kio_recoll/cleancmakestuff.sh | 6 + src/kde/kioslave/kio_recoll/data/help.html | 100 + .../kioslave/kio_recoll/data/searchable.html | 28 + src/kde/kioslave/kio_recoll/data/welcome.html | 29 + src/kde/kioslave/kio_recoll/dirif.cpp | 318 + src/kde/kioslave/kio_recoll/htmlif.cpp | 301 + src/kde/kioslave/kio_recoll/kio_recoll.cpp | 381 + src/kde/kioslave/kio_recoll/kio_recoll.h | 191 + src/kde/kioslave/kio_recoll/kio_recoll.la | 35 + src/kde/kioslave/kio_recoll/notes.txt | 188 + src/kde/kioslave/kio_recoll/recoll.protocol | 11 + src/kde/kioslave/kio_recoll/recollf.protocol | 11 + .../kioslave/kio_recoll/recollnolist.protocol | 11 + src/kde/recoll_applet/0README.Recoll | 19 + src/kde/recoll_applet/AUTHORS | 2 + src/kde/recoll_applet/COPYING | 340 + src/kde/recoll_applet/ChangeLog | 0 src/kde/recoll_applet/Doxyfile | 283 + src/kde/recoll_applet/INSTALL | 167 + src/kde/recoll_applet/Makefile.am | 22 + src/kde/recoll_applet/Makefile.cvs | 10 + src/kde/recoll_applet/Makefile.in | 877 + src/kde/recoll_applet/NEWS | 0 src/kde/recoll_applet/README | 0 src/kde/recoll_applet/TODO | 0 src/kde/recoll_applet/acinclude.m4 | 11862 ++++++ src/kde/recoll_applet/aclocal.m4 | 863 + src/kde/recoll_applet/admin/Doxyfile.am | 102 + src/kde/recoll_applet/admin/Doxyfile.global | 192 + src/kde/recoll_applet/admin/Makefile.common | 37 + src/kde/recoll_applet/admin/acinclude.m4.in | 5971 +++ src/kde/recoll_applet/admin/am_edit | 2445 ++ src/kde/recoll_applet/admin/bcheck.pl | 157 + src/kde/recoll_applet/admin/compile | 142 + src/kde/recoll_applet/admin/conf.change.pl | 191 + src/kde/recoll_applet/admin/config.guess | 1519 + src/kde/recoll_applet/admin/config.pl | 238 + src/kde/recoll_applet/admin/config.sub | 1626 + .../recoll_applet/admin/configure.in.bot.end | 45 + src/kde/recoll_applet/admin/configure.in.min | 57 + src/kde/recoll_applet/admin/cvs.sh | 661 + src/kde/recoll_applet/admin/debianrules | 43 + src/kde/recoll_applet/admin/depcomp | 530 + src/kde/recoll_applet/admin/deps.am | 19 + .../recoll_applet/admin/detect-autoconf.pl | 173 + src/kde/recoll_applet/admin/doxygen.sh | 883 + src/kde/recoll_applet/admin/install-sh | 401 + src/kde/recoll_applet/admin/libtool.m4.in | 5891 +++ src/kde/recoll_applet/admin/ltmain.sh | 6468 +++ src/kde/recoll_applet/admin/missing | 353 + src/kde/recoll_applet/admin/mkinstalldirs | 158 + src/kde/recoll_applet/admin/nmcheck | 371 + src/kde/recoll_applet/admin/oldinclude.m4.in | 192 + src/kde/recoll_applet/admin/pkg.m4.in | 57 + src/kde/recoll_applet/admin/ylwrap | 223 + src/kde/recoll_applet/config.h.in | 244 + src/kde/recoll_applet/configure | 34897 ++++++++++++++++ src/kde/recoll_applet/configure.files | 2 + src/kde/recoll_applet/configure.in | 123 + src/kde/recoll_applet/configure.in.in | 6 + src/kde/recoll_applet/doc/Makefile.am | 6 + src/kde/recoll_applet/doc/Makefile.in | 720 + src/kde/recoll_applet/doc/en/Makefile.am | 2 + src/kde/recoll_applet/doc/en/Makefile.in | 598 + src/kde/recoll_applet/doc/en/index.docbook | 555 + src/kde/recoll_applet/po/Makefile.am | 1 + src/kde/recoll_applet/po/Makefile.in | 549 + src/kde/recoll_applet/src/Makefile.am | 16 + src/kde/recoll_applet/src/Makefile.in | 780 + src/kde/recoll_applet/src/kpixmapcombo.cpp | 60 + src/kde/recoll_applet/src/kpixmapcombo.h | 52 + src/kde/recoll_applet/src/recoll_applet.cpp | 190 + .../recoll_applet/src/recoll_applet.desktop | 7 + src/kde/recoll_applet/src/recoll_applet.h | 108 + src/kde/recoll_applet/src/recoll_applet.lsm | 16 + src/kde/recoll_applet/stamp-h.in | 0 src/kde/recoll_applet/subdirs | 3 + src/php/00README.txt | 22 + src/php/recoll/config.m4 | 18 + src/php/recoll/make.sh | 14 + src/php/recoll/php_recoll.h | 18 + src/php/recoll/recoll.cpp | 240 + src/php/sample/shell.php | 31 + src/python/README.txt | 2 + src/python/recoll/Makefile.in | 12 + src/python/recoll/pyrclextract.cpp | 361 + src/python/recoll/pyrecoll.cpp | 2094 + src/python/recoll/pyrecoll.h | 33 + src/python/recoll/recoll/__init__.py | 0 src/python/recoll/recoll/rclconfig.py | 219 + src/python/recoll/setup.py.in | 76 + src/python/samples/docdups.py | 116 + src/python/samples/mutt-recoll.py | 112 + src/python/samples/rcldlkp.py | 117 + src/python/samples/rclmbox.py | 118 + src/python/samples/recollgui/Makefile | 7 + src/python/samples/recollgui/qrecoll.py | 278 + src/python/samples/recollgui/rclmain.ui | 127 + src/python/samples/recollq.py | 137 + src/python/samples/recollqsd.py | 43 + src/python/samples/trconfig.py | 47 + src/qtgui/advsearch.ui | 578 + src/qtgui/advsearch_w.cpp | 584 + src/qtgui/advsearch_w.h | 84 + src/qtgui/advshist.cpp | 96 + src/qtgui/advshist.h | 65 + src/qtgui/confgui/confgui.cpp | 478 + src/qtgui/confgui/confgui.h | 255 + src/qtgui/confgui/confguiindex.cpp | 613 + src/qtgui/confgui/confguiindex.h | 107 + src/qtgui/confgui/conflinkrcl.h | 69 + src/qtgui/confgui/main.cpp | 132 + src/qtgui/confgui/trconf.pro | 32 + src/qtgui/crontool.cpp | 102 + src/qtgui/crontool.h | 48 + src/qtgui/crontool.ui | 156 + src/qtgui/firstidx.h | 32 + src/qtgui/firstidx.ui | 147 + src/qtgui/fragbuts.cpp | 215 + src/qtgui/fragbuts.h | 68 + src/qtgui/guiutils.cpp | 449 + src/qtgui/guiutils.h | 176 + src/qtgui/i18n/recoll_cs.qm | Bin 0 -> 91421 bytes src/qtgui/i18n/recoll_cs.ts | 3298 ++ src/qtgui/i18n/recoll_da.qm | Bin 0 -> 99916 bytes src/qtgui/i18n/recoll_da.ts | 2700 ++ src/qtgui/i18n/recoll_de.qm | Bin 0 -> 94163 bytes src/qtgui/i18n/recoll_de.ts | 3279 ++ src/qtgui/i18n/recoll_el.qm | Bin 0 -> 97432 bytes src/qtgui/i18n/recoll_el.ts | 2961 ++ src/qtgui/i18n/recoll_es.qm | Bin 0 -> 94621 bytes src/qtgui/i18n/recoll_es.ts | 3053 ++ src/qtgui/i18n/recoll_fr.qm | Bin 0 -> 114775 bytes src/qtgui/i18n/recoll_fr.ts | 3411 ++ src/qtgui/i18n/recoll_it.qm | Bin 0 -> 28123 bytes src/qtgui/i18n/recoll_it.ts | 3011 ++ src/qtgui/i18n/recoll_lt.qm | Bin 0 -> 34662 bytes src/qtgui/i18n/recoll_lt.ts | 3149 ++ src/qtgui/i18n/recoll_pl.qm | Bin 0 -> 92943 bytes src/qtgui/i18n/recoll_pl.ts | 2266 + src/qtgui/i18n/recoll_ru.qm | Bin 0 -> 88674 bytes src/qtgui/i18n/recoll_ru.ts | 3333 ++ src/qtgui/i18n/recoll_tr.qm | Bin 0 -> 26405 bytes src/qtgui/i18n/recoll_tr.ts | 3011 ++ src/qtgui/i18n/recoll_uk.qm | Bin 0 -> 29926 bytes src/qtgui/i18n/recoll_uk.ts | 3056 ++ src/qtgui/i18n/recoll_xx.qm | 1 + src/qtgui/i18n/recoll_xx.ts | 2542 ++ src/qtgui/i18n/recoll_zh.qm | Bin 0 -> 69777 bytes src/qtgui/i18n/recoll_zh.ts | 3003 ++ src/qtgui/i18n/recoll_zh_CN.qm | Bin 0 -> 82697 bytes src/qtgui/i18n/recoll_zh_CN.ts | 3037 ++ src/qtgui/idxsched.h | 37 + src/qtgui/idxsched.ui | 120 + src/qtgui/images/asearch.png | Bin 0 -> 1007 bytes src/qtgui/images/cancel.png | Bin 0 -> 883 bytes src/qtgui/images/close.png | Bin 0 -> 1119 bytes src/qtgui/images/code-block.png | Bin 0 -> 512 bytes src/qtgui/images/down.png | Bin 0 -> 3568 bytes src/qtgui/images/firstpage.png | Bin 0 -> 1324 bytes src/qtgui/images/history.png | Bin 0 -> 1515 bytes src/qtgui/images/nextpage.png | Bin 0 -> 1281 bytes src/qtgui/images/prevpage.png | Bin 0 -> 1282 bytes src/qtgui/images/recoll.icns | Bin 0 -> 9078 bytes src/qtgui/images/recoll.png | Bin 0 -> 457 bytes src/qtgui/images/sortparms.png | Bin 0 -> 768 bytes src/qtgui/images/spell.png | Bin 0 -> 339 bytes src/qtgui/images/table.png | Bin 0 -> 3351 bytes src/qtgui/images/up.png | Bin 0 -> 3510 bytes src/qtgui/main.cpp | 398 + src/qtgui/mtpics/License_sidux.txt | 22 + src/qtgui/mtpics/README | 8 + src/qtgui/mtpics/aptosid-book.png | Bin 0 -> 4488 bytes src/qtgui/mtpics/aptosid-manual-copyright.txt | 306 + src/qtgui/mtpics/aptosid-manual.png | Bin 0 -> 4488 bytes src/qtgui/mtpics/archive.png | Bin 0 -> 3868 bytes src/qtgui/mtpics/book.png | Bin 0 -> 4784 bytes src/qtgui/mtpics/bookchap.png | Bin 0 -> 2943 bytes src/qtgui/mtpics/document.png | Bin 0 -> 5394 bytes src/qtgui/mtpics/drawing.png | Bin 0 -> 5195 bytes src/qtgui/mtpics/emblem-symbolic-link.png | Bin 0 -> 1891 bytes src/qtgui/mtpics/folder.png | Bin 0 -> 6043 bytes src/qtgui/mtpics/html.png | Bin 0 -> 4848 bytes src/qtgui/mtpics/image.png | Bin 0 -> 4345 bytes src/qtgui/mtpics/message.png | Bin 0 -> 4362 bytes src/qtgui/mtpics/mozilla_doc.png | Bin 0 -> 4442 bytes src/qtgui/mtpics/pdf.png | Bin 0 -> 3753 bytes src/qtgui/mtpics/pidgin.png | Bin 0 -> 3564 bytes src/qtgui/mtpics/postscript.png | Bin 0 -> 3235 bytes src/qtgui/mtpics/presentation.png | Bin 0 -> 3639 bytes src/qtgui/mtpics/sidux-book.png | Bin 0 -> 1835 bytes src/qtgui/mtpics/soffice.png | Bin 0 -> 5376 bytes src/qtgui/mtpics/source.png | Bin 0 -> 4126 bytes src/qtgui/mtpics/sownd.png | Bin 0 -> 4756 bytes src/qtgui/mtpics/spreadsheet.png | Bin 0 -> 3382 bytes src/qtgui/mtpics/text-x-python.png | Bin 0 -> 3788 bytes src/qtgui/mtpics/txt.png | Bin 0 -> 2912 bytes src/qtgui/mtpics/video.png | Bin 0 -> 4892 bytes src/qtgui/mtpics/wordprocessing.png | Bin 0 -> 5664 bytes src/qtgui/multisave.cpp | 143 + src/qtgui/multisave.h | 24 + src/qtgui/preview_load.cpp | 75 + src/qtgui/preview_load.h | 59 + src/qtgui/preview_plaintorich.cpp | 187 + src/qtgui/preview_plaintorich.h | 74 + src/qtgui/preview_w.cpp | 1018 + src/qtgui/preview_w.h | 190 + src/qtgui/ptrans.ui | 142 + src/qtgui/ptrans_w.cpp | 135 + src/qtgui/ptrans_w.h | 52 + src/qtgui/rclhelp.cpp | 73 + src/qtgui/rclhelp.h | 40 + src/qtgui/rclm_idx.cpp | 439 + src/qtgui/rclm_preview.cpp | 265 + src/qtgui/rclm_saveload.cpp | 134 + src/qtgui/rclm_view.cpp | 484 + src/qtgui/rclm_wins.cpp | 402 + src/qtgui/rclmain.ui | 546 + src/qtgui/rclmain_w.cpp | 1164 + src/qtgui/rclmain_w.h | 253 + src/qtgui/rclzg.cpp | 86 + src/qtgui/rclzg.h | 30 + src/qtgui/recoll-win.pro | 134 + src/qtgui/recoll.h | 57 + src/qtgui/recoll.pro.in | 185 + src/qtgui/recoll.qrc | 18 + src/qtgui/recoll.rc | 1 + src/qtgui/reslist.cpp | 1124 + src/qtgui/reslist.h | 150 + src/qtgui/respopup.cpp | 177 + src/qtgui/respopup.h | 33 + src/qtgui/restable.cpp | 1027 + src/qtgui/restable.h | 185 + src/qtgui/restable.ui | 71 + src/qtgui/rtitool.cpp | 178 + src/qtgui/rtitool.h | 48 + src/qtgui/rtitool.ui | 123 + src/qtgui/searchclause_w.cpp | 222 + src/qtgui/searchclause_w.h | 54 + src/qtgui/snippets.ui | 143 + src/qtgui/snippets_w.cpp | 264 + src/qtgui/snippets_w.h | 58 + src/qtgui/specialindex.h | 53 + src/qtgui/specialindex.ui | 148 + src/qtgui/spell.ui | 149 + src/qtgui/spell_w.cpp | 470 + src/qtgui/spell_w.h | 58 + src/qtgui/ssearch_w.cpp | 760 + src/qtgui/ssearch_w.h | 99 + src/qtgui/ssearchb.ui | 105 + src/qtgui/systray.cpp | 42 + src/qtgui/systray.h | 42 + src/qtgui/ui_rclmain.h-4.5 | 302 + src/qtgui/uiprefs.ui | 1032 + src/qtgui/uiprefs_w.cpp | 644 + src/qtgui/uiprefs_w.h | 87 + src/qtgui/viewaction.ui | 208 + src/qtgui/viewaction_w.cpp | 236 + src/qtgui/viewaction_w.h | 57 + src/qtgui/widgets/editdialog.h | 35 + src/qtgui/widgets/editdialog.ui | 67 + src/qtgui/widgets/listdialog.h | 32 + src/qtgui/widgets/listdialog.ui | 79 + src/qtgui/widgets/qxtconfirmationmessage.cpp | 438 + src/qtgui/widgets/qxtconfirmationmessage.h | 94 + src/qtgui/widgets/qxtglobal.h | 235 + src/qtgui/xmltosd.cpp | 345 + src/qtgui/xmltosd.h | 81 + src/query/docseq.cpp | 130 + src/query/docseq.h | 294 + src/query/docseqdb.cpp | 250 + src/query/docseqdb.h | 76 + src/query/docseqdocs.h | 70 + src/query/docseqhist.cpp | 163 + src/query/docseqhist.h | 69 + src/query/dynconf.cpp | 213 + src/query/dynconf.h | 157 + src/query/filtseq.cpp | 124 + src/query/filtseq.h | 48 + src/query/location.hh | 187 + src/query/plaintorich.cpp | 537 + src/query/plaintorich.h | 106 + src/query/position.hh | 180 + src/query/recollq.cpp | 429 + src/query/recollq.h | 26 + src/query/recollqmain.cpp | 30 + src/query/reslistpager.cpp | 523 + src/query/reslistpager.h | 136 + src/query/sortseq.cpp | 76 + src/query/sortseq.h | 49 + src/query/stack.hh | 158 + src/query/wasaparse.cpp | 1536 + src/query/wasaparse.hpp | 476 + src/query/wasaparse.ypp | 452 + src/query/wasaparseaux.cpp | 270 + src/query/wasaparserdriver.h | 95 + src/query/wasatorcl.h | 34 + src/query/xadump.cpp | 342 + src/rcldb/Makefile | 21 + src/rcldb/daterange.cpp | 126 + src/rcldb/daterange.h | 10 + src/rcldb/expansiondbs.cpp | 156 + src/rcldb/expansiondbs.h | 70 + src/rcldb/rclabstract.cpp | 619 + src/rcldb/rcldb.cpp | 2233 + src/rcldb/rcldb.h | 558 + src/rcldb/rcldb_p.h | 183 + src/rcldb/rcldoc.cpp | 74 + src/rcldb/rcldoc.h | 302 + src/rcldb/rcldups.cpp | 115 + src/rcldb/rclquery.cpp | 506 + src/rcldb/rclquery.h | 159 + src/rcldb/rclquery_p.h | 72 + src/rcldb/rclterms.cpp | 525 + src/rcldb/searchdata.cpp | 375 + src/rcldb/searchdata.h | 523 + src/rcldb/searchdatatox.cpp | 1039 + src/rcldb/searchdataxml.cpp | 161 + src/rcldb/stemdb.cpp | 94 + src/rcldb/stemdb.h | 104 + src/rcldb/stoplist.cpp | 118 + src/rcldb/stoplist.h | 55 + src/rcldb/synfamily.cpp | 403 + src/rcldb/synfamily.h | 226 + src/rcldb/termproc.h | 299 + src/rcldb/xmacros.h | 51 + src/sampleconf/fields | 156 + src/sampleconf/fragbuts.xml | 57 + src/sampleconf/mimeconf | 404 + src/sampleconf/mimemap | 230 + src/sampleconf/mimeview | 186 + src/sampleconf/mimeview.mac | 163 + src/sampleconf/recoll.conf | 414 + src/sampleconf/recoll.qss | 55 + src/unac/AUTHORS | 1 + src/unac/COPYING | 340 + src/unac/README | 93 + src/unac/README.recoll | 10 + src/unac/unac.c | 14618 +++++++ src/unac/unac.cpp | 1 + src/unac/unac.h | 902 + src/unac/unac_version.h | 1 + src/utils/Makefile | 177 + src/utils/appformime.cpp | 235 + src/utils/appformime.h | 91 + src/utils/base64.cpp | 363 + src/utils/base64.h | 37 + src/utils/cancelcheck.cpp | 24 + src/utils/cancelcheck.h | 61 + src/utils/chrono.cpp | 289 + src/utils/chrono.h | 62 + src/utils/circache.cpp | 1683 + src/utils/circache.h | 107 + src/utils/closefrom.cpp | 270 + src/utils/closefrom.h | 27 + src/utils/conftree.cpp | 1043 + src/utils/conftree.h | 574 + src/utils/copyfile.cpp | 264 + src/utils/copyfile.h | 44 + src/utils/cpuconf.cpp | 85 + src/utils/cpuconf.h | 34 + src/utils/debuglog.cpp | 484 + src/utils/debuglog.h | 112 + src/utils/ecrontab.cpp | 272 + src/utils/ecrontab.h | 71 + src/utils/execmd.cpp | 1436 + src/utils/execmd.h | 267 + src/utils/fileudi.cpp | 131 + src/utils/fileudi.h | 31 + src/utils/fstreewalk.cpp | 636 + src/utils/fstreewalk.h | 128 + src/utils/hldata.h | 65 + src/utils/idfile.cpp | 205 + src/utils/idfile.h | 30 + src/utils/md5.cpp | 252 + src/utils/md5.h | 34 + src/utils/md5ut.cpp | 153 + src/utils/md5ut.h | 33 + src/utils/mimeparse.cpp | 976 + src/utils/mimeparse.h | 103 + src/utils/netcon.cpp | 1358 + src/utils/netcon.h | 368 + src/utils/pathut.cpp | 1340 + src/utils/pathut.h | 222 + src/utils/ptmutex.cpp | 105 + src/utils/ptmutex.h | 64 + src/utils/pxattr.cpp | 1075 + src/utils/pxattr.h | 136 + src/utils/rclionice.cpp | 58 + src/utils/rclionice.h | 25 + src/utils/readfile.cpp | 278 + src/utils/readfile.h | 50 + src/utils/refcntr.h | 70 + src/utils/smallut.cpp | 1417 + src/utils/smallut.h | 252 + src/utils/strmatcher.cpp | 132 + src/utils/strmatcher.h | 95 + src/utils/transcode.cpp | 232 + src/utils/transcode.h | 39 + src/utils/trexecmd.cpp | 383 + src/utils/utf8iter.cpp | 184 + src/utils/utf8iter.h | 283 + src/utils/utf8testin.txt | 212 + src/utils/utmkdefs.mk | 13 + src/utils/wipedir.cpp | 169 + src/utils/wipedir.h | 29 + src/utils/workqueue.cpp | 121 + src/utils/workqueue.h | 341 + src/utils/x11mon.cpp | 88 + src/utils/x11mon.h | 23 + .../SolutionSettings/SolutionSettings.props | 30 + .../SolutionSettings/SolutionSettings.vcxproj | 129 + .../SolutionSettings.vcxproj.filters | 17 + src/windows/Win32ProjectRecoll.sln | 69 + src/windows/Win32ProjectRecoll.vcxproj | 257 + .../Win32ProjectRecoll.vcxproj.filters | 327 + src/windows/Win32ProjectRecoll.vcxproj.user | 4 + src/windows/dirent.c | 154 + src/windows/dirent.h | 57 + src/windows/execmd_w.cpp | 1133 + src/windows/fnmatch.c | 186 + src/windows/fnmatch.h | 44 + src/windows/mimeconf | 394 + src/windows/mimeview | 192 + src/windows/mkinstdir.sh | 243 + src/windows/qmkrecoll/librecoll.pro | 131 + src/windows/qmkrecoll/rclstartw.pro | 33 + src/windows/qmkrecoll/recollindex.pro | 38 + src/windows/qmkrecoll/recollq.pro | 36 + src/windows/rclstartw.cpp | 58 + src/windows/recoll-setup.iss | 49 + src/windows/recollindex/recollindex.vcxproj | 163 + .../recollindex/recollindex.vcxproj.filters | 22 + .../recollindex/recollindex.vcxproj.user | 4 + src/windows/recollq/recollq.vcxproj | 190 + src/windows/recollq/recollq.vcxproj.filters | 96 + src/windows/strptime.cpp | 253 + src/windows/strptime.h | 3 + src/windows/targetver.h | 8 + src/windows/trexe/trexecmd/trexecmd.sln | 28 + src/windows/trexe/trexecmd/trexecmd.vcxproj | 168 + .../trexe/trexecmd/trexecmd.vcxproj.filters | 22 + src/xaposix/safe.cc | 31 + src/xaposix/safefcntl.h | 71 + src/xaposix/safesysstat.h | 91 + src/xaposix/safesyswait.h | 39 + src/xaposix/safeunistd.h | 79 + src/xaposix/safewindows.h | 45 + src/ylwrap | 57 + tests/7zip/7zip.sh | 16 + tests/7zip/7zip.txt | 2 + tests/Maildir/Maildir.sh | 19 + tests/Maildir/Maildir.txt | 1 + tests/Maildir1/Maildir1.sh | 14 + tests/Maildir1/Maildir1.txt | 2 + tests/abiword/abiword.sh | 15 + tests/abiword/abiword.txt | 4 + tests/anchor/anchor.sh | 31 + tests/anchor/anchor.txt | 34 + tests/andor/andor.sh | 19 + tests/andor/andor.txt | 3 + tests/badsuffs/badsuffs.sh | 14 + tests/badsuffs/badsuffs.txt | 1 + tests/badsuffs1/badsuffs1.sh | 15 + tests/badsuffs1/badsuffs1.txt | 7 + tests/boolean/boolean.sh | 15 + tests/boolean/boolean.txt | 4 + tests/casediac/casediac.sh | 62 + tests/casediac/casediac.txt | 33 + tests/chm/chm.sh | 19 + tests/chm/chm.txt | 11 + tests/cjk/cjk.sh | 24 + tests/cjk/cjk.txt | 9 + tests/compressed/compressed.sh | 16 + tests/compressed/compressed.txt | 6 + tests/config/fields | 4 + tests/config/mimeconf | 11 + tests/config/mimemap | 44 + tests/config/mimeview | 3 + tests/config/recoll.conf | 48 + tests/dates/dates.sh | 24 + tests/dates/dates.txt | 9 + tests/delete/delete.sh | 24 + tests/delete/delete.txt | 3 + tests/dia/dia.sh | 14 + tests/dia/dia.txt | 4 + tests/dir/dir.sh | 17 + tests/dir/dir.txt | 2 + tests/dirwithblanks/dirwithblanks.sh | 14 + tests/dirwithblanks/dirwithblanks.txt | 4 + tests/djvu/djvu.sh | 13 + tests/djvu/djvu.txt | 2 + tests/dvi/dvi.sh | 13 + tests/dvi/dvi.txt | 2 + tests/embed/embed.sh | 14 + tests/embed/embed.txt | 2 + tests/empty/empty.sh | 14 + tests/empty/empty.txt | 2 + tests/epub/epub.sh | 16 + tests/epub/epub.txt | 6 + tests/gnumeric/gnumeric.sh | 16 + tests/gnumeric/gnumeric.txt | 6 + tests/html/html.sh | 36 + tests/html/html.txt | 30 + tests/ics/ics.sh | 13 + tests/ics/ics.txt | 2 + tests/images/images.sh | 14 + tests/images/images.txt | 2 + tests/incexcl/incexcl.sh | 22 + tests/incexcl/incexcl.txt | 7 + tests/indexedmimetypes/indexedmimetypes.sh | 57 + tests/indexedmimetypes/indexedmimetypes.txt | 8 + tests/info/info.sh | 13 + tests/info/info.txt | 2 + tests/kar/kar.sh | 16 + tests/kar/kar.txt | 6 + tests/koi8r/koi8r.sh | 23 + tests/koi8r/koi8r.txt | 2 + tests/langparser/langparser.sh | 78 + tests/langparser/langparser.txt | 83 + tests/langparser1/langparser1.sh | 53 + tests/langparser1/langparser1.txt | 27 + tests/lyx/lyx.sh | 16 + tests/lyx/lyx.txt | 8 + tests/mail/mail.sh | 21 + tests/mail/mail.txt | 15 + tests/man/man.sh | 16 + tests/man/man.txt | 2 + tests/media/media.sh | 17 + tests/media/media.txt | 6 + tests/msword/msword.sh | 15 + tests/msword/msword.txt | 5 + tests/non-auto/testmbox.sh | 42 + tests/notypes/notypes.sh | 17 + tests/notypes/notypes.txt | 4 + tests/okular-notes/okular-notes.sh | 14 + tests/okular-notes/okular-notes.txt | 2 + tests/ooff/ooff.sh | 17 + tests/ooff/ooff.txt | 4 + tests/partialpurge/partialpurge.sh | 41 + tests/partialpurge/partialpurge.txt | 18 + tests/pdf/pdf.sh | 13 + tests/pdf/pdf.txt | 3 + tests/postscript/postscript.sh | 13 + tests/postscript/postscript.txt | 3 + tests/ppt/ppt.sh | 13 + tests/ppt/ppt.txt | 2 + tests/program/program.sh | 16 + tests/program/program.txt | 6 + tests/purple/purple.sh | 15 + tests/purple/purple.txt | 4 + tests/pythonapi/doc.py | 53 + tests/pythonapi/extract.py | 45 + tests/pythonapi/pythonapi.sh | 30 + tests/pythonapi/pythonapi.txt | 79 + tests/pythonapi/simple.py | 40 + tests/pythonapi/url.py | 47 + tests/rar/rar.sh | 16 + tests/rar/rar.txt | 2 + tests/rfc2231/rfc2231.sh | 22 + tests/rfc2231/rfc2231.txt | 6 + tests/rtf/rtf.sh | 13 + tests/rtf/rtf.txt | 2 + tests/runtests.sh | 76 + tests/scribus/scribus.sh | 13 + tests/scribus/scribus.txt | 3 + tests/shared.sh | 68 + tests/skipped/skipped.sh | 13 + tests/skipped/skipped.txt | 2 + tests/special/special.sh | 27 + tests/special/special.txt | 10 + tests/stemming/stemming.sh | 15 + tests/stemming/stemming.txt | 5 + tests/tar/tar.sh | 16 + tests/tar/tar.txt | 6 + tests/txt/txt.sh | 18 + tests/txt/txt.txt | 6 + tests/unacex/unacex.sh | 20 + tests/unacex/unacex.txt | 3 + tests/utf8/utf8.sh | 13 + tests/utf8/utf8.txt | 2 + tests/utfInPath/utfInPath.sh | 17 + tests/utfInPath/utfInPath.txt | 6 + tests/xattr/fields | 4 + tests/xattr/xattr.sh | 85 + tests/xattr/xattr.txt | 57 + tests/xls/xls.sh | 13 + tests/xls/xls.txt | 2 + tests/xml/xml.sh | 16 + tests/xml/xml.txt | 7 + tests/zip/zip.sh | 17 + tests/zip/zip.txt | 6 + unac/.version | 1 + unac/AUTHORS | 1 + unac/COPYING | 340 + unac/CaseFolding-5.1.0.txt | 1196 + unac/CaseFolding-6.3.0.txt | 1226 + unac/ChangeLog | 160 + unac/INSTALL | 182 + unac/Makefile.am | 101 + unac/Makefile.in | 1522 + unac/NEWS | 58 + unac/README | 93 + unac/THANKS | 9 + unac/UnicodeData-5.1.0.txt | 19336 +++++++++ unac/UnicodeData-6.3.0.txt | 24434 +++++++++++ unac/acinclude.m4 | 156 + unac/aclocal.m4 | 11194 +++++ unac/builder.in | 527 + unac/compile | 1 + unac/config.guess | 1325 + unac/config.h.in | 71 + unac/config.rpath | 0 unac/config.sub | 1460 + unac/configure | 15098 +++++++ unac/configure.ac | 62 + unac/depcomp | 411 + unac/getopt.c | 1279 + unac/getopt.h | 181 + unac/install-sh | 251 + unac/ltconfig | 3114 ++ unac/ltmain.sh | 5055 +++ unac/missing | 283 + unac/mkinstalldirs | 40 + unac/stamp-h | 1 + unac/stamp-h.in | 1 + unac/t_unac.in | 35 + unac/test-driver | 0 unac/unac.3 | 390 + unac/unac.c | 14618 +++++++ unac/unac.h | 902 + unac/unac.pc.in | 13 + unac/unac.spec.in | 50 + unac/unac_version.h | 1 + unac/unaccent.1 | 115 + unac/unaccent.c | 137 + unac/unactest.c | 53 + unac/unactest1.c | 497 + website/BUGS.html | 1010 + website/CHANGES.html | 945 + website/copydocs | 17 + website/credits.html | 80 + website/custom.html | 630 + website/devel.html | 101 + website/doc.html | 77 + website/download.html | 421 + website/favicon.ico | Bin 0 -> 318 bytes website/features.html | 476 + website/filters/filters.html | 242 + website/fr/features.html | 210 + website/helpernotes.html | 74 + website/id3lib.html | 57 + website/idxthreads/Makefile | 7 + website/idxthreads/assembly.dia | Bin 0 -> 2236 bytes website/idxthreads/assembly.png | Bin 0 -> 30918 bytes website/idxthreads/forkingRecoll.txt | 224 + website/idxthreads/multipara.dia | Bin 0 -> 2612 bytes website/idxthreads/multipara.png | Bin 0 -> 36051 bytes website/idxthreads/nothreads.dia | Bin 0 -> 1740 bytes website/idxthreads/nothreads.png | Bin 0 -> 19492 bytes website/idxthreads/threadingRecoll.html | 1296 + website/idxthreads/threadingRecoll.txt | 409 + website/idxthreads/xapDocCopyCrash.txt | 138 + website/index.html.en | 338 + website/index.html.fr | 261 + website/pages/Makefile | 9 + website/pages/recoll-mingw.txt | 274 + website/pages/recoll-windows.txt | 107 + website/perfs.html | 114 + website/pics/00REMAKEALB.sh | 2 + website/pics/index.html | 44 + website/pics/index.html.head | 27 + website/pics/mario.png | Bin 0 -> 1792 bytes website/pics/piclist.txt | 9 + .../pics/recoll-HTML_search_results-thumb.png | Bin 0 -> 182129 bytes website/pics/recoll-HTML_search_results.html | 40 + website/pics/recoll-HTML_search_results.png | Bin 0 -> 64035 bytes website/pics/recoll-HTML_search_results.txt | 28 + website/pics/recoll0-thumb.png | Bin 0 -> 126689 bytes website/pics/recoll0.html | 13 + website/pics/recoll0.png | Bin 0 -> 130557 bytes website/pics/recoll0.txt | 2 + website/pics/recoll1-thumb.png | Bin 0 -> 157729 bytes website/pics/recoll1.html | 13 + website/pics/recoll1.png | Bin 0 -> 185674 bytes website/pics/recoll1.txt | 4 + website/pics/recoll2-thumb.png | Bin 0 -> 25877 bytes website/pics/recoll2.html | 13 + website/pics/recoll2.png | Bin 0 -> 46698 bytes website/pics/recoll2.txt | 1 + website/pics/recoll3-thumb.png | Bin 0 -> 56412 bytes website/pics/recoll3.html | 14 + website/pics/recoll3.png | Bin 0 -> 169706 bytes website/pics/recoll3.txt | 2 + website/pics/recoll4-thumb.png | Bin 0 -> 66895 bytes website/pics/recoll4.html | 14 + website/pics/recoll4.png | Bin 0 -> 55374 bytes website/pics/recoll4.txt | 2 + website/pics/recoll5-thumb.png | Bin 0 -> 53001 bytes website/pics/recoll5.html | 13 + website/pics/recoll5.png | Bin 0 -> 237133 bytes website/pics/recoll5.txt | 1 + website/pics/recoll64.png | Bin 0 -> 1420 bytes website/pics/recoll_chinese-thumb.png | Bin 0 -> 194549 bytes website/pics/recoll_chinese.html | 14 + website/pics/recoll_chinese.png | Bin 0 -> 738329 bytes website/pics/recoll_chinese.txt | 2 + website/pics/result-table-thumb.png | Bin 0 -> 50314 bytes website/pics/result-table.html | 13 + website/pics/result-table.png | Bin 0 -> 111110 bytes website/pics/smile.png | Bin 0 -> 1394 bytes website/rclidxfmt.html | 196 + website/recoll_XMP/index.html | 125 + website/recoll_XMP/jabref_metadata.png | Bin 0 -> 95017 bytes website/recoll_XMP/recoll_query.png | Bin 0 -> 291458 bytes website/release-1.14.4.html | 53 + website/release-1.15.html | 194 + website/release-1.16.html | 206 + website/release-1.17.html | 255 + website/release-1.18.html | 203 + website/release-1.19.html | 261 + website/release-1.20.html | 255 + website/release-1.21.html | 135 + website/release-1.22.html | 74 + website/release-history.html | 146 + website/resparpics/christopher.png | Bin 0 -> 54014 bytes website/resparpics/clean.png | Bin 0 -> 38831 bytes website/resparpics/default.png | Bin 0 -> 40542 bytes website/resparpics/detailSmallGreyTable.png | Bin 0 -> 31701 bytes website/resparpics/issue73+table.png | Bin 0 -> 37617 bytes website/resparpics/issue73.png | Bin 0 -> 37751 bytes website/resparpics/pip.png | Bin 0 -> 189818 bytes website/resparpics/pz3.png | Bin 0 -> 59963 bytes website/resparpics/structuredTable.png | Bin 0 -> 32595 bytes website/resparpics/weblike.png | Bin 0 -> 25158 bytes website/styles/style.css | 122 + website/support.html.en | 65 + website/usermanual/README-dir.txt | 1 + website/xapUpg100.html | 69 + 1294 files changed, 445671 insertions(+) create mode 100644 .hgignore create mode 100644 packaging/FreeBSD/recoll/Makefile create mode 100644 packaging/FreeBSD/recoll/distinfo create mode 100644 packaging/FreeBSD/recoll/pkg-descr create mode 100644 packaging/FreeBSD/recoll/pkg-plist create mode 100644 packaging/debian/buildppa.sh create mode 100644 packaging/debian/debian/README.Debian create mode 100644 packaging/debian/debian/changelog create mode 100644 packaging/debian/debian/compat create mode 100644 packaging/debian/debian/control create mode 100644 packaging/debian/debian/copyright create mode 100644 packaging/debian/debian/patches/series create mode 100644 packaging/debian/debian/python-recoll.install create mode 100644 packaging/debian/debian/python3-recoll.install create mode 100644 packaging/debian/debian/recoll.install create mode 100644 packaging/debian/debian/recoll.menu create mode 100755 packaging/debian/debian/rules create mode 100644 packaging/debian/debian/source/format create mode 100644 packaging/debian/debian/watch create mode 100644 packaging/debian/debiankio/changelog create mode 100644 packaging/debian/debiankio/compat create mode 100644 packaging/debian/debiankio/control create mode 100644 packaging/debian/debiankio/copyright create mode 100644 packaging/debian/debiankio/dirs create mode 100644 packaging/debian/debiankio/docs create mode 100644 packaging/debian/debiankio/patches/fix-cmake-build-parser.patch create mode 100644 packaging/debian/debiankio/patches/series create mode 100755 packaging/debian/debiankio/rules create mode 100644 packaging/debian/debiankio/source/format create mode 100644 packaging/debian/debiankio/watch create mode 100644 packaging/debian/debianunitylens/changelog create mode 100644 packaging/debian/debianunitylens/compat create mode 100644 packaging/debian/debianunitylens/control create mode 100644 packaging/debian/debianunitylens/copyright create mode 100644 packaging/debian/debianunitylens/docs create mode 100755 packaging/debian/debianunitylens/rules create mode 100644 packaging/debian/debianunitylens/watch create mode 100644 packaging/homebrew/00README.txt create mode 100644 packaging/homebrew/recoll.rb create mode 100644 packaging/macports/README.txt create mode 100644 packaging/macports/textproc/recoll/Portfile create mode 100644 packaging/macports/textproc/recoll/files/patch-sampleconf-mimeview.diff create mode 100644 packaging/rpm/kio_recoll.spec create mode 100644 packaging/rpm/recoll-mageia.spec create mode 100644 packaging/rpm/recoll.spec create mode 100644 packaging/rpm/recollCooker.spec create mode 100644 packaging/rpm/recollfedora.spec create mode 100644 packaging/rpm/recollmdk.spec create mode 100644 src/COPYING create mode 100644 src/ChangeLog create mode 100644 src/INSTALL create mode 100644 src/Makefile.am create mode 100644 src/README create mode 100644 src/VERSION create mode 100644 src/aspell/Makefile create mode 100644 src/aspell/aspell-local.h create mode 100644 src/aspell/rclaspell.cpp create mode 100644 src/aspell/rclaspell.h create mode 100755 src/autogen.sh create mode 100644 src/bincimapmime/00README.recoll create mode 100644 src/bincimapmime/AUTHORS create mode 100644 src/bincimapmime/COPYING create mode 100644 src/bincimapmime/Makefile create mode 100644 src/bincimapmime/config.h create mode 100644 src/bincimapmime/convert.cc create mode 100644 src/bincimapmime/convert.h create mode 100644 src/bincimapmime/mime-inputsource.h create mode 100644 src/bincimapmime/mime-parsefull.cc create mode 100644 src/bincimapmime/mime-parseonlyheader.cc create mode 100644 src/bincimapmime/mime-printbody.cc create mode 100644 src/bincimapmime/mime-utils.h create mode 100644 src/bincimapmime/mime.cc create mode 100644 src/bincimapmime/mime.h create mode 100644 src/bincimapmime/trbinc.cc create mode 100644 src/common/Makefile create mode 100644 src/common/autoconfig-win.h create mode 100644 src/common/autoconfig.h.in create mode 100644 src/common/beaglequeuecache.cpp create mode 100644 src/common/beaglequeuecache.h create mode 100644 src/common/conf_post.h create mode 100644 src/common/cstr.cpp create mode 100644 src/common/cstr.h create mode 100644 src/common/rclconfig.cpp create mode 100644 src/common/rclconfig.h create mode 100644 src/common/rclinit.cpp create mode 100644 src/common/rclinit.h create mode 100644 src/common/rclversion.h.in create mode 100644 src/common/syngroups.cpp create mode 100644 src/common/syngroups.h create mode 100644 src/common/textsplit.cpp create mode 100644 src/common/textsplit.h create mode 100644 src/common/unacpp.cpp create mode 100644 src/common/unacpp.h create mode 100644 src/common/uproplist.h create mode 100644 src/configure.ac create mode 100755 src/desktop/hotrecoll.py create mode 100644 src/desktop/recoll-searchgui.desktop create mode 100644 src/desktop/recoll.appdata.xml create mode 100644 src/desktop/recoll.ico create mode 100644 src/desktop/recoll.png create mode 100644 src/desktop/recoll.svg create mode 100644 src/desktop/recoll.xcf create mode 100755 src/desktop/recoll_index_on_ac.sh create mode 100644 src/desktop/recollindex.desktop create mode 100644 src/desktop/xdg-utils-1.0.1/LICENSE create mode 100755 src/desktop/xdg-utils-1.0.1/scripts/xdg-desktop-menu create mode 100755 src/desktop/xdg-utils-1.0.1/scripts/xdg-icon-resource create mode 100755 src/desktop/xdg-utils-1.0.1/scripts/xdg-open create mode 100644 src/doc/man/recoll.1 create mode 100644 src/doc/man/recoll.conf.5 create mode 100644 src/doc/man/recollindex.1 create mode 100644 src/doc/man/recollq.1 create mode 100644 src/doc/prog/Doxyfile create mode 100644 src/doc/prog/Makefile create mode 100644 src/doc/prog/filters.txt create mode 100644 src/doc/prog/top.txt create mode 100644 src/doc/user/00README.txt create mode 100644 src/doc/user/Makefile create mode 100644 src/doc/user/docbook-xsl.css create mode 100644 src/doc/user/docbook.css create mode 100644 src/doc/user/usermanual-italian.html create mode 100644 src/doc/user/usermanual.html create mode 100644 src/doc/user/usermanual.xml create mode 100644 src/doc/user/webhelp/00README.txt create mode 100644 src/doc/user/webhelp/Makefile create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.GUI.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.MULTIPLE.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.SENS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.EXTATTR.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.EXTTAGS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.CONFIG.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.MODES.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.FASTFILES.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.AUTOMAT.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.EXEC.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.FORMAT.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.SECURITY.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.WEBQUEUE.html create mode 100644 src/doc/user/webhelp/docs/RCL.INDEXING.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.BINARY.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.SOLARIS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.INSTALL.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.PREREQS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.ENVIR.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDINDEX.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDVIEW.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.XATTR.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMECONF.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEMAP.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEVIEW.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.PTRANS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.FILES.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.IDXTHREADS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.MISC.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.STORAGE.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.TERMS.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.EXTERNAL.html create mode 100644 src/doc/user/webhelp/docs/RCL.INSTALL.html create mode 100644 src/doc/user/webhelp/docs/RCL.INTRODUCTION.RECOLL.html create mode 100644 src/doc/user/webhelp/docs/RCL.INTRODUCTION.SEARCH.html create mode 100644 src/doc/user/webhelp/docs/RCL.INTRODUCTION.TRYIT.html create mode 100644 src/doc/user/webhelp/docs/RCL.INTRODUCTION.html create mode 100644 src/doc/user/webhelp/docs/RCL.KICKER-APPLET.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.API.ELEMENTS.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.API.PYTHON.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.API.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FIELDS.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.ASSOCIATION.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.HTML.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.MULTIPLE.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.PAGES.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.SIMPLE.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.COMPAT.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.EXAMPLES.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.INTRO.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.PACKAGE.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RCLEXTRACT.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RECOLL.html create mode 100644 src/doc/user/webhelp/docs/RCL.PROGRAM.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.ANCHOR.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.ANCHORWILD.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.CASEDIAC.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.COMMANDLINE.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.DESKTOP.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.FILTER.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.HISTORY.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.TERMS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.RESLIST.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.FRAGBUTS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.HISTORY.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.MULTIDB.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.SEARCH.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.SUGGS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESTABLE.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESULTLIST.MENU.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RUNSCRIPT.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SIMPLE.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SORT.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TERMEXPLORER.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.THUMBNAILS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.MISC.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.PHRASES.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.TERMS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.GUI.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.KIO.INTRO.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.KIO.SEARCHABLEDOCS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.KIO.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.LANG.MODIFIERS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.LANG.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.PTRANS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.SAVING.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.SHORTCUT.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.SYNONYMS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.PATH.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.html create mode 100644 src/doc/user/webhelp/docs/RCL.SEARCH.html create mode 100644 src/doc/user/webhelp/docs/ch02s01s03.html create mode 100644 src/doc/user/webhelp/docs/ch02s01s04.html create mode 100644 src/doc/user/webhelp/docs/ch02s01s05.html create mode 100644 src/doc/user/webhelp/docs/common/browserDetect.js create mode 100644 src/doc/user/webhelp/docs/common/css/ie.css create mode 100644 src/doc/user/webhelp/docs/common/css/positioning.css create mode 100644 src/doc/user/webhelp/docs/common/images/admon/caution.png create mode 100644 src/doc/user/webhelp/docs/common/images/admon/important.png create mode 100644 src/doc/user/webhelp/docs/common/images/admon/note.png create mode 100644 src/doc/user/webhelp/docs/common/images/admon/tip.png create mode 100644 src/doc/user/webhelp/docs/common/images/admon/warning.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/1.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/10.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/11.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/12.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/13.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/14.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/15.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/16.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/17.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/18.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/19.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/2.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/20.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/21.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/22.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/23.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/24.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/25.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/26.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/27.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/28.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/29.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/3.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/30.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/4.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/5.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/6.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/7.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/8.png create mode 100755 src/doc/user/webhelp/docs/common/images/callouts/9.png create mode 100644 src/doc/user/webhelp/docs/common/images/header-bg.gif create mode 100755 src/doc/user/webhelp/docs/common/images/header-bg.png create mode 100644 src/doc/user/webhelp/docs/common/images/highlight-blue.gif create mode 100644 src/doc/user/webhelp/docs/common/images/highlight-yellow.gif create mode 100644 src/doc/user/webhelp/docs/common/images/loading.gif create mode 100644 src/doc/user/webhelp/docs/common/images/logo.png create mode 100644 src/doc/user/webhelp/docs/common/images/next-arrow.png create mode 100644 src/doc/user/webhelp/docs/common/images/previous-arrow.png create mode 100644 src/doc/user/webhelp/docs/common/images/search-icon.png create mode 100644 src/doc/user/webhelp/docs/common/images/showHideTreeIcons.png create mode 100644 src/doc/user/webhelp/docs/common/images/sidebar.png create mode 100644 src/doc/user/webhelp/docs/common/images/starsSmall.png create mode 100644 src/doc/user/webhelp/docs/common/images/toc-icon.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/jquery-1.7.2.min.js create mode 100644 src/doc/user/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100644 src/doc/user/webhelp/docs/common/jquery/jquery.cookie.js create mode 100644 src/doc/user/webhelp/docs/common/jquery/jquery.ui.all.js create mode 100644 src/doc/user/webhelp/docs/common/jquery/layout/jquery.layout.js create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100644 src/doc/user/webhelp/docs/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/file.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/folder-closed.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/folder-closed2.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/folder.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/folder2.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/minus.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/plus.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-black-line.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-black.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-default-line.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-default.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-gray-line.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-gray.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-red-line.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-red.gif create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/jquery.treeview.css create mode 100644 src/doc/user/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js create mode 100644 src/doc/user/webhelp/docs/common/main.js create mode 100644 src/doc/user/webhelp/docs/common/splitterInit.js create mode 100755 src/doc/user/webhelp/docs/favicon.ico create mode 100644 src/doc/user/webhelp/docs/index.html create mode 100644 src/doc/user/webhelp/docs/search/l10n.js create mode 100644 src/doc/user/webhelp/template/common/browserDetect.js create mode 100644 src/doc/user/webhelp/template/common/css/ie.css create mode 100644 src/doc/user/webhelp/template/common/css/positioning.css create mode 100644 src/doc/user/webhelp/template/common/images/admon/caution.png create mode 100644 src/doc/user/webhelp/template/common/images/admon/important.png create mode 100644 src/doc/user/webhelp/template/common/images/admon/note.png create mode 100644 src/doc/user/webhelp/template/common/images/admon/tip.png create mode 100644 src/doc/user/webhelp/template/common/images/admon/warning.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/1.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/10.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/11.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/12.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/13.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/14.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/15.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/16.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/17.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/18.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/19.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/2.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/20.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/21.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/22.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/23.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/24.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/25.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/26.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/27.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/28.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/29.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/3.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/30.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/4.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/5.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/6.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/7.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/8.png create mode 100755 src/doc/user/webhelp/template/common/images/callouts/9.png create mode 100644 src/doc/user/webhelp/template/common/images/header-bg.gif create mode 100755 src/doc/user/webhelp/template/common/images/header-bg.png create mode 100644 src/doc/user/webhelp/template/common/images/highlight-blue.gif create mode 100644 src/doc/user/webhelp/template/common/images/highlight-yellow.gif create mode 100644 src/doc/user/webhelp/template/common/images/loading.gif create mode 100644 src/doc/user/webhelp/template/common/images/logo.png create mode 100644 src/doc/user/webhelp/template/common/images/next-arrow.png create mode 100644 src/doc/user/webhelp/template/common/images/previous-arrow.png create mode 100644 src/doc/user/webhelp/template/common/images/search-icon.png create mode 100644 src/doc/user/webhelp/template/common/images/showHideTreeIcons.png create mode 100644 src/doc/user/webhelp/template/common/images/sidebar.png create mode 100644 src/doc/user/webhelp/template/common/images/starsSmall.png create mode 100644 src/doc/user/webhelp/template/common/images/toc-icon.png create mode 100644 src/doc/user/webhelp/template/common/jquery/jquery-1.7.2.min.js create mode 100644 src/doc/user/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100644 src/doc/user/webhelp/template/common/jquery/jquery.cookie.js create mode 100644 src/doc/user/webhelp/template/common/jquery/jquery.ui.all.js create mode 100644 src/doc/user/webhelp/template/common/jquery/layout/jquery.layout.js create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100644 src/doc/user/webhelp/template/common/jquery/theme-redmond/jquery-ui-1.8.21.custom.css create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/file.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/folder-closed.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/folder-closed2.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/folder.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/folder2.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/minus.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/plus.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-black-line.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-black.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-default-line.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-default.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-gray.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-red-line.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-red.gif create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/jquery.treeview.css create mode 100644 src/doc/user/webhelp/template/common/jquery/treeview/jquery.treeview.min.js create mode 100644 src/doc/user/webhelp/template/common/main.js create mode 100644 src/doc/user/webhelp/template/common/splitterInit.js create mode 100755 src/doc/user/webhelp/template/favicon.ico create mode 100644 src/doc/user/webhelp/template/search/default.props create mode 100644 src/doc/user/webhelp/template/search/en-us.props create mode 100644 src/doc/user/webhelp/template/search/es-es.props create mode 100644 src/doc/user/webhelp/template/search/ja-jp.props create mode 100644 src/doc/user/webhelp/template/search/nwSearchFnt.js create mode 100644 src/doc/user/webhelp/template/search/punctuation.props create mode 100644 src/doc/user/webhelp/template/search/stemmers/de_stemmer.js create mode 100644 src/doc/user/webhelp/template/search/stemmers/en_stemmer.js create mode 100644 src/doc/user/webhelp/template/search/stemmers/fr_stemmer.js create mode 100755 src/filters/injectcommon.sh create mode 100644 src/filters/msodump.zip create mode 100755 src/filters/ppt-dump.py create mode 100755 src/filters/rcl7z create mode 100755 src/filters/rclabw create mode 100755 src/filters/rclaptosidman create mode 100755 src/filters/rclaudio create mode 100755 src/filters/rclcheckneedretry.sh create mode 100755 src/filters/rclchm create mode 100755 src/filters/rcldia create mode 100755 src/filters/rcldjvu create mode 100755 src/filters/rcldoc.py create mode 100755 src/filters/rcldvi create mode 100755 src/filters/rclepub create mode 100644 src/filters/rclexec1.py create mode 100644 src/filters/rclexecm.py create mode 100755 src/filters/rclfb2 create mode 100755 src/filters/rclgaim create mode 100755 src/filters/rclgnm create mode 100755 src/filters/rclics create mode 100755 src/filters/rclimg create mode 100755 src/filters/rclimg.py create mode 100755 src/filters/rclinfo create mode 100755 src/filters/rclkar create mode 100755 src/filters/rclkwd create mode 100755 src/filters/rcllatinclass.py create mode 100644 src/filters/rcllatinstops.zip create mode 100755 src/filters/rcllyx create mode 100755 src/filters/rclman create mode 100755 src/filters/rclmpdf.py create mode 100755 src/filters/rclokulnote create mode 100755 src/filters/rclopxml.py create mode 100755 src/filters/rclppt.py create mode 100755 src/filters/rclps create mode 100755 src/filters/rclpurple create mode 100755 src/filters/rclpython create mode 100755 src/filters/rclrar create mode 100755 src/filters/rclrtf.py create mode 100755 src/filters/rclscribus create mode 100755 src/filters/rclshowinfo create mode 100755 src/filters/rclsiduxman create mode 100755 src/filters/rclsoff.py create mode 100755 src/filters/rclsvg.py create mode 100755 src/filters/rcltar create mode 100755 src/filters/rcltex create mode 100755 src/filters/rcltext.py create mode 100755 src/filters/rcluncomp create mode 100644 src/filters/rcluncomp.py create mode 100755 src/filters/rclwar create mode 100755 src/filters/rclwpd create mode 100755 src/filters/rclxls.py create mode 100755 src/filters/rclxml.py create mode 100644 src/filters/rclxslt.py create mode 100755 src/filters/rclzip create mode 100755 src/filters/recfiltcommon create mode 100755 src/filters/xls-dump.py create mode 100755 src/filters/xlsxmltocsv.py create mode 100644 src/index/Makefile create mode 100644 src/index/beaglequeue.cpp create mode 100644 src/index/beaglequeue.h create mode 100644 src/index/bglfetcher.cpp create mode 100644 src/index/bglfetcher.h create mode 100644 src/index/checkretryfailed.cpp create mode 100644 src/index/checkretryfailed.h create mode 100644 src/index/fetcher.cpp create mode 100644 src/index/fetcher.h create mode 100644 src/index/fsfetcher.cpp create mode 100644 src/index/fsfetcher.h create mode 100644 src/index/fsindexer.cpp create mode 100644 src/index/fsindexer.h create mode 100644 src/index/indexer.cpp create mode 100644 src/index/indexer.h create mode 100644 src/index/mimetype.cpp create mode 100644 src/index/mimetype.h create mode 100644 src/index/rclmon.h create mode 100755 src/index/rclmon.sh create mode 100644 src/index/rclmonprc.cpp create mode 100644 src/index/rclmonrcv.cpp create mode 100644 src/index/recollindex.cpp create mode 100644 src/index/recollindex.h create mode 100644 src/index/subtreelist.cpp create mode 100644 src/index/subtreelist.h create mode 100644 src/internfile/Filter.h create mode 100644 src/internfile/Makefile create mode 100644 src/internfile/extrameta.cpp create mode 100644 src/internfile/extrameta.h create mode 100644 src/internfile/htmlparse.cpp create mode 100644 src/internfile/htmlparse.h create mode 100644 src/internfile/indextext.h create mode 100644 src/internfile/internfile.cpp create mode 100644 src/internfile/internfile.h create mode 100644 src/internfile/mh_exec.cpp create mode 100644 src/internfile/mh_exec.h create mode 100644 src/internfile/mh_execm.cpp create mode 100644 src/internfile/mh_execm.h create mode 100644 src/internfile/mh_html.cpp create mode 100644 src/internfile/mh_html.h create mode 100644 src/internfile/mh_mail.cpp create mode 100644 src/internfile/mh_mail.h create mode 100644 src/internfile/mh_mbox.cpp create mode 100644 src/internfile/mh_mbox.h create mode 100644 src/internfile/mh_null.h create mode 100644 src/internfile/mh_symlink.h create mode 100644 src/internfile/mh_text.cpp create mode 100644 src/internfile/mh_text.h create mode 100644 src/internfile/mh_unknown.h create mode 100644 src/internfile/mimehandler.cpp create mode 100644 src/internfile/mimehandler.h create mode 100644 src/internfile/myhtmlparse.cpp create mode 100644 src/internfile/myhtmlparse.h create mode 100644 src/internfile/txtdcode.cpp create mode 100644 src/internfile/uncomp.cpp create mode 100644 src/internfile/uncomp.h create mode 100644 src/kde/kioslave/kio_recoll/00README.txt create mode 100644 src/kde/kioslave/kio_recoll/CMakeLists.txt create mode 100644 src/kde/kioslave/kio_recoll/Makefile.kde3 create mode 100644 src/kde/kioslave/kio_recoll/cleancmakestuff.sh create mode 100644 src/kde/kioslave/kio_recoll/data/help.html create mode 100644 src/kde/kioslave/kio_recoll/data/searchable.html create mode 100644 src/kde/kioslave/kio_recoll/data/welcome.html create mode 100644 src/kde/kioslave/kio_recoll/dirif.cpp create mode 100644 src/kde/kioslave/kio_recoll/htmlif.cpp create mode 100644 src/kde/kioslave/kio_recoll/kio_recoll.cpp create mode 100644 src/kde/kioslave/kio_recoll/kio_recoll.h create mode 100755 src/kde/kioslave/kio_recoll/kio_recoll.la create mode 100644 src/kde/kioslave/kio_recoll/notes.txt create mode 100644 src/kde/kioslave/kio_recoll/recoll.protocol create mode 100644 src/kde/kioslave/kio_recoll/recollf.protocol create mode 100644 src/kde/kioslave/kio_recoll/recollnolist.protocol create mode 100644 src/kde/recoll_applet/0README.Recoll create mode 100644 src/kde/recoll_applet/AUTHORS create mode 100644 src/kde/recoll_applet/COPYING create mode 100644 src/kde/recoll_applet/ChangeLog create mode 100644 src/kde/recoll_applet/Doxyfile create mode 100644 src/kde/recoll_applet/INSTALL create mode 100644 src/kde/recoll_applet/Makefile.am create mode 100644 src/kde/recoll_applet/Makefile.cvs create mode 100644 src/kde/recoll_applet/Makefile.in create mode 100644 src/kde/recoll_applet/NEWS create mode 100644 src/kde/recoll_applet/README create mode 100644 src/kde/recoll_applet/TODO create mode 100644 src/kde/recoll_applet/acinclude.m4 create mode 100644 src/kde/recoll_applet/aclocal.m4 create mode 100644 src/kde/recoll_applet/admin/Doxyfile.am create mode 100755 src/kde/recoll_applet/admin/Doxyfile.global create mode 100644 src/kde/recoll_applet/admin/Makefile.common create mode 100644 src/kde/recoll_applet/admin/acinclude.m4.in create mode 100644 src/kde/recoll_applet/admin/am_edit create mode 100644 src/kde/recoll_applet/admin/bcheck.pl create mode 100755 src/kde/recoll_applet/admin/compile create mode 100644 src/kde/recoll_applet/admin/conf.change.pl create mode 100755 src/kde/recoll_applet/admin/config.guess create mode 100644 src/kde/recoll_applet/admin/config.pl create mode 100755 src/kde/recoll_applet/admin/config.sub create mode 100644 src/kde/recoll_applet/admin/configure.in.bot.end create mode 100644 src/kde/recoll_applet/admin/configure.in.min create mode 100644 src/kde/recoll_applet/admin/cvs.sh create mode 100755 src/kde/recoll_applet/admin/debianrules create mode 100755 src/kde/recoll_applet/admin/depcomp create mode 100644 src/kde/recoll_applet/admin/deps.am create mode 100755 src/kde/recoll_applet/admin/detect-autoconf.pl create mode 100644 src/kde/recoll_applet/admin/doxygen.sh create mode 100755 src/kde/recoll_applet/admin/install-sh create mode 100644 src/kde/recoll_applet/admin/libtool.m4.in create mode 100644 src/kde/recoll_applet/admin/ltmain.sh create mode 100755 src/kde/recoll_applet/admin/missing create mode 100755 src/kde/recoll_applet/admin/mkinstalldirs create mode 100755 src/kde/recoll_applet/admin/nmcheck create mode 100644 src/kde/recoll_applet/admin/oldinclude.m4.in create mode 100644 src/kde/recoll_applet/admin/pkg.m4.in create mode 100755 src/kde/recoll_applet/admin/ylwrap create mode 100644 src/kde/recoll_applet/config.h.in create mode 100755 src/kde/recoll_applet/configure create mode 100644 src/kde/recoll_applet/configure.files create mode 100644 src/kde/recoll_applet/configure.in create mode 100644 src/kde/recoll_applet/configure.in.in create mode 100644 src/kde/recoll_applet/doc/Makefile.am create mode 100644 src/kde/recoll_applet/doc/Makefile.in create mode 100644 src/kde/recoll_applet/doc/en/Makefile.am create mode 100644 src/kde/recoll_applet/doc/en/Makefile.in create mode 100644 src/kde/recoll_applet/doc/en/index.docbook create mode 100644 src/kde/recoll_applet/po/Makefile.am create mode 100644 src/kde/recoll_applet/po/Makefile.in create mode 100644 src/kde/recoll_applet/src/Makefile.am create mode 100644 src/kde/recoll_applet/src/Makefile.in create mode 100644 src/kde/recoll_applet/src/kpixmapcombo.cpp create mode 100644 src/kde/recoll_applet/src/kpixmapcombo.h create mode 100644 src/kde/recoll_applet/src/recoll_applet.cpp create mode 100644 src/kde/recoll_applet/src/recoll_applet.desktop create mode 100644 src/kde/recoll_applet/src/recoll_applet.h create mode 100644 src/kde/recoll_applet/src/recoll_applet.lsm create mode 100644 src/kde/recoll_applet/stamp-h.in create mode 100644 src/kde/recoll_applet/subdirs create mode 100644 src/php/00README.txt create mode 100644 src/php/recoll/config.m4 create mode 100755 src/php/recoll/make.sh create mode 100644 src/php/recoll/php_recoll.h create mode 100644 src/php/recoll/recoll.cpp create mode 100644 src/php/sample/shell.php create mode 100644 src/python/README.txt create mode 100644 src/python/recoll/Makefile.in create mode 100644 src/python/recoll/pyrclextract.cpp create mode 100644 src/python/recoll/pyrecoll.cpp create mode 100644 src/python/recoll/pyrecoll.h create mode 100644 src/python/recoll/recoll/__init__.py create mode 100755 src/python/recoll/recoll/rclconfig.py create mode 100644 src/python/recoll/setup.py.in create mode 100755 src/python/samples/docdups.py create mode 100755 src/python/samples/mutt-recoll.py create mode 100755 src/python/samples/rcldlkp.py create mode 100644 src/python/samples/rclmbox.py create mode 100644 src/python/samples/recollgui/Makefile create mode 100755 src/python/samples/recollgui/qrecoll.py create mode 100644 src/python/samples/recollgui/rclmain.ui create mode 100755 src/python/samples/recollq.py create mode 100755 src/python/samples/recollqsd.py create mode 100755 src/python/samples/trconfig.py create mode 100644 src/qtgui/advsearch.ui create mode 100644 src/qtgui/advsearch_w.cpp create mode 100644 src/qtgui/advsearch_w.h create mode 100644 src/qtgui/advshist.cpp create mode 100644 src/qtgui/advshist.h create mode 100644 src/qtgui/confgui/confgui.cpp create mode 100644 src/qtgui/confgui/confgui.h create mode 100644 src/qtgui/confgui/confguiindex.cpp create mode 100644 src/qtgui/confgui/confguiindex.h create mode 100644 src/qtgui/confgui/conflinkrcl.h create mode 100644 src/qtgui/confgui/main.cpp create mode 100644 src/qtgui/confgui/trconf.pro create mode 100644 src/qtgui/crontool.cpp create mode 100644 src/qtgui/crontool.h create mode 100644 src/qtgui/crontool.ui create mode 100644 src/qtgui/firstidx.h create mode 100644 src/qtgui/firstidx.ui create mode 100644 src/qtgui/fragbuts.cpp create mode 100644 src/qtgui/fragbuts.h create mode 100644 src/qtgui/guiutils.cpp create mode 100644 src/qtgui/guiutils.h create mode 100644 src/qtgui/i18n/recoll_cs.qm create mode 100644 src/qtgui/i18n/recoll_cs.ts create mode 100644 src/qtgui/i18n/recoll_da.qm create mode 100644 src/qtgui/i18n/recoll_da.ts create mode 100644 src/qtgui/i18n/recoll_de.qm create mode 100644 src/qtgui/i18n/recoll_de.ts create mode 100644 src/qtgui/i18n/recoll_el.qm create mode 100644 src/qtgui/i18n/recoll_el.ts create mode 100644 src/qtgui/i18n/recoll_es.qm create mode 100644 src/qtgui/i18n/recoll_es.ts create mode 100644 src/qtgui/i18n/recoll_fr.qm create mode 100644 src/qtgui/i18n/recoll_fr.ts create mode 100644 src/qtgui/i18n/recoll_it.qm create mode 100644 src/qtgui/i18n/recoll_it.ts create mode 100644 src/qtgui/i18n/recoll_lt.qm create mode 100644 src/qtgui/i18n/recoll_lt.ts create mode 100644 src/qtgui/i18n/recoll_pl.qm create mode 100644 src/qtgui/i18n/recoll_pl.ts create mode 100644 src/qtgui/i18n/recoll_ru.qm create mode 100644 src/qtgui/i18n/recoll_ru.ts create mode 100644 src/qtgui/i18n/recoll_tr.qm create mode 100644 src/qtgui/i18n/recoll_tr.ts create mode 100644 src/qtgui/i18n/recoll_uk.qm create mode 100644 src/qtgui/i18n/recoll_uk.ts create mode 100644 src/qtgui/i18n/recoll_xx.qm create mode 100644 src/qtgui/i18n/recoll_xx.ts create mode 100644 src/qtgui/i18n/recoll_zh.qm create mode 100644 src/qtgui/i18n/recoll_zh.ts create mode 100644 src/qtgui/i18n/recoll_zh_CN.qm create mode 100644 src/qtgui/i18n/recoll_zh_CN.ts create mode 100644 src/qtgui/idxsched.h create mode 100644 src/qtgui/idxsched.ui create mode 100644 src/qtgui/images/asearch.png create mode 100644 src/qtgui/images/cancel.png create mode 100644 src/qtgui/images/close.png create mode 100644 src/qtgui/images/code-block.png create mode 100644 src/qtgui/images/down.png create mode 100644 src/qtgui/images/firstpage.png create mode 100644 src/qtgui/images/history.png create mode 100644 src/qtgui/images/nextpage.png create mode 100644 src/qtgui/images/prevpage.png create mode 100644 src/qtgui/images/recoll.icns create mode 100644 src/qtgui/images/recoll.png create mode 100644 src/qtgui/images/sortparms.png create mode 100644 src/qtgui/images/spell.png create mode 100644 src/qtgui/images/table.png create mode 100644 src/qtgui/images/up.png create mode 100644 src/qtgui/main.cpp create mode 100644 src/qtgui/mtpics/License_sidux.txt create mode 100644 src/qtgui/mtpics/README create mode 100644 src/qtgui/mtpics/aptosid-book.png create mode 100644 src/qtgui/mtpics/aptosid-manual-copyright.txt create mode 100644 src/qtgui/mtpics/aptosid-manual.png create mode 100644 src/qtgui/mtpics/archive.png create mode 100644 src/qtgui/mtpics/book.png create mode 100644 src/qtgui/mtpics/bookchap.png create mode 100644 src/qtgui/mtpics/document.png create mode 100644 src/qtgui/mtpics/drawing.png create mode 100644 src/qtgui/mtpics/emblem-symbolic-link.png create mode 100644 src/qtgui/mtpics/folder.png create mode 100644 src/qtgui/mtpics/html.png create mode 100644 src/qtgui/mtpics/image.png create mode 100644 src/qtgui/mtpics/message.png create mode 100644 src/qtgui/mtpics/mozilla_doc.png create mode 100644 src/qtgui/mtpics/pdf.png create mode 100644 src/qtgui/mtpics/pidgin.png create mode 100644 src/qtgui/mtpics/postscript.png create mode 100644 src/qtgui/mtpics/presentation.png create mode 100644 src/qtgui/mtpics/sidux-book.png create mode 100644 src/qtgui/mtpics/soffice.png create mode 100644 src/qtgui/mtpics/source.png create mode 100644 src/qtgui/mtpics/sownd.png create mode 100644 src/qtgui/mtpics/spreadsheet.png create mode 100644 src/qtgui/mtpics/text-x-python.png create mode 100644 src/qtgui/mtpics/txt.png create mode 100644 src/qtgui/mtpics/video.png create mode 100644 src/qtgui/mtpics/wordprocessing.png create mode 100644 src/qtgui/multisave.cpp create mode 100644 src/qtgui/multisave.h create mode 100644 src/qtgui/preview_load.cpp create mode 100644 src/qtgui/preview_load.h create mode 100644 src/qtgui/preview_plaintorich.cpp create mode 100644 src/qtgui/preview_plaintorich.h create mode 100644 src/qtgui/preview_w.cpp create mode 100644 src/qtgui/preview_w.h create mode 100644 src/qtgui/ptrans.ui create mode 100644 src/qtgui/ptrans_w.cpp create mode 100644 src/qtgui/ptrans_w.h create mode 100644 src/qtgui/rclhelp.cpp create mode 100644 src/qtgui/rclhelp.h create mode 100644 src/qtgui/rclm_idx.cpp create mode 100644 src/qtgui/rclm_preview.cpp create mode 100644 src/qtgui/rclm_saveload.cpp create mode 100644 src/qtgui/rclm_view.cpp create mode 100644 src/qtgui/rclm_wins.cpp create mode 100644 src/qtgui/rclmain.ui create mode 100644 src/qtgui/rclmain_w.cpp create mode 100644 src/qtgui/rclmain_w.h create mode 100644 src/qtgui/rclzg.cpp create mode 100644 src/qtgui/rclzg.h create mode 100644 src/qtgui/recoll-win.pro create mode 100644 src/qtgui/recoll.h create mode 100644 src/qtgui/recoll.pro.in create mode 100644 src/qtgui/recoll.qrc create mode 100644 src/qtgui/recoll.rc create mode 100644 src/qtgui/reslist.cpp create mode 100644 src/qtgui/reslist.h create mode 100644 src/qtgui/respopup.cpp create mode 100644 src/qtgui/respopup.h create mode 100644 src/qtgui/restable.cpp create mode 100644 src/qtgui/restable.h create mode 100644 src/qtgui/restable.ui create mode 100644 src/qtgui/rtitool.cpp create mode 100644 src/qtgui/rtitool.h create mode 100644 src/qtgui/rtitool.ui create mode 100644 src/qtgui/searchclause_w.cpp create mode 100644 src/qtgui/searchclause_w.h create mode 100644 src/qtgui/snippets.ui create mode 100644 src/qtgui/snippets_w.cpp create mode 100644 src/qtgui/snippets_w.h create mode 100644 src/qtgui/specialindex.h create mode 100644 src/qtgui/specialindex.ui create mode 100644 src/qtgui/spell.ui create mode 100644 src/qtgui/spell_w.cpp create mode 100644 src/qtgui/spell_w.h create mode 100644 src/qtgui/ssearch_w.cpp create mode 100644 src/qtgui/ssearch_w.h create mode 100644 src/qtgui/ssearchb.ui create mode 100644 src/qtgui/systray.cpp create mode 100644 src/qtgui/systray.h create mode 100644 src/qtgui/ui_rclmain.h-4.5 create mode 100644 src/qtgui/uiprefs.ui create mode 100644 src/qtgui/uiprefs_w.cpp create mode 100644 src/qtgui/uiprefs_w.h create mode 100644 src/qtgui/viewaction.ui create mode 100644 src/qtgui/viewaction_w.cpp create mode 100644 src/qtgui/viewaction_w.h create mode 100644 src/qtgui/widgets/editdialog.h create mode 100644 src/qtgui/widgets/editdialog.ui create mode 100644 src/qtgui/widgets/listdialog.h create mode 100644 src/qtgui/widgets/listdialog.ui create mode 100644 src/qtgui/widgets/qxtconfirmationmessage.cpp create mode 100644 src/qtgui/widgets/qxtconfirmationmessage.h create mode 100644 src/qtgui/widgets/qxtglobal.h create mode 100644 src/qtgui/xmltosd.cpp create mode 100644 src/qtgui/xmltosd.h create mode 100644 src/query/docseq.cpp create mode 100644 src/query/docseq.h create mode 100644 src/query/docseqdb.cpp create mode 100644 src/query/docseqdb.h create mode 100644 src/query/docseqdocs.h create mode 100644 src/query/docseqhist.cpp create mode 100644 src/query/docseqhist.h create mode 100644 src/query/dynconf.cpp create mode 100644 src/query/dynconf.h create mode 100644 src/query/filtseq.cpp create mode 100644 src/query/filtseq.h create mode 100644 src/query/location.hh create mode 100644 src/query/plaintorich.cpp create mode 100644 src/query/plaintorich.h create mode 100644 src/query/position.hh create mode 100644 src/query/recollq.cpp create mode 100644 src/query/recollq.h create mode 100644 src/query/recollqmain.cpp create mode 100644 src/query/reslistpager.cpp create mode 100644 src/query/reslistpager.h create mode 100644 src/query/sortseq.cpp create mode 100644 src/query/sortseq.h create mode 100644 src/query/stack.hh create mode 100644 src/query/wasaparse.cpp create mode 100644 src/query/wasaparse.hpp create mode 100644 src/query/wasaparse.ypp create mode 100644 src/query/wasaparseaux.cpp create mode 100644 src/query/wasaparserdriver.h create mode 100644 src/query/wasatorcl.h create mode 100644 src/query/xadump.cpp create mode 100644 src/rcldb/Makefile create mode 100644 src/rcldb/daterange.cpp create mode 100644 src/rcldb/daterange.h create mode 100644 src/rcldb/expansiondbs.cpp create mode 100644 src/rcldb/expansiondbs.h create mode 100644 src/rcldb/rclabstract.cpp create mode 100644 src/rcldb/rcldb.cpp create mode 100644 src/rcldb/rcldb.h create mode 100644 src/rcldb/rcldb_p.h create mode 100644 src/rcldb/rcldoc.cpp create mode 100644 src/rcldb/rcldoc.h create mode 100644 src/rcldb/rcldups.cpp create mode 100644 src/rcldb/rclquery.cpp create mode 100644 src/rcldb/rclquery.h create mode 100644 src/rcldb/rclquery_p.h create mode 100644 src/rcldb/rclterms.cpp create mode 100644 src/rcldb/searchdata.cpp create mode 100644 src/rcldb/searchdata.h create mode 100644 src/rcldb/searchdatatox.cpp create mode 100644 src/rcldb/searchdataxml.cpp create mode 100644 src/rcldb/stemdb.cpp create mode 100644 src/rcldb/stemdb.h create mode 100644 src/rcldb/stoplist.cpp create mode 100644 src/rcldb/stoplist.h create mode 100644 src/rcldb/synfamily.cpp create mode 100644 src/rcldb/synfamily.h create mode 100644 src/rcldb/termproc.h create mode 100644 src/rcldb/xmacros.h create mode 100644 src/sampleconf/fields create mode 100644 src/sampleconf/fragbuts.xml create mode 100644 src/sampleconf/mimeconf create mode 100644 src/sampleconf/mimemap create mode 100644 src/sampleconf/mimeview create mode 100644 src/sampleconf/mimeview.mac create mode 100644 src/sampleconf/recoll.conf create mode 100644 src/sampleconf/recoll.qss create mode 100644 src/unac/AUTHORS create mode 100644 src/unac/COPYING create mode 100644 src/unac/README create mode 100644 src/unac/README.recoll create mode 100644 src/unac/unac.c create mode 100644 src/unac/unac.cpp create mode 100644 src/unac/unac.h create mode 100644 src/unac/unac_version.h create mode 100644 src/utils/Makefile create mode 100644 src/utils/appformime.cpp create mode 100644 src/utils/appformime.h create mode 100644 src/utils/base64.cpp create mode 100644 src/utils/base64.h create mode 100644 src/utils/cancelcheck.cpp create mode 100644 src/utils/cancelcheck.h create mode 100644 src/utils/chrono.cpp create mode 100644 src/utils/chrono.h create mode 100644 src/utils/circache.cpp create mode 100644 src/utils/circache.h create mode 100644 src/utils/closefrom.cpp create mode 100644 src/utils/closefrom.h create mode 100644 src/utils/conftree.cpp create mode 100644 src/utils/conftree.h create mode 100644 src/utils/copyfile.cpp create mode 100644 src/utils/copyfile.h create mode 100644 src/utils/cpuconf.cpp create mode 100644 src/utils/cpuconf.h create mode 100644 src/utils/debuglog.cpp create mode 100644 src/utils/debuglog.h create mode 100644 src/utils/ecrontab.cpp create mode 100644 src/utils/ecrontab.h create mode 100644 src/utils/execmd.cpp create mode 100644 src/utils/execmd.h create mode 100644 src/utils/fileudi.cpp create mode 100644 src/utils/fileudi.h create mode 100644 src/utils/fstreewalk.cpp create mode 100644 src/utils/fstreewalk.h create mode 100644 src/utils/hldata.h create mode 100644 src/utils/idfile.cpp create mode 100644 src/utils/idfile.h create mode 100644 src/utils/md5.cpp create mode 100644 src/utils/md5.h create mode 100644 src/utils/md5ut.cpp create mode 100644 src/utils/md5ut.h create mode 100644 src/utils/mimeparse.cpp create mode 100644 src/utils/mimeparse.h create mode 100644 src/utils/netcon.cpp create mode 100644 src/utils/netcon.h create mode 100644 src/utils/pathut.cpp create mode 100644 src/utils/pathut.h create mode 100644 src/utils/ptmutex.cpp create mode 100644 src/utils/ptmutex.h create mode 100644 src/utils/pxattr.cpp create mode 100644 src/utils/pxattr.h create mode 100644 src/utils/rclionice.cpp create mode 100644 src/utils/rclionice.h create mode 100644 src/utils/readfile.cpp create mode 100644 src/utils/readfile.h create mode 100644 src/utils/refcntr.h create mode 100644 src/utils/smallut.cpp create mode 100644 src/utils/smallut.h create mode 100644 src/utils/strmatcher.cpp create mode 100644 src/utils/strmatcher.h create mode 100644 src/utils/transcode.cpp create mode 100644 src/utils/transcode.h create mode 100644 src/utils/trexecmd.cpp create mode 100644 src/utils/utf8iter.cpp create mode 100644 src/utils/utf8iter.h create mode 100644 src/utils/utf8testin.txt create mode 100644 src/utils/utmkdefs.mk create mode 100644 src/utils/wipedir.cpp create mode 100644 src/utils/wipedir.h create mode 100644 src/utils/workqueue.cpp create mode 100644 src/utils/workqueue.h create mode 100644 src/utils/x11mon.cpp create mode 100644 src/utils/x11mon.h create mode 100644 src/windows/SolutionSettings/SolutionSettings.props create mode 100644 src/windows/SolutionSettings/SolutionSettings.vcxproj create mode 100644 src/windows/SolutionSettings/SolutionSettings.vcxproj.filters create mode 100644 src/windows/Win32ProjectRecoll.sln create mode 100644 src/windows/Win32ProjectRecoll.vcxproj create mode 100644 src/windows/Win32ProjectRecoll.vcxproj.filters create mode 100644 src/windows/Win32ProjectRecoll.vcxproj.user create mode 100644 src/windows/dirent.c create mode 100644 src/windows/dirent.h create mode 100644 src/windows/execmd_w.cpp create mode 100644 src/windows/fnmatch.c create mode 100644 src/windows/fnmatch.h create mode 100644 src/windows/mimeconf create mode 100644 src/windows/mimeview create mode 100644 src/windows/mkinstdir.sh create mode 100644 src/windows/qmkrecoll/librecoll.pro create mode 100644 src/windows/qmkrecoll/rclstartw.pro create mode 100644 src/windows/qmkrecoll/recollindex.pro create mode 100644 src/windows/qmkrecoll/recollq.pro create mode 100644 src/windows/rclstartw.cpp create mode 100644 src/windows/recoll-setup.iss create mode 100644 src/windows/recollindex/recollindex.vcxproj create mode 100644 src/windows/recollindex/recollindex.vcxproj.filters create mode 100644 src/windows/recollindex/recollindex.vcxproj.user create mode 100644 src/windows/recollq/recollq.vcxproj create mode 100644 src/windows/recollq/recollq.vcxproj.filters create mode 100644 src/windows/strptime.cpp create mode 100644 src/windows/strptime.h create mode 100644 src/windows/targetver.h create mode 100644 src/windows/trexe/trexecmd/trexecmd.sln create mode 100644 src/windows/trexe/trexecmd/trexecmd.vcxproj create mode 100644 src/windows/trexe/trexecmd/trexecmd.vcxproj.filters create mode 100644 src/xaposix/safe.cc create mode 100644 src/xaposix/safefcntl.h create mode 100644 src/xaposix/safesysstat.h create mode 100644 src/xaposix/safesyswait.h create mode 100644 src/xaposix/safeunistd.h create mode 100644 src/xaposix/safewindows.h create mode 100755 src/ylwrap create mode 100755 tests/7zip/7zip.sh create mode 100644 tests/7zip/7zip.txt create mode 100755 tests/Maildir/Maildir.sh create mode 100644 tests/Maildir/Maildir.txt create mode 100755 tests/Maildir1/Maildir1.sh create mode 100644 tests/Maildir1/Maildir1.txt create mode 100755 tests/abiword/abiword.sh create mode 100644 tests/abiword/abiword.txt create mode 100755 tests/anchor/anchor.sh create mode 100644 tests/anchor/anchor.txt create mode 100755 tests/andor/andor.sh create mode 100644 tests/andor/andor.txt create mode 100755 tests/badsuffs/badsuffs.sh create mode 100644 tests/badsuffs/badsuffs.txt create mode 100755 tests/badsuffs1/badsuffs1.sh create mode 100644 tests/badsuffs1/badsuffs1.txt create mode 100755 tests/boolean/boolean.sh create mode 100644 tests/boolean/boolean.txt create mode 100644 tests/casediac/casediac.sh create mode 100644 tests/casediac/casediac.txt create mode 100755 tests/chm/chm.sh create mode 100644 tests/chm/chm.txt create mode 100755 tests/cjk/cjk.sh create mode 100644 tests/cjk/cjk.txt create mode 100755 tests/compressed/compressed.sh create mode 100644 tests/compressed/compressed.txt create mode 100644 tests/config/fields create mode 100644 tests/config/mimeconf create mode 100644 tests/config/mimemap create mode 100644 tests/config/mimeview create mode 100644 tests/config/recoll.conf create mode 100755 tests/dates/dates.sh create mode 100644 tests/dates/dates.txt create mode 100755 tests/delete/delete.sh create mode 100644 tests/delete/delete.txt create mode 100755 tests/dia/dia.sh create mode 100644 tests/dia/dia.txt create mode 100755 tests/dir/dir.sh create mode 100644 tests/dir/dir.txt create mode 100755 tests/dirwithblanks/dirwithblanks.sh create mode 100644 tests/dirwithblanks/dirwithblanks.txt create mode 100755 tests/djvu/djvu.sh create mode 100644 tests/djvu/djvu.txt create mode 100755 tests/dvi/dvi.sh create mode 100644 tests/dvi/dvi.txt create mode 100755 tests/embed/embed.sh create mode 100644 tests/embed/embed.txt create mode 100755 tests/empty/empty.sh create mode 100644 tests/empty/empty.txt create mode 100755 tests/epub/epub.sh create mode 100644 tests/epub/epub.txt create mode 100755 tests/gnumeric/gnumeric.sh create mode 100644 tests/gnumeric/gnumeric.txt create mode 100755 tests/html/html.sh create mode 100644 tests/html/html.txt create mode 100755 tests/ics/ics.sh create mode 100644 tests/ics/ics.txt create mode 100755 tests/images/images.sh create mode 100644 tests/images/images.txt create mode 100755 tests/incexcl/incexcl.sh create mode 100644 tests/incexcl/incexcl.txt create mode 100644 tests/indexedmimetypes/indexedmimetypes.sh create mode 100644 tests/indexedmimetypes/indexedmimetypes.txt create mode 100755 tests/info/info.sh create mode 100644 tests/info/info.txt create mode 100755 tests/kar/kar.sh create mode 100644 tests/kar/kar.txt create mode 100755 tests/koi8r/koi8r.sh create mode 100644 tests/koi8r/koi8r.txt create mode 100755 tests/langparser/langparser.sh create mode 100644 tests/langparser/langparser.txt create mode 100755 tests/langparser1/langparser1.sh create mode 100644 tests/langparser1/langparser1.txt create mode 100755 tests/lyx/lyx.sh create mode 100644 tests/lyx/lyx.txt create mode 100755 tests/mail/mail.sh create mode 100644 tests/mail/mail.txt create mode 100755 tests/man/man.sh create mode 100644 tests/man/man.txt create mode 100755 tests/media/media.sh create mode 100644 tests/media/media.txt create mode 100755 tests/msword/msword.sh create mode 100644 tests/msword/msword.txt create mode 100644 tests/non-auto/testmbox.sh create mode 100755 tests/notypes/notypes.sh create mode 100644 tests/notypes/notypes.txt create mode 100755 tests/okular-notes/okular-notes.sh create mode 100644 tests/okular-notes/okular-notes.txt create mode 100755 tests/ooff/ooff.sh create mode 100644 tests/ooff/ooff.txt create mode 100755 tests/partialpurge/partialpurge.sh create mode 100644 tests/partialpurge/partialpurge.txt create mode 100755 tests/pdf/pdf.sh create mode 100644 tests/pdf/pdf.txt create mode 100755 tests/postscript/postscript.sh create mode 100644 tests/postscript/postscript.txt create mode 100755 tests/ppt/ppt.sh create mode 100644 tests/ppt/ppt.txt create mode 100755 tests/program/program.sh create mode 100644 tests/program/program.txt create mode 100755 tests/purple/purple.sh create mode 100644 tests/purple/purple.txt create mode 100644 tests/pythonapi/doc.py create mode 100644 tests/pythonapi/extract.py create mode 100755 tests/pythonapi/pythonapi.sh create mode 100644 tests/pythonapi/pythonapi.txt create mode 100644 tests/pythonapi/simple.py create mode 100644 tests/pythonapi/url.py create mode 100755 tests/rar/rar.sh create mode 100644 tests/rar/rar.txt create mode 100755 tests/rfc2231/rfc2231.sh create mode 100644 tests/rfc2231/rfc2231.txt create mode 100755 tests/rtf/rtf.sh create mode 100644 tests/rtf/rtf.txt create mode 100644 tests/runtests.sh create mode 100755 tests/scribus/scribus.sh create mode 100644 tests/scribus/scribus.txt create mode 100644 tests/shared.sh create mode 100755 tests/skipped/skipped.sh create mode 100644 tests/skipped/skipped.txt create mode 100755 tests/special/special.sh create mode 100644 tests/special/special.txt create mode 100755 tests/stemming/stemming.sh create mode 100644 tests/stemming/stemming.txt create mode 100755 tests/tar/tar.sh create mode 100644 tests/tar/tar.txt create mode 100755 tests/txt/txt.sh create mode 100644 tests/txt/txt.txt create mode 100755 tests/unacex/unacex.sh create mode 100644 tests/unacex/unacex.txt create mode 100755 tests/utf8/utf8.sh create mode 100644 tests/utf8/utf8.txt create mode 100755 tests/utfInPath/utfInPath.sh create mode 100644 tests/utfInPath/utfInPath.txt create mode 100644 tests/xattr/fields create mode 100755 tests/xattr/xattr.sh create mode 100644 tests/xattr/xattr.txt create mode 100755 tests/xls/xls.sh create mode 100644 tests/xls/xls.txt create mode 100755 tests/xml/xml.sh create mode 100644 tests/xml/xml.txt create mode 100755 tests/zip/zip.sh create mode 100644 tests/zip/zip.txt create mode 100644 unac/.version create mode 100644 unac/AUTHORS create mode 100644 unac/COPYING create mode 100644 unac/CaseFolding-5.1.0.txt create mode 100644 unac/CaseFolding-6.3.0.txt create mode 100644 unac/ChangeLog create mode 100644 unac/INSTALL create mode 100644 unac/Makefile.am create mode 100644 unac/Makefile.in create mode 100644 unac/NEWS create mode 100644 unac/README create mode 100644 unac/THANKS create mode 100644 unac/UnicodeData-5.1.0.txt create mode 100644 unac/UnicodeData-6.3.0.txt create mode 100644 unac/acinclude.m4 create mode 100644 unac/aclocal.m4 create mode 100644 unac/builder.in create mode 120000 unac/compile create mode 100755 unac/config.guess create mode 100644 unac/config.h.in create mode 100644 unac/config.rpath create mode 100755 unac/config.sub create mode 100755 unac/configure create mode 100644 unac/configure.ac create mode 100755 unac/depcomp create mode 100644 unac/getopt.c create mode 100644 unac/getopt.h create mode 100755 unac/install-sh create mode 100755 unac/ltconfig create mode 100644 unac/ltmain.sh create mode 100755 unac/missing create mode 100755 unac/mkinstalldirs create mode 100644 unac/stamp-h create mode 100644 unac/stamp-h.in create mode 100755 unac/t_unac.in create mode 100644 unac/test-driver create mode 100644 unac/unac.3 create mode 100644 unac/unac.c create mode 100644 unac/unac.h create mode 100644 unac/unac.pc.in create mode 100644 unac/unac.spec.in create mode 100644 unac/unac_version.h create mode 100644 unac/unaccent.1 create mode 100644 unac/unaccent.c create mode 100644 unac/unactest.c create mode 100644 unac/unactest1.c create mode 100644 website/BUGS.html create mode 100644 website/CHANGES.html create mode 100755 website/copydocs create mode 100644 website/credits.html create mode 100644 website/custom.html create mode 100644 website/devel.html create mode 100644 website/doc.html create mode 100644 website/download.html create mode 100644 website/favicon.ico create mode 100644 website/features.html create mode 100644 website/filters/filters.html create mode 100644 website/fr/features.html create mode 100644 website/helpernotes.html create mode 100644 website/id3lib.html create mode 100644 website/idxthreads/Makefile create mode 100644 website/idxthreads/assembly.dia create mode 100644 website/idxthreads/assembly.png create mode 100644 website/idxthreads/forkingRecoll.txt create mode 100644 website/idxthreads/multipara.dia create mode 100644 website/idxthreads/multipara.png create mode 100644 website/idxthreads/nothreads.dia create mode 100644 website/idxthreads/nothreads.png create mode 100644 website/idxthreads/threadingRecoll.html create mode 100644 website/idxthreads/threadingRecoll.txt create mode 100644 website/idxthreads/xapDocCopyCrash.txt create mode 100644 website/index.html.en create mode 100644 website/index.html.fr create mode 100644 website/pages/Makefile create mode 100644 website/pages/recoll-mingw.txt create mode 100644 website/pages/recoll-windows.txt create mode 100644 website/perfs.html create mode 100644 website/pics/00REMAKEALB.sh create mode 100644 website/pics/index.html create mode 100644 website/pics/index.html.head create mode 100644 website/pics/mario.png create mode 100644 website/pics/piclist.txt create mode 100644 website/pics/recoll-HTML_search_results-thumb.png create mode 100644 website/pics/recoll-HTML_search_results.html create mode 100644 website/pics/recoll-HTML_search_results.png create mode 100644 website/pics/recoll-HTML_search_results.txt create mode 100644 website/pics/recoll0-thumb.png create mode 100644 website/pics/recoll0.html create mode 100644 website/pics/recoll0.png create mode 100644 website/pics/recoll0.txt create mode 100644 website/pics/recoll1-thumb.png create mode 100644 website/pics/recoll1.html create mode 100644 website/pics/recoll1.png create mode 100644 website/pics/recoll1.txt create mode 100644 website/pics/recoll2-thumb.png create mode 100644 website/pics/recoll2.html create mode 100644 website/pics/recoll2.png create mode 100644 website/pics/recoll2.txt create mode 100644 website/pics/recoll3-thumb.png create mode 100644 website/pics/recoll3.html create mode 100644 website/pics/recoll3.png create mode 100644 website/pics/recoll3.txt create mode 100644 website/pics/recoll4-thumb.png create mode 100644 website/pics/recoll4.html create mode 100644 website/pics/recoll4.png create mode 100644 website/pics/recoll4.txt create mode 100644 website/pics/recoll5-thumb.png create mode 100644 website/pics/recoll5.html create mode 100644 website/pics/recoll5.png create mode 100644 website/pics/recoll5.txt create mode 100644 website/pics/recoll64.png create mode 100644 website/pics/recoll_chinese-thumb.png create mode 100644 website/pics/recoll_chinese.html create mode 100644 website/pics/recoll_chinese.png create mode 100644 website/pics/recoll_chinese.txt create mode 100644 website/pics/result-table-thumb.png create mode 100644 website/pics/result-table.html create mode 100644 website/pics/result-table.png create mode 100644 website/pics/smile.png create mode 100644 website/rclidxfmt.html create mode 100644 website/recoll_XMP/index.html create mode 100644 website/recoll_XMP/jabref_metadata.png create mode 100644 website/recoll_XMP/recoll_query.png create mode 100644 website/release-1.14.4.html create mode 100644 website/release-1.15.html create mode 100644 website/release-1.16.html create mode 100644 website/release-1.17.html create mode 100644 website/release-1.18.html create mode 100644 website/release-1.19.html create mode 100644 website/release-1.20.html create mode 100644 website/release-1.21.html create mode 100644 website/release-1.22.html create mode 100644 website/release-history.html create mode 100644 website/resparpics/christopher.png create mode 100644 website/resparpics/clean.png create mode 100644 website/resparpics/default.png create mode 100644 website/resparpics/detailSmallGreyTable.png create mode 100644 website/resparpics/issue73+table.png create mode 100644 website/resparpics/issue73.png create mode 100644 website/resparpics/pip.png create mode 100644 website/resparpics/pz3.png create mode 100644 website/resparpics/structuredTable.png create mode 100644 website/resparpics/weblike.png create mode 100644 website/styles/style.css create mode 100644 website/support.html.en create mode 100644 website/usermanual/README-dir.txt create mode 100644 website/xapUpg100.html diff --git a/.hgignore b/.hgignore new file mode 100644 index 00000000..4f8534d5 --- /dev/null +++ b/.hgignore @@ -0,0 +1,121 @@ +syntax: glob +*.dep +*.dep.stamp +*.o +.libs +*.la +stamp-h1 +.dirstamp +libtool +.deps +*.lo +*~ +\#* +*.obj +*.sdf +*.tlog +*.lib +*.idb +*.log +*.pdb +.vs +*.exe +*.ilk +ptrans +src/aclocal.m4 +src/compile +src/config.guess +src/config.sub +src/depcomp +src/install-sh +src/Makefile.in +src/ltmain.sh +src/m4/libtool.m4 +src/m4/ltoptions.m4 +src/m4/ltsugar.m4 +src/m4/ltversion.m4 +src/m4/lt~obsolete.m4 +src/missing +src/config.log +src/config.status +src/configure +src/Makefile +src/autom4te.cache +src/common/autoconfig.h +src/common/rclversion.h +src/doc/user/RCL.INDEXING.CONFIG.html +src/doc/user/RCL.INDEXING.EXTATTR.html +src/doc/user/RCL.INDEXING.EXTTAGS.html +src/doc/user/RCL.INDEXING.MONITOR.html +src/doc/user/RCL.INDEXING.PERIODIC.html +src/doc/user/RCL.INDEXING.STORAGE.html +src/doc/user/RCL.INDEXING.WEBQUEUE.html +src/doc/user/RCL.INDEXING.html +src/doc/user/RCL.INSTALL.BUILDING.html +src/doc/user/RCL.INSTALL.CONFIG.html +src/doc/user/RCL.INSTALL.EXTERNAL.html +src/doc/user/RCL.INSTALL.html +src/doc/user/RCL.INTRODUCTION.RECOLL.html +src/doc/user/RCL.INTRODUCTION.SEARCH.html +src/doc/user/RCL.INTRODUCTION.html +src/doc/user/RCL.PROGRAM.API.html +src/doc/user/RCL.PROGRAM.FIELDS.html +src/doc/user/RCL.PROGRAM.html +src/doc/user/RCL.SEARCH.ANCHORWILD.html +src/doc/user/RCL.SEARCH.CASEDIAC.html +src/doc/user/RCL.SEARCH.COMMANDLINE.html +src/doc/user/RCL.SEARCH.DESKTOP.html +src/doc/user/RCL.SEARCH.KIO.html +src/doc/user/RCL.SEARCH.LANG.html +src/doc/user/RCL.SEARCH.PTRANS.html +src/doc/user/RCL.SEARCH.html +src/doc/user/index.html +src/doc/user/usermanual.pdf +src/filters/rclexecm.pyc +src/filters/rcllatinclass.pyc +src/recollindex +src/recollq +src/xadump +src/kde/kioslave/kio_recoll/builddir +src/python/recoll/build +src/python/recoll/recoll/__init__.pyc +src/python/recoll/setup.py +src/python/samples/recollgui/rclmain.py +src/python/samples/recollgui/rclmain.pyc +src/qtgui/.moc/* +src/qtgui/.obj/* +src/qtgui/.ui/* +src/qtgui/Makefile +src/qtgui/qrc_recoll.cpp +src/qtgui/recoll +src/qtgui/recoll.pro +src/qtgui/recoll.app +src/sampleconf/rclmon.sh +src/sampleconf/recoll.conf +tests/casediac/aspdict.en.rws +tests/casediac/idxstatus.txt +tests/casediac/index.pid +tests/casediac/mimeview +tests/casediac/missing +tests/casediac/recoll.conf +tests/casediac/xapiandb +tests/config/aspdict.en.rws +tests/config/history +tests/config/idxstatus.txt +tests/config/index.pid +tests/config/missing +tests/config/xapiandb +tests/indexedmimetypes/aspdict.en.rws +tests/indexedmimetypes/idxstatus.txt +tests/indexedmimetypes/index.pid +tests/indexedmimetypes/mimeview +tests/indexedmimetypes/missing +tests/indexedmimetypes/recoll.conf +tests/indexedmimetypes/xapiandb +tests/xattr/mimeview +website/usermanual/* +website/idxthreads/forkingRecoll.html +website/idxthreads/xapDocCopyCrash.html +website/pages/recoll-mingw.html +website/pages/recoll-windows.html +src/doc/user/RCL.SEARCH.SYNONYMS.html diff --git a/packaging/FreeBSD/recoll/Makefile b/packaging/FreeBSD/recoll/Makefile new file mode 100644 index 00000000..a2ecc56d --- /dev/null +++ b/packaging/FreeBSD/recoll/Makefile @@ -0,0 +1,34 @@ +# New ports collection makefile for: recoll +# Date created: 5 December 2005 +# Whom: J.F. Dockes +# +# $FreeBSD: ports/deskutils/recoll/Makefile,v 1.44 2010/10/09 17:52:42 makc Exp $ +# + +PORTNAME= recoll +PORTVERSION= 1.16.2 +CATEGORIES= deskutils +MASTER_SITES= http://www.lesbonscomptes.com/recoll/ + +MAINTAINER= jf@dockes.org +COMMENT= A personal full text search package, based on QT and Xapian + +BUILD_DEPENDS= xapian-core>=1.0.12:${PORTSDIR}/databases/xapian-core +RUN_DEPENDS:= ${BUILD_DEPENDS} + +USE_QT_VER= 4 +QT_COMPONENTS= gui qmake_build uic_build moc_build rcc_build +GNU_CONFIGURE= yes +USE_GMAKE= yes +USE_ICONV= yes +INSTALLS_ICONS= yes +USE_FAM= yes + +MAN1= recoll.1 recollindex.1 +MAN5= recoll.conf.5 + +post-patch: + ${REINPLACE_CMD} -e 's/^CXXFLAGS =/CXXFLAGS ?=/' \ + ${WRKSRC}/mk/localdefs.in + +.include diff --git a/packaging/FreeBSD/recoll/distinfo b/packaging/FreeBSD/recoll/distinfo new file mode 100644 index 00000000..305b0c06 --- /dev/null +++ b/packaging/FreeBSD/recoll/distinfo @@ -0,0 +1,2 @@ +SHA256 (recoll-1.16.2.tar.gz) = f0f29dff2d82ef8541c51963870f31daf28472f3c8822c81c17c346769b77355 +SIZE (recoll-1.16.2.tar.gz) = 1422148 diff --git a/packaging/FreeBSD/recoll/pkg-descr b/packaging/FreeBSD/recoll/pkg-descr new file mode 100644 index 00000000..1aa20b03 --- /dev/null +++ b/packaging/FreeBSD/recoll/pkg-descr @@ -0,0 +1,24 @@ +Recoll is a personal full text search package with a QT graphical +interface. It is based on a very strong backend (Xapian), for which it +provides an easy to use and feature-rich interface. + +Features: + * Free, GPL license. + * QT-based GUI. + * Supports the following document types (and their compressed versions): + - Natively: text, html, OpenOffice files, maildir and mailbox + (Mozilla and Thunderbird mail ok) with attachments, gaim log files. + - With external helpers: pdf (pdftotext), postscript (ghostscript), + msword (antiword), excel, ppt (catdoc), rtf (unrtf), + * Powerful query facilities, with boolean searches, phrases, filter on + file types and directory tree. + * Support for multiple charsets. Internal processing and storage uses + Unicode UTF-8. + * Stemming performed at query time (can switch stemming language after + indexing) + * Easy installation. No database daemon, web server or exotic language + necessary. + * An indexer which runs either as a thread inside the GUI or as an + external, cron'able program. + +WWW: http://www.lesbonscomptes.com/recoll/ diff --git a/packaging/FreeBSD/recoll/pkg-plist b/packaging/FreeBSD/recoll/pkg-plist new file mode 100644 index 00000000..bfcd9397 --- /dev/null +++ b/packaging/FreeBSD/recoll/pkg-plist @@ -0,0 +1,100 @@ +bin/recoll +bin/recollindex +share/applications/recoll-searchgui.desktop +share/icons/hicolor/48x48/apps/recoll.png +share/pixmaps/recoll.png +%%DATADIR%%/doc/docbook.css +%%DATADIR%%/doc/usermanual.html +%%DATADIR%%/examples/fields +%%DATADIR%%/examples/mimeconf +%%DATADIR%%/examples/mimemap +%%DATADIR%%/examples/mimeview +%%DATADIR%%/examples/rclmon.sh +%%DATADIR%%/examples/recoll.conf +%%DATADIR%%/filters/hotrecoll.py +%%DATADIR%%/filters/rclabw +%%DATADIR%%/filters/rclaptosidman +%%DATADIR%%/filters/rclaudio +%%DATADIR%%/filters/rclchm +%%DATADIR%%/filters/rcldjvu +%%DATADIR%%/filters/rcldoc +%%DATADIR%%/filters/rcldvi +%%DATADIR%%/filters/rclexecm.py +%%DATADIR%%/filters/rclfb2 +%%DATADIR%%/filters/rclflac +%%DATADIR%%/filters/rclgaim +%%DATADIR%%/filters/rclics +%%DATADIR%%/filters/rclid3 +%%DATADIR%%/filters/rclimg +%%DATADIR%%/filters/rclinfo +%%DATADIR%%/filters/rclkar +%%DATADIR%%/filters/rclkwd +%%DATADIR%%/filters/rcllatinclass.py +%%DATADIR%%/filters/rcllatinstops.zip +%%DATADIR%%/filters/rcllyx +%%DATADIR%%/filters/rclman +%%DATADIR%%/filters/rclnull +%%DATADIR%%/filters/rclogg +%%DATADIR%%/filters/rclopxml +%%DATADIR%%/filters/rclpdf +%%DATADIR%%/filters/rclppt +%%DATADIR%%/filters/rclps +%%DATADIR%%/filters/rclpurple +%%DATADIR%%/filters/rclpython +%%DATADIR%%/filters/rclrar +%%DATADIR%%/filters/rclrtf +%%DATADIR%%/filters/rclscribus +%%DATADIR%%/filters/rclshowinfo +%%DATADIR%%/filters/rclsiduxman +%%DATADIR%%/filters/rclsoff +%%DATADIR%%/filters/rclsvg +%%DATADIR%%/filters/rcltex +%%DATADIR%%/filters/rcltext +%%DATADIR%%/filters/rcluncomp +%%DATADIR%%/filters/rclwar +%%DATADIR%%/filters/rclwpd +%%DATADIR%%/filters/rclxls +%%DATADIR%%/filters/rclzip +%%DATADIR%%/filters/rcl7z +%%DATADIR%%/filters/xdg-open +%%DATADIR%%/images/aptosid-book.png +%%DATADIR%%/images/aptosid-manual.png +%%DATADIR%%/images/document.png +%%DATADIR%%/images/drawing.png +%%DATADIR%%/images/folder.png +%%DATADIR%%/images/html.png +%%DATADIR%%/images/image.png +%%DATADIR%%/images/message.png +%%DATADIR%%/images/mozilla_doc.png +%%DATADIR%%/images/pdf.png +%%DATADIR%%/images/pidgin.png +%%DATADIR%%/images/postscript.png +%%DATADIR%%/images/presentation.png +%%DATADIR%%/images/sidux-book.png +%%DATADIR%%/images/source.png +%%DATADIR%%/images/sownd.png +%%DATADIR%%/images/soffice.png +%%DATADIR%%/images/spreadsheet.png +%%DATADIR%%/images/text-x-python.png +%%DATADIR%%/images/txt.png +%%DATADIR%%/images/wordprocessing.png +%%DATADIR%%/translations/recoll_cs.qm +%%DATADIR%%/translations/recoll_fr.qm +%%DATADIR%%/translations/recoll_it.qm +%%DATADIR%%/translations/recoll_lt.qm +%%DATADIR%%/translations/recoll_de.qm +%%DATADIR%%/translations/recoll_uk.qm +%%DATADIR%%/translations/recoll_ru.qm +%%DATADIR%%/translations/recoll_tr.qm +%%DATADIR%%/translations/recoll_xx.qm +@dirrm %%DATADIR%%/doc +@dirrm %%DATADIR%%/examples +@dirrm %%DATADIR%%/filters +@dirrm %%DATADIR%%/images +@dirrm %%DATADIR%%/translations +@dirrm %%DATADIR%% +@dirrmtry share/applications +@dirrmtry share/icons/hicolor/48x48/apps +@dirrmtry share/icons/hicolor/48x48 +@dirrmtry share/icons/hicolor +@dirrmtry share/icons diff --git a/packaging/debian/buildppa.sh b/packaging/debian/buildppa.sh new file mode 100644 index 00000000..ecb757cb --- /dev/null +++ b/packaging/debian/buildppa.sh @@ -0,0 +1,185 @@ +#!/bin/sh +# Packages needed +# sudo apt-get install g++ gnupg dput lintian mini-dinstall yaclc bzr devscripts +# For the kio: (and kdesdk?) +# sudo apt-get install pkg-kde-tools cdbs + +RCLVERS=1.22.0 +LENSVERS=1.19.10.3543 +SCOPEVERS=1.20.2.4 +PPAVERS=1 + +# +RCLSRC=/y/home/dockes/projets/fulltext/recoll/src +SCOPESRC=/y/home/dockes/projets/fulltext/unity-scope-recoll +RCLDOWNLOAD=/y/home/dockes/projets/lesbonscomptes/recoll + +case $RCLVERS in + [23]*) PPANAME=recollexp-ppa;; + 1.14*) PPANAME=recoll-ppa;; + *) PPANAME=recoll15-ppa;; +esac +PPANAME=recollexp-ppa +echo "PPA: $PPANAME. Type CR if Ok, else ^C" +read rep + +fatal() +{ + echo $*; exit 1 +} + +check_recoll_orig() +{ + if test ! -f recoll_${RCLVERS}.orig.tar.gz ; then + cp -p $RCLDOWNLOAD/recoll-${RCLVERS}.tar.gz \ + recoll_${RCLVERS}.orig.tar.gz || \ + fatal "Can find neither recoll_${RCLVERS}.orig.tar.gz nor " \ + "recoll-${RCLVERS}.tar.gz" + fi +} + +####### QT4 +debdir=debian +# Note: no new releases for lucid: no webkit. Or use old debianrclqt4 dir. +#series="precise trusty vivid" +series=trusty + +if test "X$series" != X ; then + check_recoll_orig + test -d recoll-${RCLVERS} || tar xvzf recoll_${RCLVERS}.orig.tar.gz +fi + +for series in $series ; do + + rm -rf recoll-${RCLVERS}/debian + cp -rp ${debdir}/ recoll-${RCLVERS}/debian || exit 1 + + if test -f $debdir/control-$series ; then + cp -f -p $debdir/control-$series recoll-${RCLVERS}/debian/control + else + cp -f -p $debdir/control recoll-${RCLVERS}/debian/control + fi + + sed -e s/SERIES/${series}/g \ + -e s/PPAVERS/${PPAVERS}/g \ + < ${debdir}/changelog > recoll-${RCLVERS}/debian/changelog + + (cd recoll-${RCLVERS};debuild -S -sa) || break + + dput $PPANAME recoll_${RCLVERS}-1~ppa${PPAVERS}~${series}1_source.changes +done + +### KIO +series="precise trusty vivid" +series= + +debdir=debiankio +topdir=kio-recoll-${RCLVERS} +if test "X$series" != X ; then + check_recoll_orig + if test ! -f kio-recoll_${RCLVERS}.orig.tar.gz ; then + cp -p recoll_${RCLVERS}.orig.tar.gz \ + kio-recoll_${RCLVERS}.orig.tar.gz || exit 1 + fi + if test ! -d $topdir ; then + mkdir temp + cd temp + tar xvzf ../recoll_${RCLVERS}.orig.tar.gz || exit 1 + mv recoll-${RCLVERS} ../$topdir || exit 1 + cd .. + fi +fi +for series in $series ; do + + rm -rf $topdir/debian + cp -rp ${debdir}/ $topdir/debian || exit 1 + + sed -e s/SERIES/$series/g \ + -e s/PPAVERS/${PPAVERS}/g \ + < ${debdir}/changelog > $topdir/debian/changelog ; + + (cd $topdir;debuild -S -sa) || exit 1 + + dput $PPANAME kio-recoll_${RCLVERS}-0~ppa${PPAVERS}~${series}1_source.changes + +done + +### Unity Lens +series="precise" +series= + +debdir=debianunitylens +topdir=recoll-lens-${LENSVERS} +if test "X$series" != X ; then + if test ! -f recoll-lens_${LENSVERS}.orig.tar.gz ; then + if test -f recoll-lens-${LENSVERS}.tar.gz ; then + mv recoll-lens-${LENSVERS}.tar.gz \ + recoll-lens_${LENSVERS}.orig.tar.gz + else + fatal "Can find neither recoll-lens_${LENSVERS}.orig.tar.gz nor " \ + "recoll-lens-${LENSVERS}.tar.gz" + fi + fi + test -d $topdir || tar xvzf recoll-lens_${LENSVERS}.orig.tar.gz || exit 1 +fi + +for series in $series ; do + + rm -rf $topdir/debian + cp -rp ${debdir}/ $topdir/debian || exit 1 + + sed -e s/SERIES/$series/g \ + -e s/PPAVERS/${PPAVERS}/g \ + < ${debdir}/changelog > $topdir/debian/changelog ; + + (cd $topdir;debuild -S -sa) || break + + dput $PPANAME \ + recoll-lens_${LENSVERS}-1~ppa${PPAVERS}~${series}1_source.changes + +done + +### Unity Scope +series="trusty vivid" +series= + +debdir=debianunityscope +if test ! -d ${debdir}/ ; then + rm -f ${debdir} + ln -s ${SCOPESRC}/debian $debdir +fi +topdir=unity-scope-recoll-${SCOPEVERS} +if test "X$series" != X ; then + if test ! -f unity-scope-recoll_${SCOPEVERS}.orig.tar.gz ; then + if test -f unity-scope-recoll-${SCOPEVERS}.tar.gz ; then + mv unity-scope-recoll-${SCOPEVERS}.tar.gz \ + unity-scope-recoll_${SCOPEVERS}.orig.tar.gz + else + if test -f $RCLDOWNLOAD/unity-scope-recoll-${SCOPEVERS}.tar.gz;then + cp -p $RCLDOWNLOAD/unity-scope-recoll-${SCOPEVERS}.tar.gz \ + unity-scope-recoll_${SCOPEVERS}.orig.tar.gz || fatal copy + else + fatal "Can find neither " \ + "unity-scope-recoll_${SCOPEVERS}.orig.tar.gz nor " \ + "$RCLDOWNLOAD/unity-scope-recoll-${SCOPEVERS}.tar.gz" + fi + fi + fi + test -d $topdir || tar xvzf unity-scope-recoll_${SCOPEVERS}.orig.tar.gz \ + || exit 1 +fi +for series in $series ; do + + rm -rf $topdir/debian + cp -rp ${debdir}/ $topdir/debian || exit 1 + + sed -e s/SERIES/$series/g \ + -e s/PPAVERS/${PPAVERS}/g \ + < ${debdir}/changelog > $topdir/debian/changelog ; + + (cd $topdir;debuild -S -sa) || break + + dput $PPANAME \ + unity-scope-recoll_${SCOPEVERS}-1~ppa${PPAVERS}~${series}1_source.changes + +done diff --git a/packaging/debian/debian/README.Debian b/packaging/debian/debian/README.Debian new file mode 100644 index 00000000..3866c0a6 --- /dev/null +++ b/packaging/debian/debian/README.Debian @@ -0,0 +1,23 @@ +README for Debian +----------------- + + Installing over an older version: 1.18 introduces significant index formats + changes to support optional character case and diacritics sensitivity, and it + will be advisable to reset the index in most cases. This will be best done by + destroying the index directory (rm -rf ~/.recoll/xapiandb). + + If 1.18 is not configured for case and diacritics sensitivity, it is mostly + compatible with 1.17 indexes. + + -- Kartik Mistry Tue, 13 Nov 2012 12:33:00 +0530 + + Installing over an older version: 1.16 is mostly compatible with 1.15 indexes, + except for a few differences for weird terms containing punctuation signs. + Perform a full index pass if installing over an older version. The simplest + way to do this is to quit all recoll programs and just delete the index + directory (rm -rf ~/.recoll/xapiandb), then start recoll or recollindex. + recollindex -z will do the same in most cases. + + Also, using the anchored search feature requires a full reindex. + + -- Kartik Mistry Thu, 22 Sep 2011 21:30:05 +0530 diff --git a/packaging/debian/debian/changelog b/packaging/debian/debian/changelog new file mode 100644 index 00000000..e4bbd001 --- /dev/null +++ b/packaging/debian/debian/changelog @@ -0,0 +1,579 @@ +recoll (1.22.0-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * New build based on autotools + * Synonyms + * Windows port + + -- Jean-Francois Dockes Sat, 21 Nov 2015 16:01:00 +0200 + +recoll (1.20.6-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * Fix some decompression issues with serious performance and + system load consequences in some cases (depending on data): minimum + checking that enough temp space is available before uncompressing, no + need to uncompress tar.gz files, set a default of 20 MBs for + maxcompressedfilekbs. + * rclscribus fixes. + * GUI messages: Danish translation and fix 2 dialogs which were not + translated improvements. + + -- Jean-Francois Dockes Sat, 25 Apr 2015 14:36:00 +0200 + +recoll (1.20.4-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * Should have been in 1.20.3: skip compressed fs image files like xxx.img.gz + by default (mimemap:recoll_noindex). + + -- Jean-Francois Dockes Mon, 30 Mar 2015 10:06:00 +0200 + +recoll (1.20.3-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * fixes a bug where the real time indexer did not process the web queue + * miscellaneous usability improvements in the GUI. + * Copy sample fragbuts.xml file if it does not exist + + -- Jean-Francois Dockes Sat, 28 Mar 2015 09:40:00 +0200 + +recoll (1.20.1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.20.1 brings improved indexing of compound words like email addresses + and miscellaneous usability improvements in the GUI. + + -- Jean-Francois Dockes Fri, 19 Dec 2014 08:14:00 +0200 + +recoll (1.19.14p2-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.19.14p2 fixes Bengali diacritics processing, a memory leak in the + Python module, and a few minor issues in the filters. + + -- Jean-Francois Dockes Thu, 11 Sep 2014 07:47:00 +0200 + +recoll (1.19.14p1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.19.14p1 fixes a descriptor and memory leak in the Python module. The + main programs and library are unchanged. + + -- Jean-Francois Dockes Thu, 26 Jun 2014 13:14:00 +0200 + +recoll (1.19.14-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.19.14 fixes two relatively minor but ennoying issues in indexing: + + - The use of a separate readonly Database object for querying the index + while indexing would trigger Xapian errors, (bad block reads), and + subsequent up-to-date check failures (leading to unnecessary + reindexing). The jury is out as to the cause, but using the same + object for reading and writing seems to eliminate the problem. + + - A spurious log message in the child process between forking and + executing the filter could block on a mutex, and lead to a 20 mn + timeout for the affected father process thread (happened only in + multithread mode). + + -- Jean-Francois Dockes Sat, 07 Jun 2014 18:56:00 +0200 + +recoll (1.19.13-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.19.13 hopefully fixes the multithreaded indexing crashes and silences + the noisy ppt extractor failures. + + -- Jean-Francois Dockes Thu, 06 May 2014 14:22:00 +0200 + +recoll (1.19.12p2-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.19.12 p1 + restable doubleclick + + -- Jean-Francois Dockes Sun, 07 Apr 2014 16:17:00 +0200 + +recoll (1.19.12p1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * 1.19.12 install forgot the xls filter + + -- Jean-Francois Dockes Sun, 06 Apr 2014 06:57:00 +0200 + +recoll (1.19.12-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * Minor fixes to 1.19.11. Make metadata stored length a parameter. + * New xls dumper based on mso-dumper removes catdoc dependancy + * Move out the code for the Ubuntu Unity lens and scope + + -- Jean-Francois Dockes Mon, 02 Apr 2014 15:12:00 +0200 + +recoll (1.19.11p1-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * minor fixes to 1.19.10 + + -- Jean-Francois Dockes Mon, 27 Nov 2013 09:54:00 +0200 + +recoll (1.19.10-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * Support for saucy in 1.19. Separate python and python3 packages + + -- Jean-Francois Dockes Sat, 23 Nov 2013 16:01:46 +0100 + +recoll (1.18.1-1) experimental; urgency=low + + * New upstream version: + + Please read README.Debian for changes in index db format. + * debian/patches/txtcsvopen.diff: + + Dropped. Merged upstream. + * debian/patches/fix-manpage-typos.patch: + + Added patch to fix manpage typos and groff errors. + * debian/control: + + Added VCS-* fields. + + -- Kartik Mistry Tue, 13 Nov 2012 12:29:46 +0530 + +recoll (1.17.3-2) unstable; urgency=medium + + * debian/rules: + + Call dh_python2 for python-recoll. (Closes: #681586) + * debian/control: + + Added X-Python-Version field for correct Python version dependency. + + -- Kartik Mistry Sat, 14 Jul 2012 20:20:56 +0530 + +recoll (1.17.3-1) unstable; urgency=low + + * New upstream release. + * debian/patches/txtcsvopen.diff: + + Added patch to fix opening of compressed text-files with gnumeric. + (Closes: #674756) + + -- Kartik Mistry Fri, 08 Jun 2012 11:46:57 +0530 + +recoll (1.17.2-1) unstable; urgency=low + + * New upstream release: + + Dropped patches: fix-kFreeBSD-ftbfs.patch, recoll_ionice_getpid.patch. + These are merged with upstream. + + Refreshed patch: fix-python-install.patch. + * debian/rules, debian/control: + + Added hardening support. + * debian/copyright: + + Fixed duplicate Copyright sections. + + -- Kartik Mistry Fri, 18 May 2012 10:59:21 +0530 + +recoll (1.17.1-2) unstable; urgency=low + + * debian/patches: + + fix-kFreeBSD-ftbfs.patch: Added patch to fix FTBFS on kFreeBSD from + upstream (Closes: #667083) + + recoll_ionice_getpid.patch: Added patch to fix FTBFS with gcc-4.7 from + upstream (Closes: #667352) + + -- Kartik Mistry Wed, 04 Apr 2012 12:16:48 +0530 + +recoll (1.17.1-1) unstable; urgency=low + + * New upstream release. + * Enable Python module resulting into new binary: python-recoll. + * debian/control: + + Updated Build-Deps: libqtwebkit-dev, python-all-dev. + + Added python-recoll binary. + + Updated Standards-Version to 3.9.3 + * debian/rules: + + Build Python module by default. + * debian/recoll.menu, debian/python-recoll.install, debian/recoll.install: + + Changes for new binary package. + * debian/copyright: + + Updated to copyright-format 1.0 + + Updated upstream and Debian copyright. + + Fixed unicode.org/copyright.html URL. + + -- Kartik Mistry Tue, 27 Mar 2012 12:15:51 +0530 + +recoll (1.16.2-1) unstable; urgency=low + + * New upstream release. + * debian/copyright: + + Updated as per DEP-5 format, simplying copyright file. + * debian/control: + + Dropped: flac, vorbis-tools and libid3-tools from Suggests, as + python-mutagen handles audio now. + + Dropped: lyx from Suggests, as it will be too heavy for most of users as + discussed with upstream. + * debian/rules: + + Use STRIP variable to strip during install phase. This makes patch + 01_nostrip_final_binaries_437901.diff obsolete, removed this patch. + + -- Kartik Mistry Wed, 09 Nov 2011 20:35:16 +0530 + +recoll (1.16.1-1) unstable; urgency=low + + * New upstream release. + * debian/copyright: + + Added missing GPL-3 URL in debian/* copyright section. + + -- Kartik Mistry Thu, 29 Sep 2011 10:06:54 +0530 + +recoll (1.16.0-1) unstable; urgency=low + + * New upstream release: + + See README.Debian for upgrade note and information. + * debian/copyright: + + Updated as per latest DEP-5 format. + * debian/control: + + Recommends: xdg-utils now. + * debian/rules: + + Added recommends build targets. + + -- Kartik Mistry Thu, 22 Sep 2011 21:30:25 +0530 + +recoll (1.15.9-1) unstable; urgency=low + + * New upstream release: + + Dropped patch 02_recoll_staticfix_626882.diff, merged upstream + + -- Kartik Mistry Wed, 15 Jun 2011 09:20:20 +0530 + +recoll (1.15.8-2) unstable; urgency=low + + * debian/patches/02_recoll_staticfix_626882.diff: + + Added patch to fix segfault in 1.15.8. Patch from Jean-Francois Dockes + (Closes: #626882) + + -- Kartik Mistry Tue, 17 May 2011 09:57:50 +0530 + +recoll (1.15.8-1) unstable; urgency=low + + * New upstream release. + * debian/patches/02_kfreebsd-ftbfs.diff: + + Removed. Merged with upstream. + * debian/control: + + Updated to Standards-Version 3.9.2 (no changes needed) + + -- Kartik Mistry Thu, 12 May 2011 09:47:21 +0530 + +recoll (1.15.7-2) unstable; urgency=low + + * Applied patch 02_kfreebsd-ftbfs.diff from upstream to fix FTBFS + on kFreeBSD-* (Closes: #618796) + * debian/copyright: + + Updated to latest DEP-5 specification + + -- Kartik Mistry Fri, 15 Apr 2011 18:38:54 +0530 + +recoll (1.15.7-1) unstable; urgency=low + + * New upstream release: + + Fixed: Segmentation fault when file type radio button clicked. + (Closes: #617353) + * debian/patches/02_manpage_fix.diff: + + Removed. Merged with upstream. + + -- Kartik Mistry Sun, 13 Mar 2011 09:07:57 +0530 + +recoll (1.15.2-1) unstable; urgency=low + + * Upload to unstable + * New upstream release + * debian/patches: + + Refreshed 01_nostrip_final_binaries_437901.diff + + Added 02_manpage_fix.diff to fix manpage groff issues + + -- Kartik Mistry Tue, 15 Feb 2011 11:25:58 +0530 + +recoll (1.14.4-1) experimental; urgency=low + + * New upstream release + * debian/copyright: + + Updated for DEP-5 format specification + + -- Kartik Mistry Thu, 02 Dec 2010 00:29:06 +0530 + +recoll (1.14.2-1) experimental; urgency=low + + * New upstream release + * debian/control: + + Added xlstproc as Recommends (Closes: #587684) + + Added python-mutagen as Suggests + * debian/patches: + + Refreshed 01_nostrip_final_binaries_437901.diff + + Removed 02_recoll-prepare-for-xapian-1.2.diff, merged with upstream + + -- Kartik Mistry Mon, 27 Sep 2010 17:52:17 +0530 + +recoll (1.13.04-3) unstable; urgency=low + + * Added patch for xapian 1.2 compatibility from Olly Betts + (Closes: #579929) + + -- Kartik Mistry Mon, 03 May 2010 09:47:16 +0530 + +recoll (1.13.04-2) unstable; urgency=low + + * debian/control: + + Added missing packages to Suggests: flac, libid3-tools, lyx, pstotext, + python-chm, untex, vorbis-tools Thanks to Ivan Vilata i Balaguer + (Closes: #578441) + + -- Kartik Mistry Fri, 23 Apr 2010 11:07:00 +0530 + +recoll (1.13.04-1) unstable; urgency=low + + * New upstream release + + -- Kartik Mistry Fri, 16 Apr 2010 10:39:02 +0530 + +recoll (1.13.02-2) unstable; urgency=low + + * debian/control: + + Don't suggest xpdf (Closes: #569333) + * debian/copyright: + + Updated Debian package copyright year + * Removed unused README.source file + + -- Kartik Mistry Fri, 19 Feb 2010 10:42:53 +0530 + +recoll (1.13.02-1) unstable; urgency=low + + * New upstream release + * debian/control: + + Updated to Standards-Version 3.8.4 (no changes needed) + + -- Kartik Mistry Wed, 03 Feb 2010 11:00:53 +0530 + +recoll (1.13.01-1) unstable; urgency=low + + * New upstream release + + Fixed bug that causes field values ignored for Capitalized words and + phrases + + -- Kartik Mistry Fri, 08 Jan 2010 10:09:15 +0530 + +recoll (1.13.00-1) unstable; urgency=low + + * New upstream release + * debian/control: + + Fixed package descriptions, replaced QT->Qt (Closes: #563725) + * debian/patches/01_nostrip_final_binaries_437901.diff: + + Refreshed patch for upstream changes + * Converted package to new source format '3.0 (quilt)' + + -- Kartik Mistry Tue, 05 Jan 2010 23:23:30 +0530 + +recoll (1.12.4-1) unstable; urgency=low + + * New upstream release: + + Fixed FTBFS with binutils-gold (Closes: #556315) + + -- Kartik Mistry Fri, 11 Dec 2009 00:08:37 +0530 + +recoll (1.12.3-1) unstable; urgency=low + + * New upstream release + * debian/control: + + Updated Build-Depends on libqt4-dev as we are building Qt4 ui now + * debian/rules: + + Make sure that we call qmake-qt4 + + -- Kartik Mistry Thu, 29 Oct 2009 22:44:50 +0530 + +recoll (1.12.2-1) unstable; urgency=low + + * New upstream release: + + Dropped patch 02_manpage_fixes.diff, merged with upstream + * Added debian/README.source file to confirm with latest policy + * Removed debian/docs, we are using dh_installdocs in debian/rules + * debian/control: + + Wrapped up Build-Depends + + Depends on quilt, since patch system is using quilt now + + Updated to Standards-Version 3.8.3 + + Updated dependency on libxapian-dev (>= 1.0.15) + * debian/rules: + + Changes for quilt migration + + -- Kartik Mistry Fri, 23 Oct 2009 10:14:05 +0530 + +recoll (1.12.1-1) unstable; urgency=low + + * New upstream release + * debian/control: + + Updated to Standards-Version 3.8.2 (no changes needed) + * debian/copyright: + + [Lintian] Removed licenses URL links to symlink + + -- Kartik Mistry Sat, 27 Jun 2009 20:08:28 +0530 + +recoll (1.12.0-1) unstable; urgency=low + + * New upstream release + * debian/copyright: + + [Lintian] Updated for use of correct copyright symbol © instead of (C) + + Updated Debian packaging copyright year + * debian/rules: + + Used dh_prep instead of deprecated dh_clean -k + * debian/control: + + Updated debhelper dependency to 7 + * debian/patches: + + Dropped 02_gcc-snapshot-missing-headers-fix.dpatch, merged with upstream + + Added patch 02_manpage_fixes.dpatch for groff warnings + + -- Kartik Mistry Sat, 28 Feb 2009 14:33:53 +0530 + +recoll (1.11.0-2) unstable; urgency=low + + * debian/control: + + Added versioned build-dep on libxapian-dev, Thanks to Brad Sawatzky + for catch (Closes: #507473) + + Add libimage-exiftool-perl as Suggests in which I forgot in + previous upload + * debian/changelog: + + Fixed typo from previous upload entry + + -- Kartik Mistry Wed, 03 Dec 2008 15:05:55 +0530 + +recoll (1.11.0-1) unstable; urgency=low + + * New upstream release: + + Remembers missing filters in first run (Closes: #500690) + * debian/control: + + Added libimage-exiftool-perl as Suggests (Closes: #502427) + + Added Python as recommaded due to filters/rclpython script + although, its not necessary as it will be installed only + when Python is present + * debian/patches: + + Refreshed patch for gcc 4.4 FTBFS (Closes: #505376) + * debian/copyright: + + Updated for newly added filter and image files + + -- Kartik Mistry Thu, 13 Nov 2008 21:18:15 +0530 + +recoll (1.10.6-1) unstable; urgency=low + + * New upstream release + + Fixed typo in tooltip in indexing configuration (Closes: #486689) + + Dropped patch 03_manpage_fixes.dpatch, merged with upstream + * debian/control: + + Updated to Standards-Version 3.8.0 (no changes needed) + + Updated my maintainer email address + * debian/copyright: + + Updated my maintainer email address + + Updated license text to proposed license format + + Updated upstream copyright year + + -- Kartik Mistry Thu, 11 Sep 2008 16:06:48 +0530 + +recoll (1.10.2-1) unstable; urgency=low + + * New upstream release + + Updated patch debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch + Some portions are now merged with upstream + * debian/copyright: + + Fixed indentation to 80 characters + + Updated Debian package copyright year + + -- Kartik Mistry Thu, 29 May 2008 23:25:40 +0530 + +recoll (1.10.1-1) unstable; urgency=low + + * New upstream release + + Updated debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch + Some portions are merged with upstream + * debian/control: + + Fixed short description, Thanks to Mohammed Adnène Trojette + + * debian/patches/03_manpage_fixes.dpatch: + + Added patch to fix manpage groff warnings + + -- Kartik Mistry Wed, 27 Feb 2008 18:41:25 +0530 + +recoll (1.10.0-5) unstable; urgency=low + + * debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch: + + Really fixed the FTBFS with gcc-4.3/g++-4.3 (Closes: #455652) + + -- Kartik Mistry Sun, 27 Jan 2008 14:37:53 +0530 + +recoll (1.10.0-4) unstable; urgency=low + + * debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch: + + Updated patch to fix missing include header in qtgui/main.cpp + (Closes: #455652) + * debian/copyright: + + Updated missing license for qtgui/q3richtext_p.h + + Moved other copyright holders for GPL above license + to make it readable + + -- Kartik Mistry Wed, 23 Jan 2008 10:42:20 +0530 + +recoll (1.10.0-3) unstable; urgency=low + + * debian/control: + + Added external helper programs and utilities to Suggests field + (Closes: #441629, #457033) + + -- Kartik Mistry Fri, 28 Dec 2007 08:12:52 +0530 + +recoll (1.10.0-2) unstable; urgency=low + + * debian/control: + + Updated Standards-Version to 3.7.3 + * debian/patches/02_gcc-snapshot-missing-headers-fix.dpatch: + + Added patch to fix compilation with gcc-snapshot due to + missing headers (Closes: #455652) + * debian/rules: + + Fixed clean target + + -- Kartik Mistry Tue, 11 Dec 2007 14:42:47 +0530 + +recoll (1.10.0-1) unstable; urgency=low + + * New upstream release + * debian/control: + + Moved Homepage: entry to control field + + Dropped unnecessary dependency on qt3-dev-tools + + -- Kartik Mistry Wed, 28 Nov 2007 19:54:58 +0530 + +recoll (1.9.0-1) unstable; urgency=low + + * New upstream release + * debian/patches: dropped 02_desktop_entry_fixes.dpatch, merged with + upstream, rewrote 01_nostrip_final_binary_437901.dpatch after upstream + changes + * debian/menu: used Data Management since it is better and appropriate + * debian/copyright: added missing copyright from index/csguess.cpp + + -- Kartik Mistry Wed, 12 Sep 2007 14:05:39 +0530 + +recoll (1.8.2-3) unstable; urgency=low + + * debian/rules: added better clean target, better configure flags, + separated LDFLAGS + * Added dpatch support + * debian/patches/01_nostrip_final_binary_437901.dpatch: added patch to not + strip binary from upstream (Closes: #437901) + * debian/patches/02_desktop_entry_fixes.dpatch: added patch to fix desktop + menu entry according to freedesktop standards + * debian/menu: fixed according to latest menu policy, changed subsection to + Tools from Databases (hint taken from beagle) + * debian/copyright: moved copyright out of license section, adjusted + copyrights portions under proper license + + -- Kartik Mistry Sat, 18 Aug 2007 20:28:49 +0530 + +recoll (1.8.2-2) unstable; urgency=low + + * debian/rules: xapian is dynamically linked now, Thanks to + Jean-Francois Dockes (Closes: #427783) + * Fixed debian/watch file, Thanks to Vincent Fourmond + + -- Kartik Mistry Fri, 08 Jun 2007 10:51:01 +0530 + +recoll (1.8.2-1) unstable; urgency=low + + * New upstream release + * debian/watch: fixed now + * debian/control: fixed long descriptions + + -- Kartik Mistry Tue, 22 May 2007 15:24:54 +0530 + +recoll (1.8.1-1) unstable; urgency=low + + * Initial release (Closes: #422039) + * Based on package prepared by Jean-Francois Dockes + + -- Kartik Mistry Thu, 3 May 2007 12:15:02 +0530 diff --git a/packaging/debian/debian/compat b/packaging/debian/debian/compat new file mode 100644 index 00000000..7ed6ff82 --- /dev/null +++ b/packaging/debian/debian/compat @@ -0,0 +1 @@ +5 diff --git a/packaging/debian/debian/control b/packaging/debian/debian/control new file mode 100644 index 00000000..9b280e9f --- /dev/null +++ b/packaging/debian/debian/control @@ -0,0 +1,85 @@ +Source: recoll +Section: x11 +Priority: optional +Maintainer: Jean-Francois Dockes +Build-Depends: autotools-dev, + debhelper (>= 7), + dh-python, + bison, + libqt4-dev, + libqtwebkit-dev, + libx11-dev, + libxapian-dev (>= 1.2.0), + libz-dev, + python-all-dev (>= 2.6.6-3~), + python3-all-dev, +Standards-Version: 3.9.6 +X-Python-Version: >= 2.7 +Homepage: http://www.lesbonscomptes.com/recoll +Vcs-Git: git://anonscm.debian.org/collab-maint/recoll.git +Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/recoll.git;a=summary + +Package: recoll +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, python2, python +Recommends: python-recoll, aspell, xdg-utils, xsltproc +Suggests: antiword, + catdoc, + ghostscript, + libimage-exiftool-perl, + poppler-utils, + pstotext, + python-chm, + python-mutagen, + unrtf, + untex +Description: Personal full text search package with a Qt GUI + This package is a personal full text search package is based on a very strong + backend (Xapian), for which it provides an easy to use and feature-rich + interface. + . + Features: + * Qt-based GUI + * Supports the following document types (and their compressed versions) + - Natively: text, html, OpenOffice files, maildir and mailbox (Mozilla and + IceDove mail) with attachments, pidgin log files + - With external helpers: pdf (pdftotext), postscript (ghostscript), msword + (antiword), excel, ppt (catdoc), rtf (unrtf) + * Powerful query facilities, with boolean searches, phrases, filter on file + types and directory tree + * Support for multiple charsets, Internal processing and storage uses Unicode + UTF-8 + * Stemming performed at query time (can switch stemming language after + indexing) + * Easy installation. No database daemon, web server or exotic language + necessary + * An indexer which runs either as a thread inside the GUI or as an external, + cron'able program + +Package: python-recoll +Architecture: any +Section: python +Depends: recoll (= ${binary:Version}), + ${misc:Depends}, + ${python:Depends}, + ${shlibs:Depends} +Description: Python extension for recoll + Personal full text search package which is based on a very strong backend + (Xapian), for which it provides an easy to use and feature-rich interface. + . + This package provides Python extension module for recoll which can be use to + extend recoll such as an Ubuntu Unity Lens. + +Package: python3-recoll +Architecture: any +Section: python +Depends: recoll (= ${binary:Version}), + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends} +Description: Python extension for recoll + Personal full text search package which is based on a very strong backend + (Xapian), for which it provides an easy to use and feature-rich interface. + . + This package provides Python extension module for recoll which can be use to + extend recoll such as an Ubuntu Unity Lens. diff --git a/packaging/debian/debian/copyright b/packaging/debian/debian/copyright new file mode 100644 index 00000000..95e5bc31 --- /dev/null +++ b/packaging/debian/debian/copyright @@ -0,0 +1,194 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: recoll +Upstream-Contact: Jean-Francois Dockes +Source: http://www.lesbonscomptes.com/recoll/ + +Files: * +Copyright: 2005-2012, Jean-Francois Dockes +License: GPL-2+ + +Files: Binc IMAP project (bincimapmime/*) +Copyright: 2002-2005, Andreas Aardal Hanssen +License: GPL-2+ + +Files: filters/rcl* files index/csguess.cpp internfile/htmlparse.cpp +Copyright: 2000-2004, Mikio Hirabayashi +License: GPL-2+ + +Files: filters/rclpython +Copyright: J\xfcrgen Hermann, Mike Brown, Christopher Arndt + +License: GPL-2+ + +Files: internfile/htmlparse.cpp mh_html.cpp +Copyright: 1999-2001, BrightStation PLC, + 2001, Ananova Ltd, + 2002-2004, Olly Betts. +License: GPL-2+ + +Files: unac/* +Copyright: 2000-2002, Loic Dachary +License: GPL-2+ + +Files: common/* +Copyright: 2004-2005, J.F.Dockes +License: GPL-2+ + +Files: debian/* +Copyright: 2007-2012, Kartik Mistry +License: GPL-2+ + +License: GPL-2+ + This package 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 package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin + St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU General Public License can be + found in `/usr/share/common-licenses/GPL-2' and + `/usr/share/common-licenses/GPL-3'. + +Files: aspell/* +Copyright: 2001-2002, by Kevin Atkinson +License: LGPL-2+ + +Files: images/text-x-python.png +Copyright: David Vignoni +License: LGPL-2+ + +License: LGPL-2+ + This package is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at your option) any + later version. + . + This package 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 Lesser General Public License for more + details. + . + You should have received a copy of the GNU Lesser General Public License along + with this package; if not, write to the Free Software Foundation, Inc., 51 + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU Lesser General Public License + can be found in `/usr/share/common-licenses/LGPL-2' and + `/usr/share/common-licenses/LGPL-2.1' and `/usr/share/common-licenses/LGPL-3'. + +Files: common/uproplist.h +Copyright: 1991-2006, Unicode, Inc. +License: Unicode + +License: Unicode + All rights reserved. Distributed under the Terms of Use in + http://www.unicode.org/copyright.html + . + Permission is hereby granted, free of charge, to any person obtaining a copy + of the Unicode data files and any associated documentation (the "Data Files") + or Unicode software and any associated documentation (the "Software") to deal + in the Data Files or Software without restriction, including without + limitation the rights to use, copy, modify, merge, publish, distribute, and/or + sell copies of the Data Files or Software, and to permit persons to whom the + Data Files or Software are furnished to do so, provided that (a) the above + copyright notice(s) and this permission notice appear with all copies of the + Data Files or Software, (b) both the above copyright notice(s) and this + permission notice appear in associated documentation, and (c) there is clear + notice in each modified Data File or in the Software as well as in the + documentation associated with the Data File(s) or Software that the data or + software has been modified. + . + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD + PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN + THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL + DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE + DATA FILES OR SOFTWARE. + . + Except as contained in this notice, the name of a copyright holder shall not + be used in advertising or otherwise to promote the sale, use or other dealings + in these Data Files or Software without prior written authorization of the + copyright holder. + +Files: utils/md5.* +Copyright: 1991-1992, RSA Data Security, Inc. All rights reserved. +License: RSA + +License:RSA + MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm + . + License to copy and use this software is granted provided that it is + identified as the "RSA Data Security, Inc. MD5 Message-Digest Algorithm" in + all material mentioning or referencing this software or this function. + . + License is also granted to make and use derivative works provided that such + works are identified as "derived from the RSA Data Security, Inc. MD5 + Message-Digest Algorithm" in all material mentioning or referencing the + derived work. + . + RSA Data Security, Inc. makes no representations concerning either the + merchantability of this software or the suitability of this software for any + particular purpose. It is provided "as is" without express or implied warranty + of any kind. + . + These notices must be retained in any copies of any part of this documentation + and/or software. + +Files: desktop/xdg-utils-1.0.1/* +Copyright: 2006, Kevin Krammer , + Jeremy White . +License: MIT + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Files: index/csguess.cpp +Copyright: 2000-2004, Mikio Hirabayashi +License: LGPL-2.1+ + +License: LGPL-2.1+ + This file is part of QDBM, Quick Database Manager. + . + QDBM is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the + Free Software Foundation; either version 2.1 of the License or any later + version. + . + QDBM 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 Lesser General Public + License for more details. + . + You should have received a copy of the GNU Lesser General Public License + along with QDBM; if not, write to the Free Software Foundation, Inc., + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + . + On Debian systems, the complete text of the GNU Lesser General Public License + can be found in `/usr/share/common-licenses/LGPL-2.1' and + `/usr/share/common-licenses/LGPL-3'. diff --git a/packaging/debian/debian/patches/series b/packaging/debian/debian/patches/series new file mode 100644 index 00000000..e69de29b diff --git a/packaging/debian/debian/python-recoll.install b/packaging/debian/debian/python-recoll.install new file mode 100644 index 00000000..ae42f11b --- /dev/null +++ b/packaging/debian/debian/python-recoll.install @@ -0,0 +1,2 @@ +usr/lib/python2*/*-packages/*.egg-info +usr/lib/python2*/*-packages/recoll/* diff --git a/packaging/debian/debian/python3-recoll.install b/packaging/debian/debian/python3-recoll.install new file mode 100644 index 00000000..b0bb287d --- /dev/null +++ b/packaging/debian/debian/python3-recoll.install @@ -0,0 +1,2 @@ +usr/lib/python3*/*-packages/*.egg-info +usr/lib/python3*/*-packages/recoll/* diff --git a/packaging/debian/debian/recoll.install b/packaging/debian/debian/recoll.install new file mode 100644 index 00000000..e423a69c --- /dev/null +++ b/packaging/debian/debian/recoll.install @@ -0,0 +1,12 @@ +usr/bin +usr/lib/recoll +usr/share/applications +usr/share/icons +usr/share/man +usr/share/pixmaps +usr/share/recoll/doc +usr/share/recoll/examples +usr/share/recoll/filters +usr/share/recoll/filters +usr/share/recoll/images +usr/share/recoll/translations diff --git a/packaging/debian/debian/recoll.menu b/packaging/debian/debian/recoll.menu new file mode 100644 index 00000000..f0abea35 --- /dev/null +++ b/packaging/debian/debian/recoll.menu @@ -0,0 +1,2 @@ +?package(recoll):needs="X11" section="Applications/Data Management" \ + title="Personal Search Tool" command="/usr/bin/recoll" diff --git a/packaging/debian/debian/rules b/packaging/debian/debian/rules new file mode 100755 index 00000000..5889c8cf --- /dev/null +++ b/packaging/debian/debian/rules @@ -0,0 +1,89 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/buildflags.mk + +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +CFLAGS += -Wall -g +#LDFLAGS += -Wl,-z,defs + +#build qt4 UI only +export QMAKE=qmake-qt4 + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +config.status: configure + dh_testdir + ./configure CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --mandir=\$${prefix}/share/man \ + --prefix=/usr + +build: build-arch build-indep +build-arch: build-stamp +build-indep: build-stamp +build-stamp: config.status + dh_testdir + $(MAKE) -j 5 + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp config.log + [ ! -f Makefile ] || $(MAKE) distclean + dh_clean Makefile + +install: + dh_testdir + dh_testroot + dh_prep + dh_installdirs + $(MAKE) prefix=$(CURDIR)/debian/tmp/usr install + chmod a+x $(CURDIR)/debian/tmp/usr/share/recoll/examples/rclmon.sh + chmod a-x $(CURDIR)/debian/tmp/usr/share/recoll/filters/rclxslt.py + chmod a-x $(CURDIR)/debian/tmp/usr/share/recoll/filters/rclexec1.py + chmod a-x $(CURDIR)/debian/tmp/usr/share/recoll/filters/rclexec1.py + rm -f $(CURDIR)/debian/tmp/usr/lib/recoll/librecoll.la + (cd python/recoll; python setup.py install \ + --install-layout=deb \ + --prefix=$(CURDIR)/debian/tmp/usr ) + (cd python/recoll; python3 setup.py install \ + --install-layout=deb \ + --prefix=$(CURDIR)/debian/tmp/usr ) + +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs README + dh_installmenu + dh_installman + dh_install --sourcedir=debian/tmp + dh_makeshlibs + dh_python2 -p python-recoll + dh_python3 -p python3-recoll + dh_link + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary-indep: build install + +binary: binary-indep binary-arch +.PHONY: build build-arch build-indep clean binary-indep binary-arch binary install diff --git a/packaging/debian/debian/source/format b/packaging/debian/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/packaging/debian/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/packaging/debian/debian/watch b/packaging/debian/debian/watch new file mode 100644 index 00000000..e5daae09 --- /dev/null +++ b/packaging/debian/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://www.lesbonscomptes.com/recoll/download.html recoll-(.*)\.tar\.gz diff --git a/packaging/debian/debiankio/changelog b/packaging/debian/debiankio/changelog new file mode 100644 index 00000000..1cf089c0 --- /dev/null +++ b/packaging/debian/debiankio/changelog @@ -0,0 +1,92 @@ +kio-recoll (1.21.0-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * No changes specific to the KIO, just use the 1.21 lib. + + -- Jean-Francois Dockes Tue, 16 Jun 2015 18:21:00 +0200 + +kio-recoll (1.20.6-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + + * Increase the default maximum number of entries displayed in a directory + window (can be adjusted with the kio_max_direntries configuration + variable). + * Display entries incrementally instead of sending the whole + list at once. + + -- Jean-Francois Dockes Sat, 25 Apr 2015 14:47:00 +0200 + +kio-recoll (1.20.1-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to version 1.20.1 + -- Jean-Francois Dockes Fri, 19 Dec 2014 08:14:00 +0200 + +kio-recoll (1.19.14p2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * No changes, build for Ubuntu Utopic + -- Jean-Francois Dockes Sat, 06 Dec 2014 08:44:00 +0200 + +kio-recoll (1.19.12-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.19.12 + -- Jean-Francois Dockes Wed, 02 Apr 2014 15:50:00 +0200 + +kio-recoll (1.19.10-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.19.10 + -- Jean-Francois Dockes Sat, 25 Nov 2013 18:00:00 +0100 + +kio-recoll (1.19.2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.19.2 + -- Jean-Francois Dockes Mon, 13 May 2013 12:09:00 +0100 + +kio-recoll (1.18.2-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.18.2 + -- Jean-Francois Dockes Mon, 18 Apr 2013 18:05:00 +0100 + +kio-recoll (1.18.1-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.18.1 + -- Jean-Francois Dockes Mon, 05 Nov 2012 13:25:00 +0100 + +kio-recoll (1.17.0-0~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.17.0 + -- Jean-Francois Dockes Sun, 25 Mar 2012 18:05:00 +0200 + +kio-recoll (1.16.2-0~ppa1~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.16.2 + -- Jean-Francois Dockes Mon, 07 Nov 2011 17:57:00 +0200 + +kio-recoll (1.16.1-0~ppa1~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.16.1 + -- Jean-Francois Dockes Wed, 28 Sep 2011 15:07:00 +0200 + +kio-recoll (1.16.0-0~ppa1~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.16.0 + -- Jean-Francois Dockes Wed, 07 Sep 2011 18:30:00 +0200 + +kio-recoll (1.15.8-0~ppa1~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.15.8 + -- Jean-Francois Dockes Mon, 02 May 2011 17:27:00 +0200 + +kio-recoll (1.15.5-0~ppa1~SERIES1) SERIES; urgency=low + * Update to recoll version 1.15.5 + -- Jean-Francois Dockes Fri, 04 Mar 2011 13:54:00 +0200 + +kio-recoll (1.15.2-0~ppa1~SERIES1) SERIES; urgency=low + * Update to recoll version 1.15.2 + -- Jean-Francois Dockes Thu, 15 Feb 2011 08:43:00 +0200 + +kio-recoll (1.15.0-0~ppa1~SERIES1) SERIES; urgency=low + * Update to recoll version 1.15.0 + -- Jean-Francois Dockes Wed, 02 Feb 2011 09:48:00 +0200 + +kio-recoll (1.14.3-0~ppa1~SERIES1) SERIES; urgency=low + * Update to recoll version 1.14.3 + -- Jean-Francois Dockes Thu, 25 Nov 2010 10:25:00 +0200 + +kio-recoll (1.14.2-0~ppa1~SERIES1) SERIES; urgency=low + * Update to recoll version 1.14.2 + -- Jean-Francois Dockes Sat, 25 Sep 2010 09:37:20 +0200 + +kio-recoll (1.13.01-0~ppa4~SERIES1) SERIES; urgency=low + * Update to recoll version 1.13.01 + -- Jean-Francois Dockes Thu, 07 Jan 2010 11:26:00 +0100 + +kio-recoll (1.12.3-0~ppa4~jaunty1) jaunty; urgency=low + * Initial release + -- Jean-Francois Dockes Tue, 24 Nov 2009 08:55:00 +0100 + diff --git a/packaging/debian/debiankio/compat b/packaging/debian/debiankio/compat new file mode 100644 index 00000000..7f8f011e --- /dev/null +++ b/packaging/debian/debiankio/compat @@ -0,0 +1 @@ +7 diff --git a/packaging/debian/debiankio/control b/packaging/debian/debiankio/control new file mode 100644 index 00000000..a86b79f8 --- /dev/null +++ b/packaging/debian/debiankio/control @@ -0,0 +1,32 @@ +Source: kio-recoll +Section: kde +Priority: extra +Maintainer: Jean-Francois Dockes +Build-Depends: cdbs, + cmake, + debhelper (>= 7), + bison, + kdelibs5-dev (>= 4:4.2.2), + pkg-kde-tools (>= 0.4.0), + libxapian-dev, + libz-dev +Standards-Version: 3.9.5 +Homepage: http://www.recoll.org/ + +Package: kio-recoll +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends}, recoll +Description: A Recoll KIO slave for KDE 4 + A Recoll KIO slave for KDE 4, allows performing a Recoll search by + entering an appropriate URL in a KDE open dialog, or with an HTML-based + interface displayed in Konqueror. + The HTML-based interface is similar to the Recoll GUI QT-based interface, + slightly less powerful. It allows performing a search while staying fully + within the KDE framework: drag and drop from the result list works + normally and you have your normal choice of applications for opening files. + An alternative interface uses a directory view of search results. Due to + limitations in the current KIO slave interface, it is currently not + obviously useful. + The interface is described in more detail inside a help file which you can + access by entering recoll:/ inside the konqueror URL line (this works only + if the recoll KIO slave has been previously installed). diff --git a/packaging/debian/debiankio/copyright b/packaging/debian/debiankio/copyright new file mode 100644 index 00000000..3cb35945 --- /dev/null +++ b/packaging/debian/debiankio/copyright @@ -0,0 +1,113 @@ +This package was debianized by Jean-Francois Dockes on +Wed, 10 Jan 2007 16:04:13 +0100. + +It was downloaded from http://www.recoll.org + +Upstream Author: Jean-Francois Dockes + +Copyright: (C) 2005,2006, Jean-Francois Dockes + +License: + + This package 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 package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is (C) 2007, Jean-Francois Dockes and +is licensed under the GPL, see above. + +Portions of the software are: + +Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL: +/* This file is part of The New Aspell + * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL + * license version 2.0 or 2.1. You should have received a copy of the + * LGPL license along with this library if you did not you can find it + * at http://www.gnu.org/. + +On Debian systems, the complete text of the GNU LGPL +can be found in `/usr/share/common-licenses/LGPL-2'. + + +Copyright 2002-2005 Andreas Aardal Hanssen +Copyright (C) 2000-2004 Mikio Hirabayashi +Copyright 1999,2000,2001 BrightStation PLC +Copyright 2001 Ananova Ltd +Copyright 2002 Olly Betts +Copyright (C) 2000, 2001, 2002 Loic Dachary + - GPL V2 or later, same license text as above + +Copyright (c) 1991-2004 Unicode, Inc. + + COPYRIGHT AND PERMISSION NOTICE + + Copyright © 1991-2006 Unicode, Inc. All rights reserved. Distributed under + the Terms of Use in http://www.unicode.org/copyright.html. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of the Unicode data files and any associated documentation (the "Data + Files") or Unicode software and any associated documentation (the + "Software") to deal in the Data Files or Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, and/or sell copies of the Data Files or Software, and + to permit persons to whom the Data Files or Software are furnished to do + so, provided that (a) the above copyright notice(s) and this permission + notice appear with all copies of the Data Files or Software, (b) both the + above copyright notice(s) and this permission notice appear in associated + documentation, and (c) there is clear notice in each modified Data File or + in the Software as well as in the documentation associated with the Data + File(s) or Software that the data or software has been modified. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR + CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THE DATA FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in these Data Files or Software without prior written + authorization of the copyright holder. + +Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +/* + * MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm + * + * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All + * rights reserved. + * + * License to copy and use this software is granted provided that it + * is identified as the "RSA Data Security, Inc. MD5 Message-Digest + * Algorithm" in all material mentioning or referencing this software + * or this function. + * + * License is also granted to make and use derivative works provided + * that such works are identified as "derived from the RSA Data + * Security, Inc. MD5 Message-Digest Algorithm" in all material + * mentioning or referencing the derived work. + * + * RSA Data Security, Inc. makes no representations concerning either + * the merchantability of this software or the suitability of this + * software for any particular purpose. It is provided "as is" + * without express or implied warranty of any kind. + * + * These notices must be retained in any copies of any part of this + * documentation and/or software. + */ diff --git a/packaging/debian/debiankio/dirs b/packaging/debian/debiankio/dirs new file mode 100644 index 00000000..ec620536 --- /dev/null +++ b/packaging/debian/debiankio/dirs @@ -0,0 +1,2 @@ +usr/lib/kde4 +usr/share/kde4/services diff --git a/packaging/debian/debiankio/docs b/packaging/debian/debiankio/docs new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/packaging/debian/debiankio/docs @@ -0,0 +1 @@ + diff --git a/packaging/debian/debiankio/patches/fix-cmake-build-parser.patch b/packaging/debian/debiankio/patches/fix-cmake-build-parser.patch new file mode 100644 index 00000000..81e01f48 --- /dev/null +++ b/packaging/debian/debiankio/patches/fix-cmake-build-parser.patch @@ -0,0 +1,21 @@ +diff -r 1e9d7ca73884 src/kde/kioslave/kio_recoll/CMakeLists.txt +--- a/kde/kioslave/kio_recoll/CMakeLists.txt Tue Jun 16 15:06:07 2015 +0200 ++++ b/kde/kioslave/kio_recoll/CMakeLists.txt Wed Jun 17 09:08:36 2015 +0200 +@@ -57,11 +57,16 @@ + + kde4_add_plugin(kio_recoll ${kio_recoll_SRCS}) + ++add_custom_target(parser ++ COMMAND make wasaparse.tab.cpp ++ WORKING_DIRECTORY ${rcltop}/query ++) + add_custom_target(rcllib + COMMAND make librecoll.a + WORKING_DIRECTORY ${rcltop}/lib + ) +-add_dependencies(kio_recoll rcllib) ++add_dependencies(rcllib parser) ++add_dependencies(kio_recoll parser rcllib) + + target_link_libraries(kio_recoll recoll xapian z ${EXTRA_LIBS} ${KDE4_KIO_LIBS}) + diff --git a/packaging/debian/debiankio/patches/series b/packaging/debian/debiankio/patches/series new file mode 100644 index 00000000..2782ff1c --- /dev/null +++ b/packaging/debian/debiankio/patches/series @@ -0,0 +1 @@ +fix-cmake-build-parser.patch diff --git a/packaging/debian/debiankio/rules b/packaging/debian/debiankio/rules new file mode 100755 index 00000000..8d9a454d --- /dev/null +++ b/packaging/debian/debiankio/rules @@ -0,0 +1,6 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/pkg-kde-tools/makefiles/1/cdbs/kde.mk + +DEB_SRCDIR = kde/kioslave/kio_recoll diff --git a/packaging/debian/debiankio/source/format b/packaging/debian/debiankio/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/packaging/debian/debiankio/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/packaging/debian/debiankio/watch b/packaging/debian/debiankio/watch new file mode 100644 index 00000000..6963245c --- /dev/null +++ b/packaging/debian/debiankio/watch @@ -0,0 +1,4 @@ +version=3 + + +http://www.recoll.org/download.html recoll-(.*)\.tar\.gz diff --git a/packaging/debian/debianunitylens/changelog b/packaging/debian/debianunitylens/changelog new file mode 100644 index 00000000..301b6eb6 --- /dev/null +++ b/packaging/debian/debianunitylens/changelog @@ -0,0 +1,30 @@ +recoll-lens (1.19.10.3543-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to release 1.19.10 + -- Jean-Francois Dockes Sat, 23 Nov 2013 18:00:00 +0100 + +recoll-lens (1.19.2.3328-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to release 1.19.2, for consistency, same as 1.19.0 in fact + -- Jean-Francois Dockes Mon, 14 May 2013 08:22:00 +0100 + +recoll-lens (1.19.0.3315-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to vers. 1.19.0 + -- Jean-Francois Dockes Sun, 12 May 2013 14:43:00 +0100 + +recoll-lens (1.18.1.2997-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to vers. 1.18.1 + -- Jean-Francois Dockes Mon, 05 Nov 2012 13:31:00 +0100 +recoll-lens (1.17.2.2697-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to vers. 1.17.1.2697 : display thumbnails when they exist + -- Jean-Francois Dockes Tue, 15 May 2012 13:51:00 +0200 +recoll-lens (1.17.1.2654-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to vers. 1.17.1.2654 : display/open results for embedded files + -- Jean-Francois Dockes Tue, 27 Mar 2012 16:22:00 +0200 +recoll-lens (1.17.0.2648-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to vers. 1.17.0.2648 : don't use app shortcut 'a' + -- Jean-Francois Dockes Mon, 26 Mar 2012 22:05:00 +0200 +recoll-lens (1.17.0.2646-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated lens to vers. 1.17.0.2646 : Unity 5.0/Ubuntu 12.04 compatibility + -- Jean-Francois Dockes Sun, 25 Mar 2012 16:42:00 +0200 +recoll-lens (1.17.0.2645-1~ppaPPAVERS~SERIES1) SERIES; urgency=low + * Updated package to recoll version 1.17.0 + -- Jean-Francois Dockes Sun, 25 Mar 2012 16:42:00 +0200 diff --git a/packaging/debian/debianunitylens/compat b/packaging/debian/debianunitylens/compat new file mode 100644 index 00000000..7ed6ff82 --- /dev/null +++ b/packaging/debian/debianunitylens/compat @@ -0,0 +1 @@ +5 diff --git a/packaging/debian/debianunitylens/control b/packaging/debian/debianunitylens/control new file mode 100644 index 00000000..706ce5e4 --- /dev/null +++ b/packaging/debian/debianunitylens/control @@ -0,0 +1,18 @@ +Source: recoll-lens +Section: x11 +Priority: optional +Maintainer: Jean-Francois Dockes +Build-Depends: debhelper (>= 7), + autotools-dev, + recoll, + python-recoll, + python +Standards-Version: 3.9.3 + +Package: recoll-lens +Architecture: all +Depends: ${misc:Depends}, python, recoll, unity +Description:Unity Lens for searching the Recoll index. + Allows querying the Recoll index from the Unity Dash, optionally + filtering on file category. +Homepage: http://www.recoll.org diff --git a/packaging/debian/debianunitylens/copyright b/packaging/debian/debianunitylens/copyright new file mode 100644 index 00000000..47810ee9 --- /dev/null +++ b/packaging/debian/debianunitylens/copyright @@ -0,0 +1,20 @@ +This package was debianized by Jean-Francois Dockes on +Sun, 25 Mar 2012 16:31:00 +0200. + +It was downloaded from http://www.recoll.org + +Upstream Author: Jean-Francois Dockes + +Copyright: (C) 2012 Jean-Francois Dockes + +License: GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +Debian packaging is (C) 2012, Jean-Francois Dockes, same license. + +Derived from Original bliss apps lens by Mikkel Kamstrup Erlandsen: + Copyright 2011, Canonical Ltd + Authored by Mikkel Kamstrup Erlandsen + Distribute under the terms of the GNU General Public License v3 diff --git a/packaging/debian/debianunitylens/docs b/packaging/debian/debianunitylens/docs new file mode 100644 index 00000000..e845566c --- /dev/null +++ b/packaging/debian/debianunitylens/docs @@ -0,0 +1 @@ +README diff --git a/packaging/debian/debianunitylens/rules b/packaging/debian/debianunitylens/rules new file mode 100755 index 00000000..0b244d33 --- /dev/null +++ b/packaging/debian/debianunitylens/rules @@ -0,0 +1,52 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +config.status: configure + dh_testdir + ./configure --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --mandir=\$${prefix}/share/man \ + --prefix=/usr \ + --sysconfdir=/etc + +build: build-stamp +build-stamp: config.status + dh_testdir + $(MAKE) + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp config.log + [ ! -f Makefile ] || $(MAKE) distclean + dh_clean Makefile + +install: + dh_testdir + dh_testroot + dh_prep + dh_installdirs + $(MAKE) prefix=$(CURDIR)/debian/recoll-lens/usr install + +binary-indep: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs README + dh_python2 + dh_link + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep +.PHONY: build clean binary-indep binary-arch binary install diff --git a/packaging/debian/debianunitylens/watch b/packaging/debian/debianunitylens/watch new file mode 100644 index 00000000..708fd568 --- /dev/null +++ b/packaging/debian/debianunitylens/watch @@ -0,0 +1,12 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +# Uncomment to examine a Webpage +# +http://www.recoll.org/download.html recoll-lens-(.*)\.tar\.gz + diff --git a/packaging/homebrew/00README.txt b/packaging/homebrew/00README.txt new file mode 100644 index 00000000..c76b25d6 --- /dev/null +++ b/packaging/homebrew/00README.txt @@ -0,0 +1,10 @@ + + +Package building file for Mac homebrew: http://brew.sh/ + +Install homebrew following the instructions on the home page, then copy +recoll.rb to /usr/local/Library/Formula/, then "brew install recoll" should +just work. + +Also see: https://github.com/medoc92/homebrew/tree/recoll + diff --git a/packaging/homebrew/recoll.rb b/packaging/homebrew/recoll.rb new file mode 100644 index 00000000..bc2b2b9a --- /dev/null +++ b/packaging/homebrew/recoll.rb @@ -0,0 +1,35 @@ +require 'formula' + +class Recoll < Formula + homepage 'http://www.recoll.org' + url 'http://www.recoll.org/recoll-1.19.11p1.tar.gz' + sha1 'f4259c21faff9f30882d0bf1e8f952c19ed9936b' + + depends_on 'xapian' + depends_on 'qt' + def patches + DATA + end + def install + system "./configure", "--prefix=#{prefix}" + system "make", "install" + end + + test do + system "#{bin}/recollindex", "-h" + end +end + +__END__ +--- a/configure.orig 2014-01-07 12:39:40.606718201 +0100 ++++ b/configure 2014-01-07 12:39:58.574599715 +0100 +@@ -5120,7 +5120,7 @@ + # basically to enable using a Macbook for development + if test X$sys = XDarwin ; then + # The default is xcode +- QMAKE="${QMAKE} -spec macx-g++" ++ QMAKE="${QMAKE}" + fi + + # Discriminate qt3/4. Qt3 qmake prints its version on stderr but we don't + diff --git a/packaging/macports/README.txt b/packaging/macports/README.txt new file mode 100644 index 00000000..90ab3922 --- /dev/null +++ b/packaging/macports/README.txt @@ -0,0 +1,24 @@ +To use/test the port out of the official macports tree: + +- Edit sources.conf /opt/local/etc/macports/sources.conf, and insert a URL + pointing to your local repository before the rsync one: + file:///Users/dockes/projets/fulltext/recoll/packaging/macports + rsync://rsync.macports.org/release/ports [default] + + (inserting before ensures it's used before the macports one) + +- The port should live under category/portname (ie: textproc/ + +- After you create or update your Portfile, use the MacPorts portindex + command in the local repository's directory to create or update the index + of the ports in your local repository. + + %% cd ~/path/to/macports + %% portindex + + Once the local port is added to the PortIndex, it becomes available for + searching or installation as with any other Portfile in the MacPorts + tree + +http://guide.macports.org/#development.local-repositories + diff --git a/packaging/macports/textproc/recoll/Portfile b/packaging/macports/textproc/recoll/Portfile new file mode 100644 index 00000000..850d19fe --- /dev/null +++ b/packaging/macports/textproc/recoll/Portfile @@ -0,0 +1,45 @@ +# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 +# $Id: Portfile 111989 2013-10-08 17:10:55Z ryandesign@macports.org $ + +PortSystem 1.0 +PortGroup app 1.0 + +name recoll +version 1.19.11p1 +categories textproc +platforms darwin +license GPL-2+ +maintainers dockes.org:jf openmaintainer + +description Desktop full text search + +long_description Recoll is a desktop search tool based on Xapian + +homepage http://www.recoll.org/ +master_sites ${homepage} + +checksums rmd160 de98039d80174a5da6e3cdbcc8b7bc0f4407e44a \ + sha256 8d1d040b8de1f65f01bc0a56053a6df7677360031bf9a6779d3496ced4a61186 + +depends_lib port:xapian-core \ + port:qt4-mac \ + port:aspell \ + port:libiconv \ + port:zlib + +depends_run port:antiword \ + port:catdoc \ + port:libxslt \ + port:poppler \ + port:unrtf \ + port:unzip + +patchfiles patch-sampleconf-mimeview.diff + +configure.args --without-x \ + --disable-x11mon + +build.args CC=${configure.cc} CXX=${configure.cxx} + +# g++-4.2: -E, -S, -save-temps and -M options are not allowed with multiple -arch flags +universal_variant no diff --git a/packaging/macports/textproc/recoll/files/patch-sampleconf-mimeview.diff b/packaging/macports/textproc/recoll/files/patch-sampleconf-mimeview.diff new file mode 100644 index 00000000..6db66d5b --- /dev/null +++ b/packaging/macports/textproc/recoll/files/patch-sampleconf-mimeview.diff @@ -0,0 +1,147 @@ +--- sampleconf/mimeview 2013-09-30 18:45:06.000000000 +0200 ++++ sampleconf/mimeview.mac 2013-09-30 18:45:06.000000000 +0200 +@@ -2,7 +2,8 @@ + + ## ########################################## + # External viewers, launched by the recoll GUI when you click on a result +-# 'edit' link ++# 'Open' link - MAC version ++# On the MAC, we use "open" for everything... + + # Mime types which we should not uncompress if they are found gzipped or + # bzipped because the native viewer knows how to handle. These would be +@@ -16,20 +17,17 @@ + # search string + # - For pages of CHM and EPUB documents where we can choose to open the + # parent document instead of a temporary html file. +-xallexcepts = application/pdf application/postscript application/x-dvi \ +- text/html|gnuinfo text/html|chm text/html|epub \ +- application/x-fsdirectory|parentopen inode/directory|parentopen ++#xallexcepts = application/pdf application/postscript application/x-dvi \ ++# text/html|gnuinfo text/html|chm text/html|epub + + [view] + # Pseudo entry used if the 'use desktop' preference is set in the GUI +-application/x-all = xdg-open %u ++application/x-all = open %f + + application/epub+zip = ebook-viewer %f +-# Open the parent epub document for epub parts instead of opening them as +-# html documents. This is almost always what we want. +-text/html|epub = ebook-viewer %F;ignoreipath=1 +- +-application/x-gnote = gnote %f ++# If you want to open the parent epub document for epub parts instead of ++# opening them as html documents: ++#text/html|epub = ebook-viewer %F;ignoreipath=1 + + application/x-mobipocket-ebook = ebook-viewer %f + +@@ -76,13 +74,9 @@ + application/vnd.wordperfect = libreoffice %f + text/rtf = libreoffice %f + ++application/x-chm = kchmviewer %f + application/x-dia-diagram = dia %f +- + application/x-fsdirectory = dolphin %f +-inode/directory = dolphin %f +-application/x-fsdirectory|parentopen = dolphin --select %(childurl) %f +-inode/directory|parentopen = dolphin --select %(childurl) %f +- + application/x-gnuinfo = xterm -e "info -f %f" + application/x-gnumeric = gnumeric %f + +@@ -102,11 +96,6 @@ + image/x-ms-bmp = gwenview %f + image/x-xpmi = gwenview %f + +-# Opening mail messages not always works. +-# - Thunderbird will only open a single-message file if it has an .emf +-# extension +-# - "sylpheed %f" seems to work ok as of version 3.3 +-# - "kmail --view %u" works + message/rfc822 = thunderbird -file %f + text/x-mail = thunderbird -file %f + application/x-mimehtml = thunderbird -file %f +@@ -119,11 +108,11 @@ + application/x-tar = ark %f + application/zip = ark %f + +-application/x-awk = emacsclient --no-wait %f +-application/x-perl = emacsclient --no-wait %f +-text/x-perl = emacsclient --no-wait %f +-application/x-shellscript = emacsclient --no-wait %f +-text/x-shellscript = emacsclient --no-wait %f ++application/x-awk = emacsclient %f ++application/x-perl = emacsclient %f ++text/x-perl = emacsclient %f ++application/x-shellscript = emacsclient %f ++text/x-shellscript = emacsclient %f + + # Or firefox -remote "openFile(%u)" + text/html = firefox %u +@@ -135,41 +124,39 @@ + + application/x-webarchive = konqueror %f + text/x-fictionbook = ebook-viewer %f +-application/x-tex = emacsclient --no-wait %f +-application/xml = emacsclient --no-wait %f +-text/xml = emacsclient --no-wait %f +-text/x-tex = emacsclient --no-wait %f +-text/plain = emacsclient --no-wait %f +-text/x-awk = emacsclient --no-wait %f +-text/x-c = emacsclient --no-wait %f +-text/x-c+ = emacsclient --no-wait %f +-text/x-c++ = emacsclient --no-wait %f ++application/x-tex = emacsclient %f ++application/xml = emacsclient %f ++text/xml = emacsclient %f ++text/x-tex = emacsclient %f ++text/plain = emacsclient %f ++text/x-awk = emacsclient %f ++text/x-c = emacsclient %f ++text/x-c+ = emacsclient %f ++text/x-c++ = emacsclient %f + text/x-csv = libreoffice %f + text/x-html-sidux-man = konqueror %f + text/x-html-aptosid-man = iceweasel %f + +-application/x-chm = kchmviewer %f + # Html pages inside a chm have a chm rclaptg set by the filter. Kchmviewer + # knows how to use the ipath (which is the internal chm path) to open the + # file at the right place + text/html|chm = kchmviewer --url %i %F + +-text/x-ini = emacsclient --no-wait %f ++text/x-ini = emacsclient %f + text/x-man = xterm -u8 -e "groff -T ascii -man %f | more" + text/x-python = idle %f +-text/x-gaim-log = emacsclient --no-wait %f +-text/x-purple-html-log = emacsclient --no-wait %f +-text/x-purple-log = emacsclient --no-wait %f ++text/x-gaim-log = emacsclient %f ++text/x-purple-html-log = emacsclient %f ++text/x-purple-log = emacsclient %f + + # The video types will usually be handled by the desktop default, but they + # need entries here to get an "Open" link +-video/3gpp = vlc %f +-video/mp2p = vlc %f +-video/mp2t = vlc %f +-video/mp4 = vlc %f +-video/mpeg = vlc %f +-video/quicktime = vlc %f +-video/x-matroska = vlc %f +-video/x-ms-asf = vlc %f +-video/x-msvideo = vlc %f +- ++video/3gpp = open %f ++video/mp2p = open %f ++video/mp2t = open %f ++video/mp4 = open %f ++video/mpeg = open %f ++video/quicktime = open %f ++video/x-matroska = open %f ++video/x-ms-asf = open %f ++video/x-msvideo = open %f diff --git a/packaging/rpm/kio_recoll.spec b/packaging/rpm/kio_recoll.spec new file mode 100644 index 00000000..38626e3e --- /dev/null +++ b/packaging/rpm/kio_recoll.spec @@ -0,0 +1,77 @@ +%define name kio_recoll +%define version 1.17.0 +%define release 0 + +Name: %{name} +Version: %{version} +Release: %{release} + +Summary: KIO slave for the Recoll full text search tool +Source0: http://www.recoll.org/recoll-%{version}.tar.gz +URL: http://www.recoll.org/ +Group: Applications/Databases + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot +License: GPL + +BuildRequires: libkde4-devel zlib-devel xapian-core-devel libuuid-devel +Requires: recoll + +%description +Recoll is a personal full text search package for Linux, FreeBSD and +other Unix systems. It is based on a very strong backend (Xapian), for +which it provides an easy to use, feature-rich, easy administration +interface. + +# --------------------------------------------------------------------------- + +%prep +%setup -q -n recoll-%{version} + +# --------------------------------------------------------------------------- + +%build + +%cmake_kde4 kde/kioslave/kio_recoll +pwd +make %{?_smp_mflags} + +# --------------------------------------------------------------------------- + +%install +rm -rf $RPM_BUILD_ROOT +%makeinstall + +# --------------------------------------------------------------------------- + +%clean +rm -rf $RPM_BUILD_ROOT + +# --------------------------------------------------------------------------- + +%files +%defattr(-,root,root,-) +%{_libdir}/kde4/kio_recoll.so +%{_datadir}/kde4/apps/kio_recoll +%{_datadir}/kde4/apps/kio_recoll/help.html +%{_datadir}/kde4/apps/kio_recoll/welcome.html +%{_datadir}/kde4/services/recoll.protocol +%{_datadir}/kde4/services/recollf.protocol +%if 0%{?suse_version} > 1120 +%dir %{_datadir}/kde4/apps +%dir %{_datadir}/kde4/services +%dir %{_libdir}/kde4 +%endif + +# --------------------------------------------------------------------------- + +%changelog +* Sun Mar 18 2012 Jean-Francois Dockes 1.17.0-0 +- 1.17.0 +* Mon May 02 2011 Jean-Francois Dockes 1.16.2-0 +- 1.16.2 +* Mon May 02 2011 Jean-Francois Dockes 1.15.8-0 +- 1.15.8 +* Sun Mar 06 2011 Jean-Francois Dockes 1.15.5-0 +- Initial spec file for kio + diff --git a/packaging/rpm/recoll-mageia.spec b/packaging/rpm/recoll-mageia.spec new file mode 100644 index 00000000..b44ac0ce --- /dev/null +++ b/packaging/rpm/recoll-mageia.spec @@ -0,0 +1,75 @@ +Name: recoll +Version: 1.19.9 +Release: %mkrel 1 +Summary: Desktop full text search tool with a Qt GUI +URL: http://www.lesbonscomptes.com/recoll/ +Group: Databases +License: GPLv2 + +Source0: http://www.lesbonscomptes.com/recoll/%{name}-%{version}.tar.gz + +BuildRequires: xapian-devel +BuildRequires: pkgconfig(QtCore) +BuildRequires: pkgconfig(QtWebKit) + +Requires: xapian + + +%description +Recoll is a personal full text search package for Linux, FreeBSD and +other Unix systems. It is based on a very strong backend (Xapian), for +which it provides an easy to use, feature-rich, easy administration +interface. + + +%package -n kio-%{name} +Summary: Kioslave for %{name} +Group: Graphical desktop/KDE +BuildRequires: cmake +BuildRequires: kdelibs4-devel +Requires: %{name} = %{version}-%{release} +Requires: kdebase4-workspace + +%description -n kio-%{name} +Kioslave for %{name}. Enables to perform querries and extract +results in konqueror and dolphin. + + + +%prep +%setup -q + +%build +%configure2_5x --disable-python-module +%make + + +%install +%makeinstall_std + +rm lib/librecoll.so* +pushd kde/kioslave/kio_recoll +%cmake_kde4 +%make +%makeinstall_std +popd + + +%files +%doc README +%{_bindir}/* +%{_datadir}/applications/recoll-searchgui.desktop +%{_datadir}/icons/hicolor/48x48/apps/recoll.png +%{_datadir}/pixmaps/recoll.png +%{_datadir}/%{name} +%{_mandir}/man1/recoll* +%{_mandir}/man5/recoll* +%{_kde_libdir}/%name/librecoll.so.%version + + +%files -n kio-%{name} +%{_kde_libdir}/kde4/kio_recoll.so +%{_kde_datadir}/apps/kio_recoll/help.html +%{_kde_datadir}/apps/kio_recoll/welcome.html +%{_kde_datadir}/kde4/services/recoll.protocol +%{_kde_datadir}/kde4/services/recollf.protocol diff --git a/packaging/rpm/recoll.spec b/packaging/rpm/recoll.spec new file mode 100644 index 00000000..0f266295 --- /dev/null +++ b/packaging/rpm/recoll.spec @@ -0,0 +1,224 @@ +Summary: Desktop full text search tool with Qt GUI +Name: recoll +Version: 1.20.6 +Release: 1%{?dist} +Group: Applications/Databases +License: GPLv2+ +URL: http://www.lesbonscomptes.com/recoll/ +Source0: http://www.lesbonscomptes.com/recoll/recoll-%{version}.tar.gz +BuildRequires: qt-devel +BuildRequires: qtwebkit-devel +BuildRequires: python-devel +BuildRequires: zlib-devel +BuildRequires: aspell-devel +BuildRequires: xapian-core-devel +BuildRequires: desktop-file-utils +Requires: xdg-utils + +%description +Recoll is a personal full text search package for Linux, FreeBSD and +other Unix systems. It is based on a very strong back end (Xapian), for +which it provides an easy to use, feature-rich, easy administration +interface. +%global __provides_exclude_from ^%{_libdir}/recoll/librecoll\\.so.*$ +%global __requires_exclude ^librecoll\\.so.*$ + +%prep +%setup -q -n %{name}-%{version} +chmod 0644 utils/{conftree.cpp,conftree.h,debuglog.cpp,debuglog.h} + +%build +export QMAKE=qmake-qt4 +%configure +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} STRIP=/bin/true INSTALL='install -p' + +desktop-file-install --delete-original \ + --dir=%{buildroot}/%{_datadir}/applications \ + %{buildroot}/%{_datadir}/applications/%{name}-searchgui.desktop + +# use /usr/bin/xdg-open +rm -f %{buildroot}/usr/share/recoll/filters/xdg-open + +# fix perms +chmod 0755 %{buildroot}/usr/share/recoll/filters/rclexecm.py +chmod 0755 %{buildroot}%{_libdir}/recoll/librecoll.so.* + +%post +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ] ; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor +fi +if [ -x %{_bindir}/update-desktop-database ] ; then + %{_bindir}/update-desktop-database &> /dev/null +fi +exit 0 + +%postun +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ] ; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor +fi +if [ -x %{_bindir}/update-desktop-database ] ; then + %{_bindir}/update-desktop-database &> /dev/null +fi +exit 0 + +%files +%doc COPYING ChangeLog README +%{_bindir}/%{name} +%{_bindir}/%{name}index +%{_datadir}/%{name} +%{_datadir}/appdata/%{name}.appdata.xml +%{_datadir}/applications/%{name}-searchgui.desktop +%{_datadir}/icons/hicolor/48x48/apps/%{name}.png +%{_datadir}/pixmaps/%{name}.png +%{_libdir}/recoll +%{python_sitearch}/recoll +%{python_sitearch}/Recoll*.egg-info +%{_mandir}/man1/%{name}.1* +%{_mandir}/man1/recollq.1* +%{_mandir}/man1/%{name}index.1* +%{_mandir}/man5/%{name}.conf.5* + +%changelog +* Sat Apr 25 2015 Jean-Francois Dockes - 1.20.6-1 +- 1.20.6 + +* Fri Dec 19 2014 Jean-Francois Dockes - 1.20.1-1 +- 1.20.1 + +* Sun Nov 09 2014 Jean-Francois Dockes - 1.19.14p2-1 +- 1.19.14p2 + +* Sun Aug 17 2014 Fedora Release Engineering - 1.19.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 1.19.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue May 06 2014 Terje Rosten - 1.19.13-1 +- 1.19.13 + +* Mon Jan 20 2014 Terje Rosten - 1.19.11-1 +- 1.19.11 + +* Mon Nov 11 2013 Terje Rosten - 1.19.9-1 +- 1.19.9 + +* Tue Nov 05 2013 Terje Rosten - 1.19.8-1 +- 1.19.8 + +* Sun Aug 04 2013 Fedora Release Engineering - 1.19.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jun 12 2013 Terje Rosten - 1.19.4-2 +- Fix filter setup + +* Mon Jun 10 2013 Terje Rosten - 1.19.4-1 +- 1.19.4 + +* Thu Feb 14 2013 Fedora Release Engineering - 1.18.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Nov 19 2012 Terje Rosten - 1.18.1-1 +- 1.18.1 + +* Sat Jul 21 2012 Fedora Release Engineering - 1.17.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 30 2012 Terje Rosten - 1.17.3-1 +- 1.17.3 + +* Sat Mar 31 2012 Terje Rosten - 1.17.1-1 +- 1.17.1 + +* Sun Mar 25 2012 Terje Rosten - 1.17-1 +- 1.17 + +* Tue Feb 28 2012 Fedora Release Engineering - 1.16.2-3 +- Rebuilt for c++ ABI breakage + +* Wed Feb 15 2012 Terje Rosten - 1.16.2-2 +- Add patch to build with gcc 4.7 + +* Wed Feb 01 2012 Terje Rosten - 1.16.2-1 +- 1.16.2 + +* Sat Jan 14 2012 Fedora Release Engineering - 1.16.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Oct 24 2011 Terje Rosten - 1.16.1-2 +- Add patch to fix crash (bz #747472) + +* Tue Oct 18 2011 Terje Rosten - 1.16.1-1 +- 1.16.1 + +* Tue May 24 2011 Terje Rosten - 1.15.8-2 +- add patch from upstream to fix crash. + +* Sun May 08 2011 Terje Rosten - 1.15.8-1 +- 1.15.8 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.14.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 28 2011 Terje Rosten - 1.14.4-1 +- 1.14.4 + +* Mon Nov 15 2010 Terje Rosten - 1.14.2-2 +- Add patch to fix #631704 + +* Sun Nov 7 2010 Terje Rosten - 1.14.2-1 +- 1.14.2 + +* Thu Jul 15 2010 Terje Rosten - 1.13.04-6 +- add patch to build with xapian 1.2 (from J.F. Dockes, thanks) + +* Sat Jul 10 2010 Terje Rosten - 1.13.04-5 +- use system xdg-open +- trim chagenlog + +* Fri Jul 9 2010 Terje Rosten - 1.13.04-4 +- fix some review comments + +* Mon May 10 2010 Terje Rosten - 1.13.04-3 +- use version macro in source url +- don't strip bins, giving non empty debuginfo package +- more explicit file listing +- try to preserve timestamps +- use proper name for spec file +- fix changelog +- license seems to be GPLv2+ +- include some %%doc files +- add buildroot tag +- some source add execute bit set +- explicit enable inotify +- add aspell-devel to bulldreq +- make with _smp_mflags seems to work +- add post scripts +- add patch to build gui with correct flags (ref: 338791) + +* Sun May 9 2010 J.F. Dockes 1.13.04-2 +- bumped the release number to issue new rpms for fc10 + +* Sun May 9 2010 J.F. Dockes 1.13.04 +- updated to recoll release 1.13.04 + +* Fri Feb 12 2010 Terry Duell 1.13.02 +- updated to release 1.13.02 + +* Tue Jan 12 2010 Terry Duell 1.13.01-3 +- updated to fix Fedora desktop-file-install and install icon + +* Sun Jan 10 2010 Jean-Francois Dockes 1.13.01-2 +- updated for recent fedoras: depend on xapian packages, use qt4 + +* Thu Jan 07 2010 Jean-Francois Dockes 1.13.01-1 +- update to release 1.13.01 + +* Wed Feb 1 2006 Jean-Francois Dockes 1.2.0-1 +- initial packaging + diff --git a/packaging/rpm/recollCooker.spec b/packaging/rpm/recollCooker.spec new file mode 100644 index 00000000..9e81496a --- /dev/null +++ b/packaging/rpm/recollCooker.spec @@ -0,0 +1,88 @@ +Summary: Desktop full text search tool with a qt gui +Name: recoll +Version: 1.12.0 +Release: %mkrel 1 +License: GPL +Group: Databases +URL: http://www.recoll.org/ +Source0: http://www.lesbonscomptes.com/recoll/%{name}-%{version}.tar.bz2 +Patch1: %{name}-configure.patch +BuildRequires: libxapian-devel +BuildRequires: libfam-devel +BuildRequires: libqt-devel >= 3.3.7 +BuildRequires: libaspell-devel +Requires: xapian +BuildRoot: %{_tmppath}/%{name}-%{version}--buildroot + +%description +Recoll is a personal full text search tool for Unix/Linux. +It is based on the very strong Xapian backend, for which +it provides an easy to use, feature-rich, easy administration, +QT graphical interface. + +%prep +%setup -q +%patch1 -p0 + +%build +%configure2_5x \ + --with-fam \ + --with-aspell + +%make + +%install +[ "%{buildroot}" != "/" ] && rm -rf %{buildroot} + +%makeinstall_std +desktop-file-install --vendor="" \ + --add-category="X-MandrivaLinux-MoreApplications-Databases" \ + --dir %{buildroot}%{_datadir}/applications %{buildroot}%{_datadir}/applications/* + +%clean +[ "%{buildroot}" != "/" ] && rm -rf %{buildroot} + +%files +%defattr(644,root,root,755) +%doc %{_datadir}/%{name}/doc +%attr(755,root,root) %{_bindir}/%{name}* +%{_datadir}/applications/recoll-searchgui.desktop +%{_datadir}/icons/hicolor/48x48/apps/recoll-searchgui.png +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}/examples +%dir %{_datadir}/%{name}/filters +%dir %{_datadir}/%{name}/images +%dir %{_datadir}/%{name}/translations +%{_datadir}/%{name}/examples/mime* +%{_datadir}/%{name}/examples/*.conf +%attr(755,root,root) %{_datadir}/%{name}/examples/rclmon.sh +%attr(755,root,root) %{_datadir}/%{name}/filters/rc* +%{_datadir}/%{name}/filters/xdg-open +%{_datadir}/%{name}/images/*png +%{_mandir}/man1/recoll* +%{_mandir}/man5/recoll* +%{_datadir}/%{name}/translations/*.qm + + +%changelog +* Fri Apr 20 2007 Tomasz Pawel Gajc 1.12.1-1mdv2008.0 ++ Revision: 16093 +- new version +- drop P0 + + + Mandriva + + +* Tue Mar 06 2007 Tomasz Pawel Gajc 1.7.5-2mdv2007.0 ++ Revision: 134128 +- rebuild + +* Tue Jan 30 2007 Tomasz Pawel Gajc 1.7.5-1mdv2007.1 ++ Revision: 115423 +- add patch 1 - fix build on x86_64 +- add patch 0 - fix menu entry +- fix group +- add buildrequires +- set correct bits on files +- Import recoll + diff --git a/packaging/rpm/recollfedora.spec b/packaging/rpm/recollfedora.spec new file mode 100644 index 00000000..0f266295 --- /dev/null +++ b/packaging/rpm/recollfedora.spec @@ -0,0 +1,224 @@ +Summary: Desktop full text search tool with Qt GUI +Name: recoll +Version: 1.20.6 +Release: 1%{?dist} +Group: Applications/Databases +License: GPLv2+ +URL: http://www.lesbonscomptes.com/recoll/ +Source0: http://www.lesbonscomptes.com/recoll/recoll-%{version}.tar.gz +BuildRequires: qt-devel +BuildRequires: qtwebkit-devel +BuildRequires: python-devel +BuildRequires: zlib-devel +BuildRequires: aspell-devel +BuildRequires: xapian-core-devel +BuildRequires: desktop-file-utils +Requires: xdg-utils + +%description +Recoll is a personal full text search package for Linux, FreeBSD and +other Unix systems. It is based on a very strong back end (Xapian), for +which it provides an easy to use, feature-rich, easy administration +interface. +%global __provides_exclude_from ^%{_libdir}/recoll/librecoll\\.so.*$ +%global __requires_exclude ^librecoll\\.so.*$ + +%prep +%setup -q -n %{name}-%{version} +chmod 0644 utils/{conftree.cpp,conftree.h,debuglog.cpp,debuglog.h} + +%build +export QMAKE=qmake-qt4 +%configure +make %{?_smp_mflags} + +%install +make install DESTDIR=%{buildroot} STRIP=/bin/true INSTALL='install -p' + +desktop-file-install --delete-original \ + --dir=%{buildroot}/%{_datadir}/applications \ + %{buildroot}/%{_datadir}/applications/%{name}-searchgui.desktop + +# use /usr/bin/xdg-open +rm -f %{buildroot}/usr/share/recoll/filters/xdg-open + +# fix perms +chmod 0755 %{buildroot}/usr/share/recoll/filters/rclexecm.py +chmod 0755 %{buildroot}%{_libdir}/recoll/librecoll.so.* + +%post +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ] ; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor +fi +if [ -x %{_bindir}/update-desktop-database ] ; then + %{_bindir}/update-desktop-database &> /dev/null +fi +exit 0 + +%postun +touch --no-create %{_datadir}/icons/hicolor +if [ -x %{_bindir}/gtk-update-icon-cache ] ; then + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor +fi +if [ -x %{_bindir}/update-desktop-database ] ; then + %{_bindir}/update-desktop-database &> /dev/null +fi +exit 0 + +%files +%doc COPYING ChangeLog README +%{_bindir}/%{name} +%{_bindir}/%{name}index +%{_datadir}/%{name} +%{_datadir}/appdata/%{name}.appdata.xml +%{_datadir}/applications/%{name}-searchgui.desktop +%{_datadir}/icons/hicolor/48x48/apps/%{name}.png +%{_datadir}/pixmaps/%{name}.png +%{_libdir}/recoll +%{python_sitearch}/recoll +%{python_sitearch}/Recoll*.egg-info +%{_mandir}/man1/%{name}.1* +%{_mandir}/man1/recollq.1* +%{_mandir}/man1/%{name}index.1* +%{_mandir}/man5/%{name}.conf.5* + +%changelog +* Sat Apr 25 2015 Jean-Francois Dockes - 1.20.6-1 +- 1.20.6 + +* Fri Dec 19 2014 Jean-Francois Dockes - 1.20.1-1 +- 1.20.1 + +* Sun Nov 09 2014 Jean-Francois Dockes - 1.19.14p2-1 +- 1.19.14p2 + +* Sun Aug 17 2014 Fedora Release Engineering - 1.19.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 1.19.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue May 06 2014 Terje Rosten - 1.19.13-1 +- 1.19.13 + +* Mon Jan 20 2014 Terje Rosten - 1.19.11-1 +- 1.19.11 + +* Mon Nov 11 2013 Terje Rosten - 1.19.9-1 +- 1.19.9 + +* Tue Nov 05 2013 Terje Rosten - 1.19.8-1 +- 1.19.8 + +* Sun Aug 04 2013 Fedora Release Engineering - 1.19.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jun 12 2013 Terje Rosten - 1.19.4-2 +- Fix filter setup + +* Mon Jun 10 2013 Terje Rosten - 1.19.4-1 +- 1.19.4 + +* Thu Feb 14 2013 Fedora Release Engineering - 1.18.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Nov 19 2012 Terje Rosten - 1.18.1-1 +- 1.18.1 + +* Sat Jul 21 2012 Fedora Release Engineering - 1.17.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed May 30 2012 Terje Rosten - 1.17.3-1 +- 1.17.3 + +* Sat Mar 31 2012 Terje Rosten - 1.17.1-1 +- 1.17.1 + +* Sun Mar 25 2012 Terje Rosten - 1.17-1 +- 1.17 + +* Tue Feb 28 2012 Fedora Release Engineering - 1.16.2-3 +- Rebuilt for c++ ABI breakage + +* Wed Feb 15 2012 Terje Rosten - 1.16.2-2 +- Add patch to build with gcc 4.7 + +* Wed Feb 01 2012 Terje Rosten - 1.16.2-1 +- 1.16.2 + +* Sat Jan 14 2012 Fedora Release Engineering - 1.16.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Mon Oct 24 2011 Terje Rosten - 1.16.1-2 +- Add patch to fix crash (bz #747472) + +* Tue Oct 18 2011 Terje Rosten - 1.16.1-1 +- 1.16.1 + +* Tue May 24 2011 Terje Rosten - 1.15.8-2 +- add patch from upstream to fix crash. + +* Sun May 08 2011 Terje Rosten - 1.15.8-1 +- 1.15.8 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.14.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 28 2011 Terje Rosten - 1.14.4-1 +- 1.14.4 + +* Mon Nov 15 2010 Terje Rosten - 1.14.2-2 +- Add patch to fix #631704 + +* Sun Nov 7 2010 Terje Rosten - 1.14.2-1 +- 1.14.2 + +* Thu Jul 15 2010 Terje Rosten - 1.13.04-6 +- add patch to build with xapian 1.2 (from J.F. Dockes, thanks) + +* Sat Jul 10 2010 Terje Rosten - 1.13.04-5 +- use system xdg-open +- trim chagenlog + +* Fri Jul 9 2010 Terje Rosten - 1.13.04-4 +- fix some review comments + +* Mon May 10 2010 Terje Rosten - 1.13.04-3 +- use version macro in source url +- don't strip bins, giving non empty debuginfo package +- more explicit file listing +- try to preserve timestamps +- use proper name for spec file +- fix changelog +- license seems to be GPLv2+ +- include some %%doc files +- add buildroot tag +- some source add execute bit set +- explicit enable inotify +- add aspell-devel to bulldreq +- make with _smp_mflags seems to work +- add post scripts +- add patch to build gui with correct flags (ref: 338791) + +* Sun May 9 2010 J.F. Dockes 1.13.04-2 +- bumped the release number to issue new rpms for fc10 + +* Sun May 9 2010 J.F. Dockes 1.13.04 +- updated to recoll release 1.13.04 + +* Fri Feb 12 2010 Terry Duell 1.13.02 +- updated to release 1.13.02 + +* Tue Jan 12 2010 Terry Duell 1.13.01-3 +- updated to fix Fedora desktop-file-install and install icon + +* Sun Jan 10 2010 Jean-Francois Dockes 1.13.01-2 +- updated for recent fedoras: depend on xapian packages, use qt4 + +* Thu Jan 07 2010 Jean-Francois Dockes 1.13.01-1 +- update to release 1.13.01 + +* Wed Feb 1 2006 Jean-Francois Dockes 1.2.0-1 +- initial packaging + diff --git a/packaging/rpm/recollmdk.spec b/packaging/rpm/recollmdk.spec new file mode 100644 index 00000000..3b4d1168 --- /dev/null +++ b/packaging/rpm/recollmdk.spec @@ -0,0 +1,130 @@ +%define name recoll +%define version 1.18.1 +%define release %mkrel 1 + +Name: %{name} +Version: %{version} +Release: %{release} + +Summary: Desktop full text search tool with a qt gui +Source0: http://www.recoll.org/%{name}-%{version}.tar.gz +URL: http://www.recoll.org/ +Group: Applications/Databases + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot +License: GPL +BuildRequires: libqt4-devel +BuildRequires: libqtwebkit2.2-devel +BuildRequires: libpython-devel +BuildRequires: libxapian-devel + +%description +Recoll is a personal full text search package for Linux, FreeBSD and +other Unix systems. It is based on a very strong backend (Xapian), for +which it provides an easy to use, feature-rich, easy administration +interface. + +# --------------------------------------------------------------------------- + +%prep +%setup -q + +# --------------------------------------------------------------------------- + +%build +[ -n "$QTDIR" ] || . %{_sysconfdir}/profile.d/60qt4.sh +%configure +make %{?_smp_mflags} + +# --------------------------------------------------------------------------- + +%install +rm -rf $RPM_BUILD_ROOT +%makeinstall + +# --------------------------------------------------------------------------- + +%clean +rm -rf $RPM_BUILD_ROOT + +# --------------------------------------------------------------------------- + +%files +%defattr(-,root,root,-) +%{_bindir}/* +%{_datadir}/applications/recoll-searchgui.desktop +%{_datadir}/icons/hicolor/48x48/apps/recoll.png +%{_datadir}/pixmaps/recoll.png +%{_datadir}/%{name} +%{_mandir}/man1/recoll* +%{_mandir}/man5/recoll* +%{python_sitearch}/Recoll*.egg-info +%{python_sitearch}/recoll.so + +# --------------------------------------------------------------------------- + +%changelog +* Mon Nov 05 2012 Jean-Francois Dockes 1.18.1-1 +- Update to release 1.18.1 +* Thu May 17 2012 Jean-Francois Dockes 1.17.2-1 +- Update to release 1.17.2 +* Mon Nov 07 2011 Jean-Francois Dockes 1.16.2-1 +- Update to release 1.16.2 +* Wed Sep 28 2011 Jean-Francois Dockes 1.16.1-1 +- Update to release 1.16.1 +* Wed Sep 21 2011 Jean-Francois Dockes 1.16.0-1 +- Update to release 1.16.0 +* Tue May 03 2011 Jean-Francois Dockes 1.15.8-1 +- Update to release 1.15.8 +* Fri Mar 04 2011 Jean-Francois Dockes 1.15.5-1 +- Update to release 1.15.5 +* Thu Feb 15 2011 Jean-Francois Dockes 1.15.2-1 +- Update to release 1.15.2 +* Wed Feb 02 2011 Jean-Francois Dockes 1.15.0-1 +- Update to release 1.15.0 +* Thu Nov 25 2010 Jean-Francois Dockes 1.14.3-1 +- Update to release 1.14.2 +* Sat Sep 24 2010 Jean-Francois Dockes 1.14.2-1 +- Update to release 1.14.2 +* Mon Sep 13 2010 Jean-Francois Dockes 1.14.0-1 +- Update to release 1.14.0 +* Thu Apr 14 2010 Jean-Francois Dockes 1.13.04-1 +- Update to release 1.13.01 +* Thu Jan 07 2010 Jean-Francois Dockes 1.13.01-1 +- Update to release 1.13.01 +* Thu Dec 10 2009 Jean-Francois Dockes 1.12.4-1 +- Update to release 1.12.2 +* Mon Oct 19 2009 Jean-Francois Dockes 1.12.2-1 +- Update to release 1.12.2 +* Thu Jan 29 2009 Jean-Francois Dockes 1.12.0-1 +- Update to release 1.12.0 +* Mon Oct 13 2008 Jean-Francois Dockes 1.11.0-1 +- Update to release 1.11.0 +* Thu May 27 2008 Jean-Francois Dockes 1.10.2-1 +- Update to release 1.10.2 +* Thu Jan 31 2008 Jean-Francois Dockes 1.10.1-1 +- Update to release 1.10.1 +* Wed Nov 21 2007 Jean-Francois Dockes 1.10.0-1 +- Update to release 1.10.0 +* Tue Sep 11 2007 Jean-Francois Dockes 1.9.0-1 +- Update to release 1.9.0 +* Tue Mar 6 2007 Jean-Francois Dockes 1.8.1-1 +- Update to release 1.8.1 +* Mon Jan 15 2007 Jean-Francois Dockes 1.7.5-1 +- Update to release 1.7.5 +* Mon Jan 08 2007 Jean-Francois Dockes 1.7.3-1 +- Update to release 1.7.3 +* Tue Nov 28 2006 Jean-Francois Dockes 1.6.1-1 +- Update to release 1.6.1 +* Mon Nov 20 2006 Jean-Francois Dockes 1.5.11-1 +- Update to release 1.5.11 +* Mon Oct 2 2006 Jean-Francois Dockes 1.5.2-1 +- Update to release 1.5.2 +* Sun May 7 2006 Jean-Francois Dockes 1.4.3-1 +- Update to release 1.4.3 +* Fri Mar 31 2006 Jean-Francois Dockes 1.3.3-1 +- Update to release 1.3.3 +* Thu Feb 2 2006 Jean-Francois Dockes 1.2.2-1 +- Update to release 1.2.2 +* Thu Jan 10 2006 Jean-Francois Dockes 1.1.0-1 +- Initial packaging diff --git a/src/COPYING b/src/COPYING new file mode 100644 index 00000000..d60c31a9 --- /dev/null +++ b/src/COPYING @@ -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/src/ChangeLog b/src/ChangeLog new file mode 100644 index 00000000..dd186d2d --- /dev/null +++ b/src/ChangeLog @@ -0,0 +1,10552 @@ +2010-02-02 15:33 +0100 Jean-Francois Dockes (d11da0283f03 [tip]) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/query/plaintorich.cpp, src/query/recollq.cpp, + src/query/wasatorcl.cpp, src/rcldb/rcldb.cpp, + src/rcldb/searchdata.cpp, src/rcldb/stoplist.cpp, + src/rcldb/stoplist.h: + cosmetics: use derived class for actual splitter instead of callback + +2010-02-02 10:24 +0100 Jean-Francois Dockes (a8caf709bcd3) + + * src/qt4gui/rclmain.ui, src/qtgui/rclmain.ui, + src/qtgui/rclmain_w.cpp: + QT GUI: define accelerators for res list page movements + +2010-02-02 08:20 +0100 Jean-Francois Dockes (ec31e285a553) + + * src/qtgui/reslist.cpp, src/query/reslistpager.h: + Qt GUI: ensure that new page size is taken into account ASAP (no + need for restarting app) + +2010-02-01 17:51 +0100 Jean-Francois Dockes (db953bb94c7f) + + * src/qt4gui/rclmain.ui, src/qtgui/preview_w.cpp, + src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h: + QT GUI: add fullscreen mode + +2010-02-01 10:31 +0100 Jean-Francois Dockes (1eda55ae3be9) + + * src/mk/manifest.txt: new file. + * src/excludefile, src/makesrcdist.sh, src/mk/manifest.txt: + Making a source dist: check the new list against old reference + + other checks + +2010-01-31 19:53 +0100 Israel G. Lugo (74d4e25d43c2) + + * src/recollinstall.in: + Install recollq and its manpage when in cmdline mode. Don't install + the recoll.1 manpage when in cmdline mode. + +2010-01-31 19:47 +0100 Jean-Francois Dockes (c88b0ef40512) + + * src/common/autoconfig.h.in: + use 3-arg version of ac_define as the 1-arg one is being obsoleted + +2010-01-31 19:45 +0100 Jean-Francois Dockes (1960435ccb68) + + * src/configure.ac: + Dispense with the x11-monitoring when neither fam nor inotify are + configured + +2010-01-31 19:35 +0100 Jean-Francois Dockes (08e6abfc5fdf) + + * src/configure.ac: + use 3-arg version of ac_define as the 1-arg one is being obsoleted + +2010-01-31 19:34 +0100 Jean-Francois Dockes (c0add9dd8ad4) + + * website/download.html: + none + +2010-01-30 17:47 +0100 Jean-Francois Dockes (5ed138ff2230) + + * src/qtgui/spell_w.cpp, src/qtgui/spell_w.h: + QT GUI: fix small problems in newly native qt4 term expander + +2010-01-30 17:31 +0100 Jean-Francois Dockes (6ecf959a8e01) + + * src/qt4gui/spell.ui: new file. + * src/qt4gui/recollmain.ui: deleted file. + * .hgignore, src/qt4gui/recollmain.ui, src/qt4gui/spell.ui, + src/qt4gui/uifrom3, src/qtgui/spell_w.cpp, src/qtgui/spell_w.h: + QT GUI: converted the qt4 term expander dialog to native qt4 + +2010-01-30 14:09 +0100 Jean-Francois Dockes (df8a91aaff88) + + * src/qt4gui/rclmain.ui: new file. + * .hgignore, src/qt4gui/rclmain.ui, src/qt4gui/uifrom3, + src/qtgui/confgui/confguiindex.h, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h: + Qt GUI: made the Qt4 main window native Qt4 (no more use of + Q3MainWindow) + +2010-01-30 08:23 +0100 Jean-Francois Dockes (ed18703563b7) + + * .hgignore, src/ChangeLog, website/BUGS.html, website/devel.html, + website/doc.html, website/download.html, website/index.html.en: + none + +2010-01-30 08:23 +0100 Jean-Francois Dockes (22044a3b2e2c) + + * src/qtgui/rclmain_w.h: + Qt 4.6.1 Uic bug: change qt version test from == to <= as bug still + here in 4.6.2 + +2010-01-30 08:21 +0100 Jean-Francois Dockes (b1cb8c664953) + + * src/common/autoconfig.h.in, src/configure, src/configure.ac, + src/index/recollindex.cpp, src/utils/x11mon.cpp: + Renamed WITHOUT_X11 to DISABLE_X11MON for clarification + +2010-01-30 08:18 +0100 Israel G. Lugo (be03b72e1258) + + * src/configure.ac: + Rename option without-gui to disable-qtgui. New option disable- + x11mon. Separate control of creation of the gui and X11 session + monitoring. + +2010-01-29 19:00 +0100 Jean-Francois Dockes (d95c21312a15) + + * src/kde/kioslave/recoll/CMakeLists.txt: + KIO slave: fixed CMakeList to configure Recoll with --enable-pic + +2010-01-29 17:22 +0100 Jean-Francois Dockes (266941720a99) + + * src/python/README.txt: new file. + * src/configure, src/configure.ac, src/doc/user/usermanual.sgml, + src/lib/Makefile, src/lib/mkMake, src/mk/commondefs, + src/mk/localdefs.in, src/php/00README.txt, src/python/README.txt, + src/python/recoll/setup.py: + Implemented configure --enable-pic flag to build the main lib with + position-independant objects. This avoids having to edit localdefs + by hand to build the new php extension, and voids the need for the + Python module to recompile Recoll source files. + +2010-01-29 15:47 +0100 Jean-Francois Dockes (69c42078b8d3) + + * src/php/00README.txt: new file. + * src/php/00README.txt, src/php/recoll/make.sh, + src/php/recoll/recoll.cpp: + PHP extension by Wenqiang Song : make ready for external use. + - added minimal doc + - fixed build script to work around php/libtool issue + - have the module default to Query Language (instead of AND) + +2010-01-28 18:22 +0100 Jean-Francois Dockes (45e7ec5e16c5) + + * .hgignore, website/usermanual/README-dir.txt: new file. + * packaging/debian/changelog, packaging/debian/compat, + packaging/debian/control, packaging/debian/copyright, + packaging/debian/docs, packaging/debian/menu, + packaging/debian/rules, packaging/debian/watch: deleted file. + * .hgignore, packaging/debian/changelog, packaging/debian/compat, + packaging/debian/control, packaging/debian/copyright, + packaging/debian/docs, packaging/debian/menu, + packaging/debian/rules, packaging/debian/watch, src/makesrcdist.sh, + website/usermanual/README-dir.txt: + svn->mercurial modifications + +2010-01-28 16:13 +0000 convert-repo (e85c82d42126) + + * .hgtags: new file. + * .hgtags: + update tags + +2010-01-26 13:23 +0000 dockes (c0cb63a2702a) + + * last before trial switch to mercurial. really. Yeah + +2010-01-26 13:22 +0000 dockes (c40e044c63dd) + + * tests/chm/chm.sh, tests/chm/chm.txt, tests/ics/ics.sh, + tests/ics/ics.txt, tests/zip/mcKee.zip, tests/zip/zip.sh, + tests/zip/zip.txt, website/download-1.12.html: new file. + * tests/chm/chm.sh, tests/chm/chm.txt, tests/ics/ics.sh, + tests/ics/ics.txt, tests/zip/mcKee.zip, tests/zip/zip.sh, + tests/zip/zip.txt, website/download-1.12.html: + last before trial switch to mercurial. really + +2010-01-26 13:21 +0000 dockes (7918f7073757) + + * website/BUGS.html, website/CHANGES.html, website/download.html, + website/index.html.en, website/index.html.fr: + last before trial switch to mercurial + +2010-01-26 07:06 +0000 dockes (0b5ec08c2ba2) + + * src/INSTALL, src/README: + + +2010-01-26 07:06 +0000 dockes (f6a420527382) + + * src/VERSION: + 1.13.02 + +2010-01-26 06:50 +0000 dockes (b223f221578a [RECOLL_1_13_02]) + + * src/doc/user/usermanual.sgml: + clarified --prefix et al + +2010-01-25 20:43 +0000 dockes (7d69ae778654) + + * src/qt4gui/ui_rclmain.h-4.5: new file. + * src/qt4gui/ui_rclmain.h-4.5, src/qtgui/rclmain_w.h: + use older ui include file under qt 4.6.1, the one its uic generates + is broken + +2010-01-25 11:08 +0000 dockes (e2e5a1dd802d) + + * src/php/recoll/recollq.h: deleted file. + * src/php/recoll/recollq.h: + not used? + +2010-01-25 11:06 +0000 dockes (1683475297c1) + + * src/php/recoll/config.m4, src/php/recoll/make.sh, + src/php/recoll/php_recoll.h, src/php/recoll/recoll.cpp, + src/php/recoll/recollq.h, src/php/sample/shell.php: new file. + * src/php/recoll/config.m4, src/php/recoll/make.sh, + src/php/recoll/php_recoll.h, src/php/recoll/recoll.cpp, + src/php/recoll/recollq.h, src/php/sample/shell.php: + initial import from W. Song + +2010-01-20 07:42 +0000 dockes (4df8ebfbb72d) + + * packaging/rpm/recoll.spec, packaging/rpm/recollfedora.spec, + packaging/rpm/recollfedora10.spec, packaging/rpm/recollmdk.spec: + change mail address + +2010-01-10 10:18 +0000 dockes (1c62f24a5ca4) + + * packaging/rpm/recollfedora.spec: + updated for fc12: depend on xapian-core, use qt4 + +2010-01-07 15:20 +0000 dockes (01eb4176400c) + + * src/query/recollq.cpp: + add option to print abstracts + +2010-01-07 08:42 +0000 dockes (a41bbccff862) + + * src/VERSION: + 1.13.01 + +2010-01-07 08:41 +0000 dockes (dde7b27846ef) + + * src/Makefile.in: + distclean removes rclexecm.pyc + +2010-01-07 08:34 +0000 dockes (324bea9902a4) + + * src/qtgui/main.cpp, src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, + src/qtgui/ssearch_w.cpp, src/qtgui/ssearch_w.h: + moved initial db open and possible message boxes from main.cpp to + rclmain_w.cpp first post-init job to avoid random crashes apparently + related to the dialogs being created before app.exec(). Exact cause + not certain, but crashes gone... + +2010-01-07 08:29 +0000 dockes (0629e02f12fe) + + * src/rcldb/searchdata.cpp: + field values were not used in case term expansion was not performed + (phrase or capitalized term) + +2010-01-06 13:29 +0000 dockes (e10bbaeefab5) + + * src/kde/kioslave/recoll/htmlif.cpp, src/query/recollq.cpp, + src/query/xadump.cpp: + adapt kio and recollq to the new internfile interface + +2010-01-06 13:06 +0000 dockes (0f2378be2603) + + * src/kde/kioslave/recoll/CMakeLists.txt: + add libz + +2010-01-05 15:00 +0000 dockes (1ca577447878) + + * src/utils/closefrom.cpp, src/utils/fstreewalk.cpp, + src/utils/fstreewalk.h, tests/Maildir/Maildir.txt, + tests/andor/andor.sh, tests/andor/andor.txt, tests/cjk/cjk.sh, + tests/cjk/cjk.txt, tests/mail/mail.txt, tests/msword/msword.txt, + tests/txt/txt.txt, website/download.html: + 1.13 tests txt mods + solaris port (FNM_LEADING_DIR) + +2010-01-05 13:27 +0000 dockes (0ab6a2dfc2c3) + + * website/BUGS.html, website/CHANGES.html, website/copydocs, + website/credits.html, website/download.html, website/features.html, + website/index.html.en, website/index.html.fr: + web update for 1.13 + +2010-01-05 07:14 +0000 dockes (cb08729afcd2) + + * src/INSTALL, src/README: + + +2010-01-05 07:14 +0000 dockes (a1ba9ba640f7) + + * src/VERSION, src/common/rclconfig.cpp, src/doc/man/recoll.conf.5, + src/doc/user/usermanual.sgml: + 1.13.00: fixed doc ortographic typos + +2009-12-31 08:20 +0000 dockes (c2ae39772161) + + * src/INSTALL, src/README: + + +2009-12-31 08:15 +0000 dockes (851e5b82f3d5) + + * src/VERSION: + 1.13.0 + +2009-12-31 08:15 +0000 dockes (04512125010e) + + * src/recollinstall.in: + handle --without-gui config inside recollinstall.in + +2009-12-20 14:31 +0000 dockes (2cbda11286c5) + + * src/configure, src/configure.ac: + typo in WIHOUT_X11 + +2009-12-17 20:23 +0000 dockes (95eb8a010525) + + * src/doc/user/usermanual.sgml: + There was an error in the mimemap format in the config exemple + +2009-12-14 10:33 +0000 dockes (1e774739395e) + + * src/INSTALL, src/README: + + +2009-12-14 10:33 +0000 dockes (49cdfe826199) + + * src/ChangeLog: + snapshot du jour + +2009-12-14 10:23 +0000 dockes (437be900fa14) + + * src/doc/user/Makefile, src/doc/user/usermanual.sgml: + add --enable-camelcase doc + fix typo in doc Makefile comment + +2009-12-14 10:10 +0000 dockes (009ed00592fd) + + * src/common/autoconfig.h.in, src/common/textsplit.cpp, src/configure, + src/configure.ac: + add --enable-camelcase option to configure + +2009-12-14 09:46 +0000 dockes (1fabd736d16f) + + * src/doc/user/usermanual.sgml, src/index/fsindexer.cpp: + use : as separator in localfields value before parsing as confsimple + +2009-12-14 09:44 +0000 dockes (2b09276dedc8) + + * src/utils/circache.cpp: + fix pointer casting to make gcc happy + +2009-12-14 09:44 +0000 dockes (4ee0085fa59e) + + * src/sampleconf/fields: + typo: keywords->keyword in prefixes + +2009-12-14 09:43 +0000 dockes (87b2caa6ec9c) + + * src/filters/rclabw, src/filters/rcldjvu, src/filters/rcldoc, + src/filters/rcldvi, src/filters/rclflac, src/filters/rclgaim, + src/filters/rclid3, src/filters/rclkwd, src/filters/rcllyx, + src/filters/rclman, src/filters/rclogg, src/filters/rclopxml, + src/filters/rclpdf, src/filters/rclppt, src/filters/rclps, + src/filters/rclpurple, src/filters/rclrtf, src/filters/rclscribus, + src/filters/rclsiduxman, src/filters/rclsoff, src/filters/rclsvg, + src/filters/rcltex, src/filters/rcltext, src/filters/rclwpd, + src/filters/rclxls, src/filters/recfiltcommon: + iscmd: supplement -x with -d test not a dir + +2009-12-14 07:26 +0000 dockes (b8eceb552b3e) + + * src/INSTALL, src/README: + + +2009-12-14 07:25 +0000 dockes (16dc2e0ed9fa) + + * src/makesrcdist.sh: + + +2009-12-14 07:13 +0000 dockes (e5aae08ee26d) + + * src/Makefile.in: + + +2009-12-14 07:07 +0000 dockes (c66c86594b35) + + * src/VERSION: + + +2009-12-14 07:06 +0000 dockes (7229a431d686) + + * src/makesrcdist.sh: + use different release name for beta versions + +2009-12-13 21:40 +0000 dockes (e0033b00df1e) + + * src/doc/user/usermanual.sgml: + anacron + +2009-12-13 16:16 +0000 dockes (e148cd3f92c1) + + * src/sampleconf/recoll.conf.in: + add localfields example + +2009-12-13 16:13 +0000 dockes (89ebf91076d8) + + * src/common/textsplit.cpp, src/internfile/mh_html.cpp, + src/query/plaintorich.cpp, src/utils/base64.cpp: + small amd64 fixes: 64 bits size_type, signed chars + +2009-12-08 07:43 +0000 dockes (026aa6df356f) + + * src/doc/man/recollindex.1, src/doc/man/recollq.1: + clarify stemming options + +2009-12-08 07:43 +0000 dockes (0c698007055e) + + * src/query/recollq.cpp: + add option -s to select stemming language + +2009-12-08 07:42 +0000 dockes (fcb5bca6adf8) + + * src/rcldb/stemdb.cpp: + traces + +2009-12-07 18:47 +0000 dockes (6631c645c9df) + + * src/index/recollindex.cpp: + use setpriority() to be a nice indexer + +2009-12-07 17:43 +0000 dockes (76128d18110e [RECOLL_1_13_0, RECOLL_20091214, RECOLL_1_13_01, RECOLL_1_13_00]) + + * src/qtgui/preview_w.cpp, src/qtgui/preview_w.h: + reimplemented Q3TextDocument::find() to be like the qt3 version + +2009-12-07 14:32 +0000 dockes (b02171ea3078) + + * src/qtgui/preview_w.cpp: + switch preview qtextedit format back to plain text after loading so + that selections copy plain text not html + +2009-12-07 13:27 +0000 dockes (3d37dc441cc9) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/rcldb/searchdata.cpp: + Term expansion: handle field issues inside rcldb::termmatch, + ensuring that we take the field name into account for all + expansions. Ensures that File Name searches and filename: query + language searches work the same, + overall better consistency + +2009-12-07 13:24 +0000 dockes (fe625ef90a21) + + * src/configure.ac: + Israel G. Lugo: make sure that only one of inotify or FAM gets + enabled, giving priority to inotify. + +2009-11-30 10:04 +0000 dockes (a75cd5af7c71) + + * src/VERSION, src/internfile/mimehandler.cpp, + src/kde/kioslave/recoll/htmlif.cpp, src/qtgui/preview_w.cpp, + src/qtgui/preview_w.h, src/query/plaintorich.cpp, + src/query/plaintorich.h, src/sampleconf/mimeconf: + add
 tag to text/plain translated into qt html to preserve
+	indentation. Removes need for rcltext (which did just this). Allow
+	specifying any text/xxx as internal (allows having specific editor
+	but no filter)
+
+2009-11-30 06:34 +0000  dockes    (c4fdcda7df89)
+
+	* src/index/rclmonrcv.cpp:
+	compile either fam or inotify not both
+
+2009-11-29 15:00 +0000  dockes    (6b9ed9ae0949)
+
+	* src/doc/user/usermanual.sgml:
+	change defaults for big text params
+
+2009-11-29 12:56 +0000  dockes    (a04f5006fe89)
+
+	* src/sampleconf/recoll.conf.in:
+	add new 1.13 variables and defaults
+
+2009-11-28 09:15 +0000  dockes    (4b56c2068545)
+
+	* src/internfile/mh_execm.cpp, src/internfile/mh_text.cpp,
+	src/query/docseqhist.cpp, src/utils/circache.cpp:
+	new glibc missing includes
+
+2009-11-28 08:45 +0000  dockes    (012b4b63e260)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_tr.ts, src/qtgui/i18n/recoll_uk.ts,
+	src/qtgui/i18n/recoll_xx.ts:
+	
+
+2009-11-28 08:14 +0000  dockes    (b0e70a20b7f1)
+
+	* src/index/beaglequeue.cpp, src/internfile/mh_text.cpp,
+	src/qtgui/confgui/confguiindex.cpp, src/qtgui/guiutils.cpp:
+	set defaults usedesktoprefs, maxtext 20mb pagesz 1000k webcache 40m
+
+2009-11-28 08:11 +0000  dockes    (ed3a574543f5)
+
+	* src/doc/user/usermanual.sgml:
+	clean-up + documented 1.13 new features
+
+2009-11-28 06:39 +0000  dockes    (c45a690ee533)
+
+	* src/internfile/mh_mbox.cpp:
+	converted iostream to stdio because of mysterious read errors at the
+	last position in the offsets file
+
+2009-11-27 13:23 +0000  dockes    (7fa95cd57200)
+
+	* src/internfile/mh_mail.cpp:
+	add cnf(maildefcharset) to set specific mail default charset (mainly
+	for readpst extracts which are utf-8 but have no charset set)
+
+2009-11-27 13:11 +0000  dockes    (385305ee1820)
+
+	* src/rcldb/rcldb.cpp:
+	loglevel
+
+2009-11-27 13:08 +0000  dockes    (8cc1ab099807)
+
+	* src/internfile/mh_mbox.cpp:
+	include sys/stat
+
+2009-11-27 12:41 +0000  dockes    (c3039d4eab51)
+
+	* src/internfile/Filter.h, src/internfile/internfile.cpp,
+	src/internfile/mh_mbox.cpp, src/internfile/mh_mbox.h,
+	src/internfile/mimehandler.h, src/query/docseqhist.cpp:
+	implemented a cache for mbox message header offsets
+
+2009-11-27 07:07 +0000  dockes    (a1a92e0952dd)
+
+	* src/internfile/mh_mbox.cpp:
+	Support From "bla bla" (quoted) From lines
+
+2009-11-27 07:00 +0000  dockes    (64f09e3ad5a7)
+
+	* src/internfile/internfile.cpp:
+	update test driver
+
+2009-11-26 14:03 +0000  dockes    (023c2a8520de)
+
+	* src/aspell/rclaspell.cpp, src/aspell/rclaspell.h,
+	src/qtgui/reslist.cpp, src/qtgui/reslist.h, src/query/docseq.h,
+	src/query/docseqdb.cpp, src/query/docseqdb.h,
+	src/query/reslistpager.cpp, src/query/reslistpager.h,
+	src/rcldb/rcldb.cpp, src/rcldb/searchdata.cpp,
+	src/rcldb/searchdata.h:
+	suggest alternate spellings if no results
+
+2009-11-26 13:52 +0000  dockes    (4270622aa3e0)
+
+	* src/qtgui/guiutils.cpp:
+	suppressed core dump at exit on unexisting config
+
+2009-11-26 07:17 +0000  dockes    (f02bf2b6ea30)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rclquery.cpp, src/rcldb/rclquery.h:
+	use only match terms to build doc abstract, not all query terms
+	(might save a little effort)
+
+2009-11-26 07:15 +0000  dockes    (90776b10554c)
+
+	* src/qtgui/rclmain_w.cpp:
+	spell tool must be created even is USE_ASPELL is undefined
+
+2009-11-25 14:37 +0000  dockes    (e3faedd237b8)
+
+	* src/utils/md5.cpp:
+	suppress unused parm warning
+
+2009-11-25 11:07 +0000  dockes    (f8011c9579c8)
+
+	* packaging/debian/debiankio/changelog,
+	packaging/debian/debiankio/compat,
+	packaging/debian/debiankio/control,
+	packaging/debian/debiankio/copyright,
+	packaging/debian/debiankio/dirs, packaging/debian/debiankio/docs,
+	packaging/debian/debiankio/rules, packaging/debian/debiankio/watch,
+	packaging/debian/debianrecoll/changelog,
+	packaging/debian/debianrecoll/compat,
+	packaging/debian/debianrecoll/control,
+	packaging/debian/debianrecoll/copyright,
+	packaging/debian/debianrecoll/docs,
+	packaging/debian/debianrecoll/menu,
+	packaging/debian/debianrecoll/rules,
+	packaging/debian/debianrecoll/watch: new file.
+	* packaging/debian/debiankio/changelog,
+	packaging/debian/debiankio/compat,
+	packaging/debian/debiankio/control,
+	packaging/debian/debiankio/copyright,
+	packaging/debian/debiankio/dirs, packaging/debian/debiankio/docs,
+	packaging/debian/debiankio/rules, packaging/debian/debiankio/watch,
+	packaging/debian/debianrecoll/changelog,
+	packaging/debian/debianrecoll/compat,
+	packaging/debian/debianrecoll/control,
+	packaging/debian/debianrecoll/copyright,
+	packaging/debian/debianrecoll/docs,
+	packaging/debian/debianrecoll/menu,
+	packaging/debian/debianrecoll/rules,
+	packaging/debian/debianrecoll/watch:
+	added debian dir to build kio-recoll
+
+2009-11-24 10:25 +0000  dockes    (87057b6e2cba)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt:
+	execute minimum recoll config inside cmakelists to create rclversion
+	and autoconfig includes
+
+2009-11-24 10:24 +0000  dockes    (a6e854084ffb)
+
+	* src/utils/smallut.h:
+	gcc4
+
+2009-11-23 19:51 +0000  dockes    (42785e498950)
+
+	* src/index/beaglequeue.cpp:
+	store beagle fields before interning the file
+
+2009-11-23 17:38 +0000  dockes    (aaccb7e813a8)
+
+	* src/qtgui/preview_w.cpp:
+	if text is empty, display fields by default
+
+2009-11-23 17:37 +0000  dockes    (129654f22b3c)
+
+	* src/internfile/internfile.cpp:
+	in FileInterner::FileInterner(Rcl::Doc) (query), declare the
+	BeagleQueue static so that the cache persists between FileInterner
+	objects
+
+2009-11-23 17:36 +0000  dockes    (2292efb797b4)
+
+	* src/internfile/internfile.h:
+	comments
+
+2009-11-23 16:12 +0000  dockes    (a7ed9c85c313)
+
+	* src/query/dynconf.cpp, src/query/dynconf.h: new file.
+	* src/query/history.cpp, src/query/history.h: deleted file.
+	* src/lib/Makefile, src/lib/mkMake, src/qtgui/guiutils.cpp,
+	src/qtgui/main.cpp, src/qtgui/preview_w.cpp,
+	src/qtgui/rclmain_w.cpp, src/qtgui/recoll.h,
+	src/query/docseqhist.cpp, src/query/docseqhist.h,
+	src/query/dynconf.cpp, src/query/dynconf.h, src/query/history.cpp,
+	src/query/history.h:
+	revamped history feature to be udi-based while supporting old format
+
+2009-11-23 16:11 +0000  dockes    (8a494a30e71f)
+
+	* src/rcldb/rcldb.cpp:
+	set udi in meta from getDoc(udi)
+
+2009-11-23 16:10 +0000  dockes    (c432dcb83d8f)
+
+	* src/index/beaglequeue.cpp, src/utils/circache.cpp,
+	src/utils/circache.h:
+	Beaglequeue: simplify index from cache now that udi entries are
+	unique in cache
+
+2009-11-22 17:27 +0000  dockes    (112515ddfd1b)
+
+	* src/index/beaglequeue.cpp, src/utils/circache.cpp,
+	src/utils/circache.h:
+	only keep the latest entry for a given udi in the cache
+
+2009-11-22 17:26 +0000  dockes    (c47346e105ac)
+
+	* src/utils/smallut.h:
+	added tempbuf class
+
+2009-11-21 13:36 +0000  dockes    (d497773469db)
+
+	* src/internfile/mimehandler.cpp, src/qtgui/rclmain_w.cpp:
+	allow setting attrs on mimeview defs, factorize some code with
+	mhExecFactory
+
+2009-11-21 13:35 +0000  dockes    (77639dc8a584)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h:
+	added valueSplitAttributes() method
+
+2009-11-21 11:18 +0000  dockes    (50c2c8c764bb)
+
+	* src/internfile/mimehandler.cpp:
+	use a confsimple to parse the additional filter attributes
+
+2009-11-21 11:14 +0000  dockes    (ba1b73290998)
+
+	* src/qtgui/guiutils.h:
+	add ipath to default paragraph format
+
+2009-11-18 15:32 +0000  dockes    (132c512aacde)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt:
+	added beaglequeue/circache to kio build because of internfile
+	dependancy
+
+2009-11-18 14:27 +0000  dockes    (d1587dd98290)
+
+	* src/utils/circache.cpp:
+	warning
+
+2009-11-18 14:26 +0000  dockes    (812296ef15d8)
+
+	* src/rcldb/rclquery.cpp:
+	query::getrescnt() would only work once following 1.13 mods (affects
+	python api)
+
+2009-11-18 14:25 +0000  dockes    (cc1924f2d969)
+
+	* src/python/samples/recollq.py:
+	
+
+2009-11-18 14:03 +0000  dockes    (e60f229404a4)
+
+	* src/python/recoll/pyrecoll.cpp:
+	add some casts to avoid kwargs const warnings
+
+2009-11-18 13:46 +0000  dockes    (0e29576743b0)
+
+	* src/index/rclmonrcv.cpp:
+	typo
+
+2009-11-18 12:33 +0000  dockes    (da553b8d1e93)
+
+	* src/filters/rclchm, src/filters/rclexecm.py, src/filters/rclics,
+	src/internfile/mh_execm.cpp, src/internfile/mh_execm.h:
+	handle REFILTERROR in execm
+
+2009-11-18 10:26 +0000  dockes    (f28392bec173)
+
+	* src/internfile/mh_mail.cpp, src/rcldb/rcldb.cpp:
+	mh_mail: use truncate_to_word to avoid cutting an utf8 char. rcldb:
+	logdeb text_to_word errors
+
+2009-11-18 08:24 +0000  dockes    (c9b8704e7ffa)
+
+	* src/index/beaglequeue.cpp, src/mk/FreeBSD:
+	beaglequeue fully functional, small fixes remaining?
+
+2009-11-18 07:57 +0000  dockes    (0f863324690f)
+
+	* src/index/beaglequeue.cpp:
+	ok with compression
+
+2009-11-18 07:46 +0000  dockes    (7925e58ac0d9)
+
+	* src/utils/circache.cpp, src/utils/circache.h:
+	compression works
+
+2009-11-17 14:52 +0000  dockes    (122d9a523dc7)
+
+	* src/utils/circache.cpp, src/utils/circache.h:
+	circache ok
+
+2009-11-16 16:18 +0000  dockes    (88021fc84abd)
+
+	* src/internfile/internfile.cpp:
+	Lack of error checking after have_document() in preview case could
+	lead to looping, and cancellation was not checked to make things
+	worse
+
+2009-11-16 16:16 +0000  dockes    (22e0540453bc)
+
+	* src/configure:
+	--without-gui
+
+2009-11-16 16:12 +0000  dockes    (d3e16fb089de)
+
+	* src/qt4gui/recoll.pro.in:
+	stupid mistake in previous cosmetic change
+
+2009-11-16 16:11 +0000  dockes    (a422d8f6d6fd)
+
+	* src/index/fsindexer.cpp:
+	make very sure ~/.beagle is in the skippedPaths
+
+2009-11-16 16:10 +0000  dockes    (effac8983ab5)
+
+	* src/internfile/mh_mail.cpp:
+	reason msg
+
+2009-11-16 12:50 +0000  dockes    (bfc0df6ab067)
+
+	* src/Makefile.in, src/common/autoconfig.h.in, src/configure.ac,
+	src/index/Makefile, src/mk/localdefs.in, src/utils/x11mon.cpp:
+	add --without-gui configure option
+
+2009-11-15 16:41 +0000  dockes    (81edb2c4cef7)
+
+	* src/index/beaglequeue.cpp, src/index/fsindexer.cpp,
+	src/utils/circache.cpp:
+	catch cancel exceptions cast by internfile()
+
+2009-11-15 14:39 +0000  dockes    (4539869b5761)
+
+	* src/index/fsindexer.h, src/qtgui/rclmain_w.cpp,
+	src/query/reslistpager.cpp, src/rcldb/rcldoc.cpp,
+	src/rcldb/rcldoc.h, src/sampleconf/fields:
+	changed apptag field name to rclaptg
+
+2009-11-15 14:18 +0000  dockes    (b41678f5ad12)
+
+	* src/qt4gui/recoll.pro.in, src/qtgui/recoll.pro.in:
+	add -ldl -lX11 for binutils-gold
+
+2009-11-15 08:38 +0000  dockes    (3801ee9a51c6)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/index/fsindexer.cpp, src/index/rclmonrcv.cpp,
+	src/utils/fstreewalk.cpp, src/utils/fstreewalk.h,
+	src/utils/smallut.cpp, src/utils/smallut.h:
+	rationalized how we recompute things on setkeydir. recoll_noindex
+	and skippedNames can now be changed at any point in the tree
+
+2009-11-14 11:34 +0000  dockes    (a922eac98d16)
+
+	* src/index/rclmonprc.cpp:
+	monitor: accumulate mods during 30S before indexing
+
+2009-11-14 10:29 +0000  dockes    (ea134de640e0)
+
+	* src/index/beaglequeue.cpp, src/index/beaglequeue.h,
+	src/index/fsindexer.cpp, src/index/indexer.cpp,
+	src/index/rclmonrcv.cpp, src/index/recollindex.cpp,
+	src/utils/circache.cpp:
+	monitor the beagle queue
+
+2009-11-14 10:25 +0000  dockes    (42421f027b94)
+
+	* src/filters/rclchm, src/filters/rclics, src/filters/rcltext:
+	emit helpernotfound
+
+2009-11-14 08:21 +0000  dockes    (93baac7e87ac)
+
+	* src/index/beaglequeue.cpp, src/index/beaglequeue.h,
+	src/index/fsindexer.cpp, src/index/fsindexer.h,
+	src/index/indexer.cpp, src/index/indexer.h,
+	src/index/recollindex.cpp, src/index/recollindex.h,
+	src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	beaglequeue indexFiles
+
+2009-11-13 13:29 +0000  dockes    (7d0c4d7a917c)
+
+	* src/index/beaglequeue.cpp, src/index/beaglequeue.h,
+	src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/qtgui/confgui/confguiindex.cpp, src/qtgui/preview_w.cpp,
+	src/qtgui/preview_w.h, src/qtgui/rclmain_w.cpp,
+	src/rcldb/rcldoc.cpp, src/rcldb/rcldoc.h, src/rcldb/rclquery.cpp,
+	src/sampleconf/fields:
+	1st beagle version with index/preview working
+
+2009-11-13 09:08 +0000  dockes    (71f8c28cbeba)
+
+	* src/qtgui/idxthread.cpp:
+	integrate beaglequeueindexer for indexing. Work remains for
+	indexfiles() at least
+
+2009-11-13 09:08 +0000  dockes    (dda5121a7c45)
+
+	* src/utils/circache.cpp, src/utils/circache.h:
+	integrate beaglequeueindexer for indexing. Work remains for
+	indexfiles() at least
+
+2009-11-13 09:07 +0000  dockes    (364d46e16faf)
+
+	* src/index/beaglequeue.cpp, src/index/beaglequeue.h,
+	src/index/fsindexer.cpp, src/index/fsindexer.h,
+	src/index/indexer.cpp, src/index/indexer.h,
+	src/index/recollindex.cpp:
+	integrate beaglequeueindexer for indexing. Work remains for
+	indexfiles() at least
+
+2009-11-13 09:04 +0000  dockes    (7e32466740a7)
+
+	* src/configure.ac:
+	Israel G. Lugo: give priority to the user's PATH when looking for
+	qmake (fixes detecting the wrong qmake when more than one exists).
+
+2009-11-13 09:01 +0000  dockes    (3503bfba6b70)
+
+	* src/rcldb/rcldoc.cpp, src/rcldb/rcldoc.h:
+	make dump const
+
+2009-11-13 09:01 +0000  dockes    (b4c8330037e7)
+
+	* src/lib/Makefile, src/lib/mkMake:
+	add beaglequeue, fsindexer
+
+2009-11-13 08:58 +0000  dockes    (63ee628229e7)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/confgui/confguiindex.h:
+	add panel for beaglequeue parameters + arrange so that a checkbox
+	can enable/disable other params
+
+2009-11-13 08:54 +0000  dockes    (5edf24b7552e)
+
+	* src/sampleconf/fields:
+	comments
+
+2009-11-13 08:15 +0000  dockes    (a829fce15458)
+
+	* src/filters/rclchm, src/filters/rclexecm.py, src/filters/rclics,
+	src/filters/rclimg, src/filters/rclzip, src/internfile/mh_execm.cpp:
+	dont use 0-sized doc to mean eof now
+
+2009-11-11 18:09 +0000  dockes    (21b6ba1309c7)
+
+	* src/filters/rclimg:
+	send mimetype
+
+2009-11-11 18:07 +0000  dockes    (7f2a7a7214fb)
+
+	* src/internfile/mh_execm.cpp:
+	set mimetype for the non-ipath case
+
+2009-11-11 07:47 +0000  dockes    (75f9d10cf2f3)
+
+	* src/index/fsindexer.cpp, src/index/fsindexer.h,
+	src/index/indexer.cpp, src/index/indexer.h,
+	src/index/recollindex.cpp:
+	moved common db code from fsindexer to confindexer
+
+2009-11-10 18:11 +0000  dockes    (e079c8ce273f)
+
+	* src/index/beaglequeue.cpp, src/index/beaglequeue.h: new file.
+	* src/index/beaglequeue.cpp, src/index/beaglequeue.h:
+	
+
+2009-11-10 18:10 +0000  dockes    (698e70099ec0)
+
+	* src/index/fsindexer.cpp, src/index/fsindexer.h,
+	src/index/recollindex.h: new file.
+	* src/index/fsindexer.cpp, src/index/fsindexer.h,
+	src/index/indexer.cpp, src/index/indexer.h, src/index/rclmonprc.cpp,
+	src/index/recollindex.cpp, src/index/recollindex.h:
+	dbindexer->fsindexer, split into its own file
+
+2009-11-10 17:42 +0000  dockes    (ccf674432104)
+
+	* src/ChangeLog:
+	
+
+2009-11-10 17:42 +0000  dockes    (065c40b8964d)
+
+	* src/index/recollindex.cpp:
+	small cleanups and add option to call beaglequeue
+
+2009-11-10 17:41 +0000  dockes    (d4ff290d1615)
+
+	* src/index/indexer.cpp:
+	small cleanups and comments
+
+2009-11-10 17:39 +0000  dockes    (00c5f0c09ef9)
+
+	* src/index/indexer.h:
+	comments
+
+2009-11-10 17:38 +0000  dockes    (02b632bcbeca)
+
+	* src/index/rclmonrcv.cpp:
+	remove indexer.h include
+
+2009-11-10 17:38 +0000  dockes    (ba2255ec8b62)
+
+	* src/common/rclinit.h:
+	comment
+
+2009-11-10 17:37 +0000  dockes    (915bf923b8da)
+
+	* src/utils/fstreewalk.cpp, src/utils/fstreewalk.h:
+	add nocanon option
+
+2009-11-10 17:34 +0000  dockes    (29b753cd1f78)
+
+	* src/utils/circache.cpp, src/utils/circache.h:
+	intermediary checkpoint (things work, no index, no compression)
+
+2009-11-10 17:32 +0000  dockes    (16e0d5965055)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	removed the useless keep_updated flag
+
+2009-11-10 17:31 +0000  dockes    (75878eb08588)
+
+	* src/rcldb/rcldoc.cpp, src/rcldb/rcldoc.h:
+	added dump function
+
+2009-11-10 17:30 +0000  dockes    (35b43d00db47)
+
+	* src/query/recollq.cpp:
+	added explicit flag parameter to Internfile constructeur for helping
+	with beagle queue integration
+
+2009-11-10 17:29 +0000  dockes    (75255bb8d7a0)
+
+	* src/sampleconf/fields:
+	add dc:description as keywords alias
+
+2009-11-10 09:39 +0000  dockes    (ee6104876da9)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/kde/kioslave/recoll/htmlif.cpp, src/qtgui/preview_w.cpp:
+	added explicit flag parameter to Internfile constructeur for helping
+	with beagle queue integration
+
+2009-11-09 09:26 +0000  dockes    (7c3c0eed036b)
+
+	* src/utils/circache.cpp, src/utils/circache.h: new file.
+	* src/lib/Makefile, src/lib/mkMake, src/utils/Makefile,
+	src/utils/circache.cpp, src/utils/circache.h:
+	circache
+
+2009-11-09 09:26 +0000  dockes    (877bb76973aa)
+
+	* src/utils/conftree.cpp, src/utils/conftree.h:
+	add some constness
+
+2009-11-06 11:33 +0000  dockes    (944e0b9d1d53)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp, src/qtgui/reslist.h,
+	src/query/docseq.h, src/query/docseqdb.cpp, src/query/docseqdb.h,
+	src/query/docseqhist.cpp, src/query/docseqhist.h,
+	src/utils/fileudi.h, src/utils/pathut.cpp, src/utils/pathut.h:
+	allow opening parent/enclosing doc with native editor in reslist
+
+2009-11-06 11:26 +0000  dockes    (1d9a5530d7bf)
+
+	* src/sampleconf/mimeview:
+	added okular as chm viewer
+
+2009-11-04 13:52 +0000  dockes    (226d88ccb6c1)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/confguiindex.cpp:
+	store file names using local8bit qstring conversions
+
+2009-11-04 13:43 +0000  dockes    (b57bd81d3e8e)
+
+	* src/utils/fstreewalk.h:
+	comment
+
+2009-11-04 13:42 +0000  dockes    (2037ae120bcf)
+
+	* src/utils/cancelcheck.h:
+	comment
+
+2009-10-31 09:00 +0000  dockes    (3ad7f6c85ce2)
+
+	* src/internfile/mh_mail.cpp, src/internfile/mh_mail.h:
+	extract msgid + generate abstract at start of txt, excluding headers
+
+2009-10-31 08:59 +0000  dockes    (9e7ae93bd35b)
+
+	* src/utils/mimeparse.cpp:
+	change rfc2047 mail header decoding (=?iso-xx stuff) so that a start
+	of encoding section can be recognized even not after white space
+
+2009-10-30 19:05 +0000  dockes    (eb9ed35f9fe0)
+
+	* src/qtgui/rclmain_w.cpp:
+	allow substituting all doc fields in viewer command line
+
+2009-10-30 19:04 +0000  dockes    (d8065c96ceae)
+
+	* src/qtgui/viewaction.ui:
+	clarify using desktop defs in action choice dialog
+
+2009-10-30 10:16 +0000  dockes    (4a744302db21)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/qtgui/rclmain_w.cpp, src/query/reslistpager.cpp,
+	src/sampleconf/fields:
+	Allow setting fields in fs subtree. Use for an application tag used
+	for starting a specialized viewer
+
+2009-10-30 08:59 +0000  dockes    (bdd54ae7a182)
+
+	* src/VERSION, src/common/rclconfig.h, src/index/indexer.cpp,
+	src/index/indexer.h, src/internfile/mimehandler.cpp,
+	src/rcldb/rcldb.cpp, src/rcldb/rclquery.cpp, src/utils/conftree.cpp,
+	src/utils/conftree.h:
+	Allow fields local to a subtree to be set in the configuration
+
+2009-10-30 08:53 +0000  dockes    (aa8c442a67ec)
+
+	* src/configure.ac:
+	use /bin/sh to execute recollinstall instead of making it executable
+
+2009-10-30 08:53 +0000  dockes    (0faf1f6ccf5f)
+
+	* src/Makefile.in, src/configure:
+	use /bin/sh to execute recollinstall instead of making it executable
+
+2009-10-29 18:11 +0000  dockes    (2338d18226f2)
+
+	* src/qtgui/uiprefs.ui:
+	move the use-desktop-preference checkbox close to the choose editors
+	button
+
+2009-10-29 18:10 +0000  dockes    (4b6f29c1e3c3)
+
+	* src/sampleconf/mimeconf:
+	
+
+2009-10-29 18:09 +0000  dockes    (2de2f1804086)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h:
+	support wildcard filtering in getConfNames() + implement config
+	checking function in test driver
+
+2009-10-29 18:08 +0000  dockes    (78c287d1d2da)
+
+	* src/utils/conftree.cpp, src/utils/conftree.h:
+	bugfix: if last line ended with backslash, entry was ignored. new
+	function: filter by wildcard expr in getNames()
+
+2009-10-29 13:44 +0000  dockes    (26ae4011727a)
+
+	* src/sampleconf/mimeconf, src/sampleconf/mimemap:
+	chm+comments
+
+2009-10-29 13:34 +0000  dockes    (178273f496f2)
+
+	* src/sampleconf/recoll.conf.in:
+	comment
+
+2009-10-28 13:08 +0000  dockes    (9435a56f1962)
+
+	* src/qtgui/reslist.cpp, src/qtgui/reslist.h:
+	fix signal/slot type mismatch for setSortParams
+
+2009-10-26 13:19 +0000  dockes    (2a369661c70c)
+
+	* src/qtgui/uiprefs_w.cpp:
+	disable app-choosing button when use-desktop-prefs is activated
+
+2009-10-26 11:16 +0000  dockes    (8cdb908a253d)
+
+	* src/qtgui/rclmain_w.cpp:
+	qt4 sometimes doesnt display the status bar if its not created in
+	init
+
+2009-10-26 10:00 +0000  dockes    (758f39788d0c)
+
+	* src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h:
+	arrange to send pageup/down and shift-home to the reslist
+
+2009-10-24 15:02 +0000  dockes    (7d98b5c330c1)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb_p.h, src/rcldb/rclquery.cpp,
+	src/rcldb/rclquery_p.h:
+	unified retrying for databaseModified errors
+
+2009-10-24 11:00 +0000  dockes    (9d49d2991eed)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/rcldb/rcldb_p.h,
+	src/rcldb/rclquery.cpp:
+	renamed fields for clarity
+
+2009-10-24 06:37 +0000  dockes    (1486d8f630fc)
+
+	* src/filters/rclchm, src/filters/rclics, src/filters/rclzip:
+	cleanup
+
+2009-10-24 06:17 +0000  dockes    (6a8a9821c17c)
+
+	* src/filters/rclexecm.py, src/filters/rclzip:
+	use python zipfile
+
+2009-10-23 16:45 +0000  dockes    (436e03b2f0c1)
+
+	* src/filters/rclchm:
+	comments
+
+2009-10-23 16:03 +0000  dockes    (be653b19dd28)
+
+	* src/filters/rclchm: new file.
+	* src/filters/rclchm:
+	first working
+
+2009-10-23 16:03 +0000  dockes    (99a819213c2a)
+
+	* src/filters/rclzip:
+	comment
+
+2009-10-22 17:28 +0000  dockes    (e5f16d6d23db)
+
+	* src/doc/user/usermanual.sgml:
+	%(fldname) specs
+
+2009-10-22 17:27 +0000  dockes    (3e37f6aac6c5)
+
+	* src/doc/user/docbook.css:
+	new freebsd version
+
+2009-10-22 17:27 +0000  dockes    (1535c07dd8a6)
+
+	* src/sampleconf/mimeconf:
+	ics
+
+2009-10-22 17:16 +0000  dockes    (deaef902d7e3)
+
+	* src/sampleconf/mimeconf:
+	add ics + more programming languages
+
+2009-10-22 17:16 +0000  dockes    (98009bab1e61)
+
+	* src/sampleconf/mimemap:
+	add ics + more programming languages
+
+2009-10-22 17:13 +0000  dockes    (bf9a0c5eeb5c)
+
+	* src/filters/rclics: new file.
+	* src/filters/rclexecm.py, src/filters/rclics:
+	initial support for icalendar splitting
+
+2009-10-22 12:24 +0000  dockes    (f97b91cb8153)
+
+	* src/filters/rclexecm.py: new file.
+	* src/filters/rclexecm.py, src/filters/rclzip:
+	made rclexecm a class in a separate module
+
+2009-10-22 11:58 +0000  dockes    (9361ab690eec)
+
+	* src/filters/rclzip:
+	fully extracted common code
+
+2009-10-21 21:00 +0000  dockes    (39b12da95a76)
+
+	* src/filters/rclzip: new file.
+	* src/filters/rclzip:
+	initial
+
+2009-10-21 20:59 +0000  dockes    (ef17d33ea782)
+
+	* website/download.html:
+	1.12.2
+
+2009-10-21 12:02 +0000  dockes    (2baccf2235b6)
+
+	* src/qtgui/rclmain_w.cpp, src/query/docseqdb.cpp,
+	src/query/docseqdb.h, src/query/reslistpager.cpp,
+	src/query/reslistpager.h, src/utils/Makefile, src/utils/smallut.cpp,
+	src/utils/smallut.h:
+	fix queryBuildAbstract option functionality. Allow substituting
+	%(fieldname) in reslist paragraph format
+
+2009-10-21 12:00 +0000  dockes    (30a02a6bada8)
+
+	* src/internfile/mimehandler.h:
+	warning
+
+2009-10-21 11:58 +0000  dockes    (ebc82bec7704)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt, src/utils/closefrom.cpp:
+	linux
+
+2009-10-21 11:32 +0000  dockes    (1cc979921a0d)
+
+	* src/internfile/mh_text.cpp, src/utils/closefrom.cpp:
+	gcc43+linux compile
+
+2009-10-21 07:48 +0000  dockes    (72168c28c9bb)
+
+	* src/makestaticdist.sh:
+	cleanup .svn directories
+
+2009-10-21 07:24 +0000  dockes    (a550073d34d4)
+
+	* src/makestaticdist.sh:
+	get makestaticdist to work with qt4
+
+2009-10-21 07:15 +0000  dockes    (e44497010880)
+
+	* packaging/debian/changelog, packaging/debian/control,
+	packaging/debian/menu, packaging/debian/rules,
+	packaging/rpm/recollmdk.spec, tests/lyx/lyx.txt:
+	1.12.2 release fixes
+
+2009-10-21 07:15 +0000  dockes    (cecbbb5e3c23)
+
+	* website/pics/mario.png, website/pics/smile.png: new file.
+	* website/mario.png, website/smile.png: deleted file.
+	* website/BUGS.html, website/CHANGES.html, website/devel.html,
+	website/download.html, website/features.html, website/index.html.en,
+	website/index.html.fr, website/mario.png, website/pics/index.html,
+	website/pics/mario.png, website/pics/recoll5-thumb.png,
+	website/pics/recoll5.png, website/pics/smile.png, website/smile.png:
+	1.12.2 release
+
+2009-10-19 16:20 +0000  dockes    (b2a9b0c5fc47)
+
+	* src/lib/Makefile, src/lib/mkMake:
+	add closefrom
+
+2009-10-19 16:19 +0000  dockes    (5b3c0f9438a9)
+
+	* src/README, src/doc/man/recoll.conf.5, src/doc/man/recollindex.1,
+	src/doc/user/usermanual.sgml, src/filters/rclsvg:
+	explict(e)ly errors again
+
+2009-10-19 10:51 +0000  dockes    (70ed5ded2a5e)
+
+	* src/qtgui/uiprefs.ui:
+	move the use-desktop-preference checkbox close to the choose editors
+	button
+
+2009-10-19 07:30 +0000  dockes    (d25d7050d60c)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rclquery.cpp:
+	catch xapian exceptions in 2 more places.
+
+2009-10-18 07:57 +0000  dockes    (cbcf397757a1)
+
+	* src/qtgui/reslist.cpp:
+	reslist: rightclick popup would not work inside table
+
+2009-10-17 06:38 +0000  dockes    (cb08cd6b282b)
+
+	* src/Makefile.in, src/index/recollindex.cpp, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	rclversion.h must not include xapian.h. Replace with
+	Rcl::version_string()
+
+2009-10-15 15:50 +0000  dockes    (6d01b54d3cf5)
+
+	* src/qtgui/preview_w.cpp:
+	compile with qt3
+
+2009-10-15 12:32 +0000  dockes    (749d93d72709)
+
+	* src/index/rclmonprc.cpp:
+	only call x11IsAlive from the main thread
+
+2009-10-15 12:32 +0000  dockes    (7339dd810b4c)
+
+	* src/utils/Makefile, src/utils/conftree.cpp, src/utils/execmd.cpp:
+	small linux include and makefile adjustments
+
+2009-10-14 12:25 +0000  dockes    (4bfcb9f6483a)
+
+	* src/utils/execmd.cpp, src/utils/execmd.h:
+	m_cancelRequest->m_killRequest to avoid confusion with cancelcheck +
+	close descriptors before exec
+
+2009-10-14 12:24 +0000  dockes    (834b841865f0)
+
+	* src/internfile/mh_exec.cpp:
+	no timeout if filtermaxseconds is -1
+
+2009-10-14 12:23 +0000  dockes    (894b94a986c2)
+
+	* src/qtgui/confgui/confguiindex.cpp, src/sampleconf/recoll.conf.in:
+	add filtermaxseconds to config
+
+2009-10-14 12:22 +0000  dockes    (eec367c78b29)
+
+	* src/utils/closefrom.cpp, src/utils/closefrom.h: new file.
+	* src/utils/closefrom.cpp, src/utils/closefrom.h:
+	
+
+2009-10-14 06:21 +0000  dockes    (48782c4d99bd)
+
+	* src/filters/rclimg, src/index/recollindex.cpp,
+	src/internfile/mh_execm.cpp, src/internfile/mh_execm.h,
+	src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/utils/execmd.cpp:
+	execm first working zip version
+
+2009-10-13 17:32 +0000  dockes    (ac8388c11bcb)
+
+	* src/utils/idfile.cpp, src/utils/idfile.h:
+	allow working on memory string
+
+2009-10-13 16:37 +0000  dockes    (25cd49e5f3b2)
+
+	* src/internfile/mh_exec.cpp:
+	comments
+
+2009-10-13 12:22 +0000  dockes    (f8f821415451)
+
+	* src/internfile/mh_exec.cpp:
+	handle interrupt requests and set timeout on execs
+
+2009-10-13 12:21 +0000  dockes    (0ec65928f00f)
+
+	* src/utils/execmd.cpp:
+	use process group to control/kill execd processes
+
+2009-10-13 12:20 +0000  dockes    (ad3f88e0578e)
+
+	* src/sampleconf/recoll.conf.in:
+	added loop.ps to skippedFiles
+
+2009-10-12 16:27 +0000  dockes    (2d5321b8e32c)
+
+	* src/common/rclinit.cpp:
+	also block USR1 USR2
+
+2009-10-09 13:58 +0000  dockes    (9ef52b9903d4)
+
+	* src/internfile/mh_execm.cpp, src/internfile/mh_execm.h: new file.
+	* src/filters/rclimg, src/internfile/mh_exec.cpp,
+	src/internfile/mh_exec.h, src/internfile/mh_execm.cpp,
+	src/internfile/mh_execm.h, src/internfile/mimehandler.cpp,
+	src/lib/Makefile, src/lib/mkMake, src/sampleconf/mimeconf:
+	execm persistent filters
+
+2009-10-09 13:57 +0000  dockes    (94243b4ecca6)
+
+	* src/common/textsplit.cpp:
+	process camelCase
+
+2009-10-09 13:34 +0000  dockes    (9129980cfe0e)
+
+	* src/utils/execmd.cpp, src/utils/execmd.h, src/utils/netcon.cpp,
+	src/utils/netcon.h:
+	Execmd: added count parameter to receive(), and new getline()
+	function Netcon: fix receive() to properly handle the case where
+	there is initially data in the line buffer
+
+2009-10-04 13:25 +0000  dockes    (f81cdfd36952)
+
+	* src/utils/readfile.cpp:
+	
+
+2009-10-04 13:24 +0000  dockes    (fe1c983b582e)
+
+	* src/mk/commondefs:
+	remove -I/usr/local/include from commondefs!
+
+2009-09-30 15:53 +0000  dockes    (401a53878320)
+
+	* src/internfile/mh_text.cpp:
+	dont set ipath for the first page in text files to avoid dual
+	records for files under the page size
+
+2009-09-30 15:45 +0000  dockes    (1ce015f48d3a)
+
+	* src/internfile/mh_text.cpp, src/internfile/mh_text.h,
+	src/qtgui/confgui/confguiindex.cpp, src/sampleconf/recoll.conf.in,
+	src/utils/readfile.cpp, src/utils/readfile.h:
+	implemented paged text files
+
+2009-09-29 15:58 +0000  dockes    (b288f2d22754)
+
+	* src/internfile/mh_text.cpp, src/qtgui/confgui/confguiindex.cpp,
+	src/sampleconf/recoll.conf.in:
+	textfilemaxmbs
+
+2009-09-29 15:58 +0000  dockes    (a41ae31020fa)
+
+	* src/utils/execmd.cpp:
+	loglevels
+
+2009-09-29 14:49 +0000  dockes    (89ab6fcd4bef)
+
+	* src/utils/netcon.cpp, src/utils/netcon.h: new file.
+	* src/utils/netcon.cpp, src/utils/netcon.h:
+	
+
+2009-09-29 14:49 +0000  dockes    (254aad5cdd17)
+
+	* src/utils/netcon.cpp, src/utils/netcon.h: deleted file.
+	* src/utils/netcon.cpp, src/utils/netcon.h:
+	
+
+2009-09-29 08:47 +0000  dockes    (302c0dd0dfa0)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h:
+	got rid of the preview tabdata array
+
+2009-09-29 07:48 +0000  dockes    (f65d40e808c6)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h:
+	make print a slot in the editor, not the preview
+
+2009-09-28 18:19 +0000  dockes    (5c03bd6d7d00)
+
+	* src/doc/user/usermanual.sgml, src/qtgui/preview_w.cpp,
+	src/qtgui/preview_w.h:
+	Preview printing
+
+2009-09-28 17:53 +0000  dockes    (564c8022205f)
+
+	* src/utils/execmd.cpp:
+	adjust log levels
+
+2009-09-26 09:30 +0000  dockes    (231f842cfa1a)
+
+	* src/utils/netcon.cpp, src/utils/netcon.h: new file.
+	* src/lib/Makefile, src/lib/mkMake, src/utils/execmd.cpp,
+	src/utils/execmd.h, src/utils/netcon.cpp, src/utils/netcon.h:
+	execmd uses netcon
+
+2009-09-26 09:05 +0000  dockes    (3883518b318e)
+
+	* src/rcldb/rclquery.cpp:
+	dont abort on get_mset exception
+
+2009-08-13 06:34 +0000  dockes    (71e1aa73c37e)
+
+	* src/utils/refcntr.h:
+	add release() method
+
+2009-08-13 06:32 +0000  dockes    (75501a297534)
+
+	* src/index/indexer.cpp, src/internfile/internfile.cpp,
+	src/internfile/internfile.h, src/internfile/mimehandler.cpp,
+	src/internfile/mimehandler.h:
+	xattrs: make them work with non-text files. Use ctime for up to date
+	checks
+
+2009-08-13 06:29 +0000  dockes    (45721e5ace5a)
+
+	* src/common/autoconfig.h.in:
+	allow choosing the "file" command from configure
+
+2009-08-13 06:28 +0000  dockes    (817bbeb36f34)
+
+	* src/qtgui/rclmain_w.cpp:
+	Make sure db is open at all times (caused problems when sorting
+	query started from the command line)
+
+2009-08-13 06:27 +0000  dockes    (05b809bbb7d0)
+
+	* src/qtgui/preview_w.cpp:
+	
+
+2009-08-13 06:26 +0000  dockes    (b5b49b39dc8a)
+
+	* src/configure, src/configure.ac, src/index/mimetype.cpp:
+	allow choosing the "file" command from configure
+
+2009-08-13 06:24 +0000  dockes    (902b5dc99b09)
+
+	* src/ChangeLog:
+	
+
+2009-08-13 06:23 +0000  dockes    (3ee15899a458)
+
+	* src/sampleconf/recoll.conf.in:
+	add indexedmimetypes to sample file
+
+2009-07-02 13:26 +0000  dockes    (a0f0be9546bb)
+
+	* src/filters/rclman:
+	
+
+2009-07-02 10:26 +0000  dockes    (82d09aa4b256)
+
+	* src/index/indexer.cpp, src/qtgui/rclmain_w.cpp:
+	improve periodic indexing status reporting and timer processing
+
+2009-07-02 06:17 +0000  dockes    (b8cdf0ab08a9)
+
+	* src/qtgui/main.cpp, src/rcldb/searchdata.h, src/utils/mimeparse.cpp,
+	src/utils/mimeparse.h:
+	explicitely->explicitly
+
+2009-06-26 09:25 +0000  dockes    (98153ad73366)
+
+	* src/filters/rclman, src/sampleconf/mimemap:
+	improve man page handling
+
+2009-06-22 16:41 +0000  dockes    (5003fe921249)
+
+	* src/qtgui/main.cpp, src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h:
+	moved periodic timer control from main.cpp to rclmain_w.cpp
+
+2009-06-22 15:25 +0000  dockes    (a420554375c5)
+
+	* src/qtgui/idxthread.cpp, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp:
+	use proper locking/sleeping object for idx thread sync
+
+2009-06-22 08:58 +0000  dockes    (d4fdc68fab47)
+
+	* src/filters/rclman:
+	use groff html output!
+
+2009-06-22 08:57 +0000  dockes    (01a166e9f9e7)
+
+	* src/index/indexer.cpp:
+	debug trace
+
+2009-06-01 06:32 +0000  dockes    (272067257953)
+
+	* src/qtgui/main.cpp:
+	fixed bug in handling remaining arguments as question pieces
+
+2009-05-29 06:28 +0000  dockes    (091488ca1543)
+
+	* src/bincimapmime/convert.h, src/utils/base64.cpp:
+	change strchr() return parameter to const for new libc
+
+2009-05-25 08:59 +0000  dockes    (6231c20d3e23)
+
+	* src/filters/rcllyx:
+	bug report from d.prost: spaces and accents in lyx file names
+
+2009-05-04 08:06 +0000  dockes    (20f1f5746b3e)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/preview_w.h,
+	src/qtgui/spell_w.cpp:
+	gcc44
+
+2009-04-27 11:49 +0000  dockes    (ba8db4a9fcf6)
+
+	* packaging/rpm/recollfedora10.spec: new file.
+	* packaging/rpm/recollfedora10.spec:
+	
+
+2009-04-27 11:42 +0000  dockes    (85e5723e268a)
+
+	* tests/cjk/cjk.txt: new file.
+	* tests/cjk/cjk.txt:
+	
+
+2009-04-27 09:40 +0000  dockes    (a7cf61bb3e6a)
+
+	* website/BUGS.html, website/download.html, website/index.html.en,
+	website/index.html.fr:
+	1.12 release changes
+
+2009-04-27 09:15 +0000  dockes    (eb2d1da3c9ee)
+
+	* website/BUGS.html:
+	
+
+2009-04-27 08:05 +0000  dockes    (c26df870665c)
+
+	* src/utils/md5.cpp, src/utils/readfile.cpp:
+	gcc 4.4 includes fixes
+
+2009-04-27 08:03 +0000  dockes    (5e892d5aa963)
+
+	* src/python/recoll/setup.py:
+	pathhash->fileudi
+
+2009-02-24 18:30 +0000  dockes    (d897d4f128ce)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h,
+	src/qtgui/rclmain_w.cpp, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp:
+	implement option to display the catg filter as a toolbar combobox
+
+2009-02-23 07:57 +0000  dockes    (5eb3b91eca18)
+
+	* src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts:
+	new ru/uk translations from Michael
+
+2009-02-06 16:49 +0000  dockes    (0946c032bea8)
+
+	* src/utils/refcntr.h:
+	make RefCntr(x*) explicit
+
+2009-02-06 16:48 +0000  dockes    (1f50a0e7a3ac)
+
+	* src/internfile/mimehandler.cpp:
+	comments
+
+2009-02-05 14:35 +0000  dockes    (1eb8b93ed85b)
+
+	* src/utils/execmd.cpp, src/utils/execmd.h:
+	1st execcmd cleanup
+
+2009-01-30 13:27 +0000  dockes    (55d06dfa9b04)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_tr.ts, src/qtgui/i18n/recoll_uk.ts,
+	src/qtgui/i18n/recoll_xx.ts, src/qtgui/reslist.cpp:
+	small pbs with reslist translations
+
+2009-01-30 11:43 +0000  dockes    (af28dae4f689)
+
+	* src/INSTALL, src/README:
+	
+
+2009-01-30 11:43 +0000  dockes    (581a47458445 [RECOLL_1_12_0])
+
+	* website/BUGS.html, website/CHANGES.html:
+	1.12.0?
+
+2009-01-30 11:42 +0000  dockes    (fd6cc84e76ce)
+
+	* src/doc/user/usermanual.sgml:
+	1.12 manual
+
+2009-01-30 10:22 +0000  dockes    (f683b3907dd1)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_tr.ts, src/qtgui/i18n/recoll_uk.ts,
+	src/qtgui/i18n/recoll_xx.ts:
+	updated message files, translated french
+
+2009-01-29 14:24 +0000  dockes    (f09b8b421535)
+
+	* src/filters/rcltext:
+	simplified rcltext. No need for awk and no assumptions on charset
+
+2009-01-29 11:27 +0000  dockes    (c8b882dea260)
+
+	* src/ChangeLog, website/CHANGES.html, website/doc.html:
+	
+
+2009-01-29 11:04 +0000  dockes    (0bf58162416f)
+
+	* src/VERSION:
+	1.12.0 une
+
+2009-01-29 10:47 +0000  dockes    (40e8e1f2f59b)
+
+	* packaging/debian/changelog, packaging/rpm/recoll.spec,
+	packaging/rpm/recollCooker.spec, packaging/rpm/recollfedora.spec,
+	packaging/rpm/recollmdk.spec:
+	
+
+2009-01-29 10:08 +0000  dockes    (2af56852a361)
+
+	* src/qtgui/main.cpp, src/qtgui/ssearch_w.cpp, src/qtgui/ssearch_w.h:
+	have ssearch install the lang help section when needed
+
+2009-01-28 17:41 +0000  dockes    (8654c9b9d56d)
+
+	* src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp:
+	erase history would crash with empty reslist docsource
+
+2009-01-28 17:21 +0000  dockes    (8b56ccfdd91b)
+
+	* src/qtgui/rclmain_w.cpp:
+	fixed status bar messages (were cleared by periodic100 every 100ms)
+
+2009-01-28 17:05 +0000  dockes    (b435cf90abb0)
+
+	* src/qtgui/rclhelp.cpp, src/qtgui/rclhelp.h: new file.
+	* src/qtgui/rclhelp.cpp, src/qtgui/rclhelp.h:
+	F1 context-enhanced help
+
+2009-01-28 16:56 +0000  dockes    (e5410627d9d5)
+
+	* src/qt4gui/recoll.pro.in:
+	F1 context-enhanced help
+
+2009-01-28 16:56 +0000  dockes    (741df5618110)
+
+	* src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h,
+	src/qtgui/main.cpp, src/qtgui/preview_w.cpp,
+	src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, src/qtgui/recoll.h,
+	src/qtgui/recoll.pro.in, src/qtgui/reslist.cpp,
+	src/qtgui/sort_w.cpp, src/qtgui/spell_w.cpp:
+	F1 context-enhanced help
+
+2009-01-28 14:58 +0000  dockes    (7e804d156dc5)
+
+	* src/qtgui/rclmain_w.cpp:
+	dont encode urls used for starting help browser
+
+2009-01-28 14:22 +0000  dockes    (e696212a674c)
+
+	* src/Makefile.in:
+	add xapian version to version string
+
+2009-01-28 08:45 +0000  dockes    (46251043fd88)
+
+	* src/qtgui/advsearch.ui, src/qtgui/sort.ui, src/qtgui/spell.ui,
+	src/qtgui/uiprefs.ui:
+	avoid setting 0 sizes
+
+2009-01-28 08:40 +0000  dockes    (1c551a065bdd)
+
+	* src/configure, src/configure.ac:
+	allow setting QMAKE in the environment
+
+2009-01-27 18:12 +0000  dockes    (fb41a05985ed)
+
+	* src/utils/pxattr.cpp:
+	
+
+2009-01-27 11:19 +0000  dockes    (3f5897bb4b8d)
+
+	* tests/stemming/stemming.sh, tests/stemming/stemming.txt: new file.
+	* tests/Maildir1/Maildir1.sh, tests/Maildir1/Maildir1.txt,
+	tests/andor/andor.sh, tests/andor/andor.txt,
+	tests/badsuffs/badsuffs.sh, tests/badsuffs/badsuffs.txt,
+	tests/badsuffs1/badsuffs1.sh, tests/badsuffs1/badsuffs1.txt,
+	tests/boolean/boolean.sh, tests/boolean/boolean.txt,
+	tests/cjk/cjk.sh, tests/delete/delete.sh, tests/delete/delete.txt,
+	tests/dirwithblanks/dirwithblanks.sh,
+	tests/dirwithblanks/dirwithblanks.txt, tests/djvu/djvu.sh,
+	tests/djvu/djvu.txt, tests/dvi/dvi.sh, tests/dvi/dvi.txt,
+	tests/empty/empty.sh, tests/empty/empty.txt, tests/html/html.sh,
+	tests/html/html.txt, tests/images/images.sh,
+	tests/images/images.txt, tests/koi8r/koi8r.sh,
+	tests/koi8r/koi8r.txt, tests/lyx/lyx.sh, tests/lyx/lyx.txt,
+	tests/mail/mail.sh, tests/mail/mail.txt, tests/media/media.sh,
+	tests/media/media.txt, tests/msword/msword.sh,
+	tests/msword/msword.txt, tests/notypes/notypes.sh,
+	tests/notypes/notypes.txt, tests/ooff/ooff.sh, tests/ooff/ooff.txt,
+	tests/pdf/pdf.sh, tests/pdf/pdf.txt, tests/postscript/postscript.sh,
+	tests/postscript/postscript.txt, tests/ppt/ppt.sh,
+	tests/ppt/ppt.txt, tests/rfc2231/rfc2231.sh,
+	tests/rfc2231/rfc2231.txt, tests/rtf/rtf.sh, tests/rtf/rtf.txt,
+	tests/runtests.sh, tests/scribus/scribus.sh,
+	tests/scribus/scribus.txt, tests/skipped/skipped.sh,
+	tests/skipped/skipped.txt, tests/special/special.sh,
+	tests/special/special.txt, tests/stemming/stemming.sh,
+	tests/stemming/stemming.txt, tests/txt/txt.sh, tests/txt/txt.txt,
+	tests/utf8/utf8.sh, tests/utf8/utf8.txt, tests/xls/xls.sh,
+	tests/xls/xls.txt:
+	remove recoll query text from compared test outputs
+
+2009-01-27 10:25 +0000  dockes    (57dd90e8b55d)
+
+	* src/common/textsplit.cpp, src/common/textsplit.h:
+	Emit a_b intermediary span when splitting a_b.c
+
+2009-01-26 18:30 +0000  dockes    (e2238061ec9d)
+
+	* src/query/plaintorich.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h,
+	src/rcldb/searchdata.cpp:
+	modified the time at which we unaccent so that we can do the
+	Capitalized->nostemming test on single words (this had been broken
+	by the change of noac/split order done earlier to get japanese to
+	work)
+
+2009-01-26 18:26 +0000  dockes    (8529cb7d58c7)
+
+	* tests/cjk/cjk.sh:
+	
+
+2009-01-26 17:52 +0000  dockes    (8a5b4971a703)
+
+	* tests/cjk/cjk.sh: new file.
+	* tests/cjk/cjk.sh:
+	
+
+2009-01-26 17:34 +0000  dockes    (e65566ba6690)
+
+	* website/BUGS.html, website/CHANGES.html, website/features.html,
+	website/index.html.en, website/index.html.fr,
+	website/pics/index.html, website/pics/recoll-
+	HTML_search_results.html, website/pics/recoll0.html,
+	website/pics/recoll0.txt, website/pics/recoll1.html,
+	website/pics/recoll2.html, website/pics/recoll3.html,
+	website/pics/recoll4.html, website/pics/recoll5.html,
+	website/pics/recoll_chinese.html:
+	website
+
+2009-01-26 13:29 +0000  dockes    (61198659243f)
+
+	* src/utils/smallut.cpp, src/utils/smallut.h:
+	add overloaded neutchars with different parameters
+
+2009-01-26 13:27 +0000  dockes    (61567bc09eab)
+
+	* src/utils/transcode.cpp:
+	tested and decided against cacheing iconv_open
+
+2009-01-23 15:56 +0000  dockes    (1998b1608eb0)
+
+	* src/ChangeLog, src/qtgui/advsearch_w.cpp, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp, src/qtgui/recoll.h:
+	temp ckpt: need to test on real unix
+
+2009-01-23 11:07 +0000  dockes    (3631372e04f1)
+
+	* src/qtgui/uiprefs.ui:
+	avoid name duplication
+
+2009-01-23 11:03 +0000  dockes    (0dba2718e1aa)
+
+	* src/qtgui/uiprefs.ui:
+	one button for choosing native editors
+
+2009-01-23 10:38 +0000  dockes    (167a153bcf3c)
+
+	* src/kde/kioslave/recoll/data/searchable.html:
+	simplified javascrip: no ie here!
+
+2009-01-23 09:41 +0000  dockes    (b71166d61782)
+
+	* src/qtgui/rclmain_w.cpp:
+	toLocal8Bit->local8bit
+
+2009-01-23 09:30 +0000  dockes    (c3565b4a7244)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp, src/qtgui/recoll.h, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp, src/qtgui/uiprefs_w.h:
+	use normal text/html ext app for viewing help
+
+2009-01-23 09:27 +0000  dockes    (c025fa3fe99d)
+
+	* src/utils/execmd.cpp, src/utils/execmd.h:
+	accept additional path argument to execmd::which
+
+2009-01-22 14:25 +0000  dockes    (967d5e013a33)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h:
+	allow toggle show text/fields in preview
+
+2009-01-21 16:42 +0000  dockes    (f950b7d75e66)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h,
+	src/qtgui/reslist.cpp, src/qtgui/reslist.h:
+	added saveToFile menu entry to reslist
+
+2009-01-21 13:55 +0000  dockes    (033fe406a666)
+
+	* src/utils/pxattr.cpp, src/utils/pxattr.h: new file.
+	* src/common/autoconfig.h.in, src/common/rclconfig.cpp,
+	src/common/rclconfig.h, src/configure, src/configure.ac,
+	src/internfile/internfile.cpp, src/internfile/mh_exec.h,
+	src/internfile/mh_html.cpp, src/internfile/mh_mail.cpp,
+	src/internfile/mh_mbox.cpp, src/internfile/mh_text.cpp,
+	src/internfile/mh_unknown.h, src/internfile/mimehandler.cpp,
+	src/internfile/mimehandler.h, src/lib/Makefile, src/lib/mkMake,
+	src/sampleconf/fields, src/utils/pxattr.cpp, src/utils/pxattr.h:
+	added optional extended file attributes support
+
+2009-01-21 11:11 +0000  dockes    (f269f00857ec)
+
+	* src/sampleconf/mimeconf:
+	comments
+
+2009-01-21 11:11 +0000  dockes    (fda5a0a6fccb)
+
+	* src/filters/rcldoc:
+	try to use wvWare if present and antiword fails
+
+2009-01-21 10:49 +0000  dockes    (394e160f7032)
+
+	* src/utils/readfile.cpp:
+	initialize the error buffer for gnu strerror_r
+
+2009-01-21 10:24 +0000  dockes    (7580c4ed79ce)
+
+	* src/utils/readfile.cpp:
+	fix errno printing
+
+2009-01-21 10:17 +0000  dockes    (f1dca213efee)
+
+	* src/rcldb/rcldb.cpp:
+	fixed typo that would prevent stopfile use
+
+2009-01-17 14:57 +0000  dockes    (90f03bbd715c)
+
+	* src/doc/man/recoll.conf.5, src/doc/user/usermanual.sgml:
+	added compressedfilemaxkbs
+
+2009-01-17 14:56 +0000  dockes    (78d1dd932d5b)
+
+	* src/internfile/internfile.cpp, src/qtgui/confgui/confguiindex.cpp,
+	src/sampleconf/recoll.conf.in:
+	added compressedfilemaxkbs
+
+2009-01-16 17:40 +0000  dockes    (fcc2539b18b4)
+
+	* src/kde/kioslave/recoll/data/searchable.html:
+	
+
+2009-01-16 16:42 +0000  dockes    (11cc037db8a9)
+
+	* src/kde/kioslave/recoll/00README.txt:
+	
+
+2009-01-16 11:32 +0000  dockes    (baaf38fdbca9)
+
+	* src/kde/kioslave/recoll/00README.txt,
+	src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/data/help.html,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/notes.txt:
+	fixed docs + removed dead code
+
+2009-01-15 17:07 +0000  dockes    (144b35bd64c0)
+
+	* src/filters/rcluncomp, src/internfile/internfile.cpp:
+	fixed handling of decompression errors, which was wrong but not
+	catastrophly so in most cases
+
+2009-01-15 17:05 +0000  dockes    (4b10b961d158)
+
+	* src/qtgui/reslist.cpp:
+	disable printing to tmp file
+
+2009-01-15 14:37 +0000  dockes    (9392e278bb0a)
+
+	* src/query/docseq.h, src/query/filtseq.cpp, src/query/filtseq.h,
+	src/query/sortseq.cpp, src/query/sortseq.h:
+	refactor operations delegated to subsequence by sortseq and filtspec
+	into superclass
+
+2009-01-15 09:47 +0000  dockes    (f02a34f835b4)
+
+	* src/rcldb/rcldb.cpp:
+	removed unused variable
+
+2009-01-15 09:45 +0000  dockes    (2440f3259cd0)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/reslist.cpp,
+	src/qtgui/uiprefs_w.cpp:
+	ensure reslist parformat is refreshed after edit (1.11 bug)
+
+2009-01-14 07:52 +0000  dockes    (b3c89a56c9a1)
+
+	* src/qtgui/advsearch.ui, src/qtgui/rclmain_w.cpp,
+	src/qtgui/uiprefs_w.cpp, src/qtgui/uiprefs_w.h,
+	src/qtgui/viewaction.ui, src/qtgui/viewaction_w.cpp,
+	src/qtgui/viewaction_w.h:
+	arrange so that the select action dialog is preselected on the right
+	mime type after missing action
+
+2009-01-13 16:03 +0000  dockes    (2d8517785a8e)
+
+	* src/common/textsplit.cpp:
+	add _ to wordsep/spanglue chars. Add non-ascii test to isCJK for
+	optimization
+
+2009-01-13 16:02 +0000  dockes    (cbfb1f939c9d)
+
+	* src/common/uproplist.h:
+	small fix : remove diaeresis from seps + comments
+
+2009-01-13 08:56 +0000  dockes    (ee8989c89330)
+
+	* src/doc/user/usermanual.sgml:
+	
+
+2009-01-13 08:49 +0000  dockes    (93e74953ed0b)
+
+	* src/doc/user/usermanual.sgml:
+	update version
+
+2009-01-13 08:02 +0000  dockes    (051bf6d49898)
+
+	* src/rcldb/rcldb.h, src/rcldb/rcldb_p.h, src/rcldb/rclquery.h:
+	minor visibility cleanup
+
+2009-01-13 08:01 +0000  dockes    (c550fb351f5f)
+
+	* src/qtgui/ssearchb.ui:
+	fix obsolete tooltip message
+
+2009-01-12 18:31 +0000  dockes    (3cefac6eb52d)
+
+	* src/doc/user/usermanual.sgml:
+	doc: better adv search explanation + duplicates collapsing
+
+2009-01-12 17:50 +0000  dockes    (f8cb21911962)
+
+	* src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h:
+	simplified dialog structure, apparently allowed to get rid of size
+	hacks
+
+2009-01-12 16:42 +0000  dockes    (48ca278dcd42)
+
+	* src/qtgui/advsearch.ui:
+	suppressed unused vbox
+
+2009-01-12 15:55 +0000  dockes    (b5486bd5b85d)
+
+	* src/qtgui/advsearch.ui, src/qtgui/searchclause_w.cpp,
+	src/qtgui/searchclause_w.h:
+	suppressed unused layout in searchClause
+
+2009-01-09 14:56 +0000  dockes    (073523a33ffe)
+
+	* src/internfile/mh_exec.cpp, src/internfile/mh_html.cpp,
+	src/internfile/mh_mail.cpp, src/internfile/mh_text.cpp,
+	src/qtgui/guiutils.cpp, src/qtgui/guiutils.h,
+	src/qtgui/rclmain_w.cpp, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h,
+	src/rcldb/rcldoc.cpp, src/rcldb/rcldoc.h, src/rcldb/rclquery.cpp,
+	src/rcldb/rclquery.h:
+	compute md5 checksums for all docs and optionally collapse
+	duplicates in results
+
+2009-01-09 12:23 +0000  dockes    (f89119e58f79)
+
+	* src/qtgui/reslist.cpp:
+	add space/backspace as pager keys for reslist
+
+2009-01-09 12:23 +0000  dockes    (36eb326513d5)
+
+	* src/utils/Makefile, src/utils/md5.cpp, src/utils/md5.h,
+	src/utils/readfile.cpp, src/utils/readfile.h:
+	implement md5 convenience file and string wrappers. Modify readfile
+	to support this
+
+2009-01-09 07:27 +0000  dockes    (de3507d26de4)
+
+	* src/rcldb/pathhash.cpp, src/rcldb/pathhash.h: deleted file.
+	* src/lib/Makefile, src/lib/mkMake, src/rcldb/pathhash.cpp,
+	src/rcldb/pathhash.h, src/rcldb/rcldb.cpp:
+	got rid of pathhash in rcldb, not used since 11.0
+
+2009-01-08 09:55 +0000  dockes    (1fc0cdb06859)
+
+	* src/excludefile:
+	adapt to svn
+
+2009-01-08 09:50 +0000  dockes    (867f1a9f6b02)
+
+	* src/makesrcdist.sh:
+	adapt distrib script to svn
+
+2009-01-08 09:40 +0000  dockes    (33a7fbc42386 [RECOLL_1_12_1exp5])
+
+	* src/VERSION:
+	
+
+2009-01-06 18:48 +0000  dockes    (2e111dad7cba)
+
+	* src/doc/user/bldloop: new file.
+	* packaging/FreeBSD/recoll/Makefile,
+	packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg-
+	plist, src/doc/user/bldloop, tests/koi8r/koi8r.sh, tests/shared.sh:
+	*** empty log message ***
+
+2009-01-06 18:40 +0000  dockes    (c82fbe0ee8fc)
+
+	* packaging/debian/changelog, packaging/rpm/recoll.spec,
+	packaging/rpm/recollfedora.spec, packaging/rpm/recollmdk.spec,
+	src/ChangeLog, website/devel.html, website/download.html:
+	*** empty log message ***
+
+2009-01-06 18:40 +0000  dockes    (7ebc18a8b4d7)
+
+	* unac/builder.in, unac/unac.c, unac/unac.h:
+	new unac approach for japanese: dont decompose at all
+
+2009-01-06 17:40 +0000  dockes    (a0b7ed1f2bda)
+
+	* website/xapUpg100.html: new file.
+	* website/BUGS.html, website/BUGS.txt, website/CHANGES.html,
+	website/doc.html, website/download.html, website/index.html.en,
+	website/index.html.fr, website/xapUpg100.html:
+	*** empty log message ***
+
+2009-01-06 17:30 +0000  dockes    (636e0f9f2a77)
+
+	* website/howtos/index.html,
+	website/howtos/prevent_indexing_a_directory/index.html,
+	website/howtos/use_multiple_indexes/index.html,
+	website/pics/piclist.txt, website/pics/recoll-HTML_search_results-
+	thumb.png, website/pics/recoll-HTML_search_results.html,
+	website/pics/recoll-HTML_search_results.png, website/pics/recoll-
+	HTML_search_results.txt, website/pics/recoll0-thumb.png,
+	website/pics/recoll0.html, website/pics/recoll0.png,
+	website/pics/recoll0.txt, website/pics/recoll1-thumb.png,
+	website/pics/recoll1.html, website/pics/recoll1.png,
+	website/pics/recoll1.txt, website/pics/recoll2-thumb.png,
+	website/pics/recoll2.html, website/pics/recoll2.png,
+	website/pics/recoll2.txt, website/pics/recoll3-thumb.png,
+	website/pics/recoll3.html, website/pics/recoll3.png,
+	website/pics/recoll3.txt, website/pics/recoll4-thumb.png,
+	website/pics/recoll4.html, website/pics/recoll4.png,
+	website/pics/recoll4.txt, website/pics/recoll5-thumb.png,
+	website/pics/recoll5.html, website/pics/recoll5.png,
+	website/pics/recoll5.txt, website/pics/recoll_chinese-thumb.png,
+	website/pics/recoll_chinese.html, website/pics/recoll_chinese.png,
+	website/pics/recoll_chinese.txt: new file.
+	* website/howtos/index.html,
+	website/howtos/prevent_indexing_a_directory/index.html,
+	website/howtos/use_multiple_indexes/index.html,
+	website/pics/piclist.txt, website/pics/recoll-HTML_search_results-
+	thumb.png, website/pics/recoll-HTML_search_results.html,
+	website/pics/recoll-HTML_search_results.png, website/pics/recoll-
+	HTML_search_results.txt, website/pics/recoll0-thumb.png,
+	website/pics/recoll0.html, website/pics/recoll0.png,
+	website/pics/recoll0.txt, website/pics/recoll1-thumb.png,
+	website/pics/recoll1.html, website/pics/recoll1.png,
+	website/pics/recoll1.txt, website/pics/recoll2-thumb.png,
+	website/pics/recoll2.html, website/pics/recoll2.png,
+	website/pics/recoll2.txt, website/pics/recoll3-thumb.png,
+	website/pics/recoll3.html, website/pics/recoll3.png,
+	website/pics/recoll3.txt, website/pics/recoll4-thumb.png,
+	website/pics/recoll4.html, website/pics/recoll4.png,
+	website/pics/recoll4.txt, website/pics/recoll5-thumb.png,
+	website/pics/recoll5.html, website/pics/recoll5.png,
+	website/pics/recoll5.txt, website/pics/recoll_chinese-thumb.png,
+	website/pics/recoll_chinese.html, website/pics/recoll_chinese.png,
+	website/pics/recoll_chinese.txt:
+	*** empty log message ***
+
+2008-12-21 13:17 +0000  dockes    (74da01dd27c2)
+
+	* src/unac/unac.c, src/unac/unac.h:
+	new unac approach for japanese: dont decompose at all
+
+2008-12-21 13:05 +0000  dockes    (273dad0916bb)
+
+	* unac/unac_version.h: new file.
+	* unac/unac_version.h:
+	*** empty log message ***
+
+2008-12-19 09:55 +0000  dockes    (1a2dd90e07b4)
+
+	* src/rcldb/rcldb.h, src/rcldb/rclquery.cpp, src/rcldb/searchdata.cpp:
+	getMainConfig not actually needed and possibly harmful
+
+2008-12-19 09:44 +0000  dockes    (3a16629b24f5)
+
+	* src/rcldb/searchdata.cpp, src/unac/unac.c, src/unac/unac.h:
+	dont unaccent japanese + fix bug in unac/split ordering in
+	searchdata
+
+2008-12-19 08:39 +0000  dockes    (b895714a6500)
+
+	* src/python/recoll/setup.py:
+	pyrecoll: port to linux, update
+
+2008-12-18 14:11 +0000  dockes    (33bffc499e78)
+
+	* src/query/xadump.cpp:
+	diag: prevent char combination by inserting spaces
+
+2008-12-18 11:58 +0000  dockes    (a3863a0c1f62)
+
+	* unac/builder.in, unac/unac.c:
+	no going out of the basic plane!
+
+2008-12-18 11:12 +0000  dockes    (ac1315d2a94f)
+
+	* unac/unac.c:
+	added recoll memory allocation checks
+
+2008-12-18 11:05 +0000  dockes    (cfb4210ce7d5)
+
+	* unac/CaseFolding-5.1.0.txt, unac/UnicodeData-5.1.0.txt: new file.
+	* unac/CaseFolding-5.1.0.txt, unac/UnicodeData-5.1.0.txt:
+	*** empty log message ***
+
+2008-12-18 11:04 +0000  dockes    (cc609462a402)
+
+	* unac/builder.in, unac/configure, unac/configure.ac, unac/unac.c,
+	unac/unac.h:
+	use unicode 5.1.0 + dont unaccent katakana/hiragana. Main change in
+	unicode is that letters ae and o with stroke dont decompose anymore
+	into a+e and o+e we may actually want to restore this if it proves a
+	problem
+
+2008-12-17 16:20 +0000  dockes    (65fd4fda84d3)
+
+	* src/rcldb/rcldb.cpp:
+	fix to previous abstract fix
+
+2008-12-17 15:12 +0000  dockes    (9e9e84a23da6)
+
+	* src/qtgui/reslist.cpp:
+	use local hiliter
+
+2008-12-17 14:26 +0000  dockes    (ada853f1e3b8)
+
+	* src/common/Makefile, src/rcldb/rcldb.cpp:
+	fix abstract generation when the match term is a multiword span
+	(esp. for japanese)
+
+2008-12-17 14:26 +0000  dockes    (9705bf172f13)
+
+	* src/rcldb/searchdata.cpp:
+	comment
+
+2008-12-17 08:01 +0000  dockes    (42bc5b3b5abf)
+
+	* src/index/indexer.cpp, src/index/indexer.h,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/python/recoll/pyrecoll.cpp, src/qtgui/main.cpp,
+	src/query/recollq.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	simplified db open by getting rid of the illusion that we could have
+	several writeable dbs per config
+
+2008-12-16 17:43 +0000  dockes    (1d040e634db3 [RECOLL_1_12_1exp4])
+
+	* src/README, src/VERSION,
+	src/kde/kioslave/recoll/data/searchable.html,
+	src/kde/kioslave/recoll/data/welcome.html:
+	*** empty log message ***
+
+2008-12-16 17:30 +0000  dockes    (18f65ef55dd6)
+
+	* src/kde/kioslave/recoll/data/searchable.html:
+	*** empty log message ***
+
+2008-12-16 17:28 +0000  dockes    (e991bdd3d8c7)
+
+	* src/kde/kioslave/recoll/data/searchable.html: new file.
+	* src/kde/kioslave/recoll/data/searchable.html,
+	src/kde/kioslave/recoll/data/welcome.html,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h:
+	updated kioslave for small changes in reslistpager after main i/f
+	integration. + javascript to search page
+
+2008-12-16 14:20 +0000  dockes    (7bc14752b5f3)
+
+	* src/qtgui/preview_w.h, src/qtgui/reslist.cpp, src/qtgui/reslist.h,
+	src/query/plaintorich.h, src/query/reslistpager.cpp,
+	src/query/reslistpager.h, src/utils/debuglog.cpp,
+	src/utils/debuglog.h:
+	converted qt reslist to reslistpager
+
+2008-12-16 08:54 +0000  dockes    (c702627139c8)
+
+	* src/query/wasastringtoquery.cpp:
+	OR chain longer than 2 would swallow preceding AND terms
+
+2008-12-15 15:04 +0000  dockes    (62e1b7eaa7b9)
+
+	* src/kde/kioslave/recoll/htmlif.cpp, src/query/reslistpager.cpp:
+	kio: use right ipath for preview
+
+2008-12-15 14:39 +0000  dockes    (30b71a18e961)
+
+	* src/query/xadump.cpp, src/rcldb/searchdata.cpp:
+	make gcc happy
+
+2008-12-15 13:51 +0000  dockes    (f93dda12024f)
+
+	* website/howtos/template.html:
+	*** empty log message ***
+
+2008-12-15 11:20 +0000  dockes    (4a74871e9823)
+
+	* website/howtos/buildindex.sh, website/howtos/fragend.html,
+	website/howtos/fraghead.html, website/howtos/newdir.sh,
+	website/howtos/template.html: new file.
+	* website/BUGS.html, website/BUGS.txt, website/CHANGES.html,
+	website/copydocs, website/download.html,
+	website/howtos/buildindex.sh, website/howtos/fragend.html,
+	website/howtos/fraghead.html, website/howtos/newdir.sh,
+	website/howtos/template.html, website/index.html.en,
+	website/index.html.fr, website/pics/index.html:
+	*** empty log message ***
+
+2008-12-15 09:33 +0000  dockes    (afc0ef4911b2)
+
+	* src/doc/user/usermanual.sgml:
+	more search tips
+
+2008-12-15 09:24 +0000  dockes    (59cd1bdd4d3f)
+
+	* src/rcldb/searchdata.cpp:
+	reorganize code + add boost to phrase element to match boost of
+	original user terms
+
+2008-12-12 11:53 +0000  dockes    (4121cbc09d70)
+
+	* src/common/textsplit.cpp, src/common/textsplit.h,
+	src/rcldb/rcldb.cpp:
+	dont insert space in cjk abstracts
+
+2008-12-12 11:02 +0000  dockes    (37fd1c31af49)
+
+	* src/rcldb/rcldb.cpp:
+	message level
+
+2008-12-12 11:01 +0000  dockes    (d2a8c016d05c)
+
+	* src/qtgui/reslist.cpp:
+	add %i for displaying ipath
+
+2008-12-12 11:00 +0000  dockes    (151d6a590152)
+
+	* src/qtgui/main.cpp:
+	add all extra cmd line args to the question
+
+2008-12-08 17:43 +0000  dockes    (90b62656b326)
+
+	* src/kde/kioslave/recoll/htmlif.cpp:
+	set name as preview title
+
+2008-12-08 17:42 +0000  dockes    (5717c313d23a)
+
+	* src/kde/kioslave/recoll/dirif.cpp:
+	removed a few traces
+
+2008-12-08 14:34 +0000  dockes    (de392f657f81)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/data/help.html,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt:
+	previews
+
+2008-12-08 11:22 +0000  dockes    (877b674c328c)
+
+	* src/utils/Makefile, src/utils/readfile.cpp:
+	file_to_string: stat+reserve makes faster
+
+2008-12-05 13:15 +0000  dockes    (19ef9198e3d5)
+
+	* src/VERSION:
+	branched maintenance for 1.11 kio devs on main now 1.12
+
+2008-12-05 11:09 +0000  dockes    (b27d4070bbf8)
+
+	* src/common/textsplit.cpp, src/common/textsplit.h,
+	src/common/uproplist.h, src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/qtgui/ssearch_w.cpp, src/query/recollq.cpp,
+	src/query/wasatorcl.cpp, src/rcldb/searchdata.cpp:
+	take care of splitting user string with respect to unicode white
+	space, not only ascii
+
+2008-12-05 07:38 +0000  dockes    (d102970d3aee)
+
+	* src/utils/smallut.h:
+	comment
+
+2008-12-04 12:41 +0000  dockes    (a3f25963b2da [RECOLL_1_11_1exp3])
+
+	* src/kde/kioslave/recoll/recollf.protocol: new file.
+	* src/kde/kioslave/recoll/recollf.protocol:
+	*** empty log message ***
+
+2008-12-04 12:23 +0000  dockes    (adffbb42e449)
+
+	* src/kde/kioslave/recoll/dirif.cpp:
+	kde 4.0 compile
+
+2008-12-04 11:50 +0000  dockes    (fef6cc6c4c97)
+
+	* src/VERSION:
+	*** empty log message ***
+
+2008-12-04 11:49 +0000  dockes    (d1b1a426ddfa)
+
+	* src/kde/kioslave/recoll/data/help.html,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt, src/query/reslistpager.cpp,
+	src/query/reslistpager.h, src/rcldb/rcldb.cpp, src/utils/pathut.h:
+	kio_recoll: html/dir switching
+
+2008-12-03 17:04 +0000  dockes    (a762165399a2)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/data/help.html,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt:
+	cleaned up virtual tree and url handling. Drag to desktop now works
+	with appropriate name. recollf protocol
+
+2008-12-03 10:02 +0000  dockes    (127dbb400363)
+
+	* src/kde/kioslave/recoll/dirif.cpp:
+	better stat
+
+2008-12-02 13:41 +0000  dockes    (6e55b23fb64f)
+
+	* src/kde/kioslave/recoll/dirif.cpp:
+	*** empty log message ***
+
+2008-12-02 13:38 +0000  dockes    (66b031be3559)
+
+	* src/kde/kioslave/recoll/dirif.cpp:
+	*** empty log message ***
+
+2008-12-02 13:16 +0000  dockes    (619e41b1537b)
+
+	* src/INSTALL, src/README, src/VERSION, src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-12-02 13:14 +0000  dockes    (fff18d4ea953)
+
+	* src/kde/kioslave/recoll/00README.txt,
+	src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/data/welcome.html,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/notes.txt, src/query/reslistpager.cpp:
+	kio goes to testing
+
+2008-12-01 18:42 +0000  dockes    (714fdf15621e)
+
+	* src/kde/kioslave/recoll/data/help.html,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h:
+	small cleanups and comments. Still some weirdness
+
+2008-12-01 15:37 +0000  dockes    (8d9ea1f1c645)
+
+	* src/kde/kioslave/recoll/cleancmakestuff.sh:
+	*** empty log message ***
+
+2008-12-01 15:36 +0000  dockes    (8504e2e278dd)
+
+	* src/kde/kioslave/recoll/data/help.html: new file.
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/cleancmakestuff.sh,
+	src/kde/kioslave/recoll/data/help.html,
+	src/kde/kioslave/recoll/data/welcome.html,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt:
+	seems to work by re-rerunning search whenever it changes. Still had
+	one crash, needs cleanup
+
+2008-11-28 09:14 +0000  dockes    (ee6a7d32843e)
+
+	* src/kde/kioslave/recoll/recollnolist.protocol: new file.
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt,
+	src/kde/kioslave/recoll/recoll.protocol,
+	src/kde/kioslave/recoll/recollnolist.protocol:
+	ensured compatibility with kde4.0
+
+2008-11-27 17:48 +0000  dockes    (d461029ef29c)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt,
+	src/kde/kioslave/recoll/recoll.protocol:
+	bits of dual mode working
+
+2008-11-27 14:05 +0000  dockes    (8cc177e8775a)
+
+	* src/query/reslistpager.cpp:
+	safety check
+
+2008-11-27 13:35 +0000  dockes    (4d28c4942bc1)
+
+	* src/sampleconf/mimeconf:
+	*** empty log message ***
+
+2008-11-27 09:49 +0000  dockes    (394d882caa0c)
+
+	* src/sampleconf/mimeconf:
+	remove obsolete [prefixes] section
+
+2008-11-27 09:39 +0000  dockes    (0ec8260d8d7c)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-11-26 15:03 +0000  dockes    (b6a62dc24003)
+
+	* src/kde/kioslave/recoll/cleancmakestuff.sh,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/notes.txt: new file.
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/cleancmakestuff.sh,
+	src/kde/kioslave/recoll/dirif.cpp,
+	src/kde/kioslave/recoll/htmlif.cpp,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h,
+	src/kde/kioslave/recoll/notes.txt,
+	src/kde/kioslave/recoll/recoll.protocol:
+	listdir doesnt work on kde 4.0 because on parent/child assumptions
+	in kdirmodel have to check on kde 4.1
+
+2008-11-24 17:42 +0000  dockes    (9333f13ac4c7)
+
+	* src/VERSION:
+	*** empty log message ***
+
+2008-11-24 17:38 +0000  dockes    (a761936ec65e)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt:
+	check for dlopen
+
+2008-11-24 16:42 +0000  dockes    (0f7e0292212f)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt:
+	have to cc the pic objects, cant use librcl
+
+2008-11-24 15:47 +0000  dockes    (d06dd2891012)
+
+	* src/Makefile.in, src/aspell/Makefile, src/common/Makefile,
+	src/common/autoconfig.h.in, src/common/rclconfig.h, src/configure,
+	src/configure.ac, src/index/Makefile, src/internfile/Makefile,
+	src/lib/Makefile, src/lib/mkMake, src/mk/Darwin, src/mk/FreeBSD,
+	src/mk/OpenBSD, src/mk/SunOS, src/mk/commondefs,
+	src/qt4gui/recoll.pro.in, src/qtgui/recoll.pro.in,
+	src/query/Makefile, src/unac/unac.c, src/utils/pathut.cpp:
+	make it easier to maintain the kio cmake by moving as much stuff as
+	possible to autoconfig.h, merging libmime and librcl etc.
+
+2008-11-24 15:23 +0000  dockes    (7d9add059cc1)
+
+	* src/qtgui/confgui/main.cpp, src/qtgui/guiutils.cpp,
+	src/qtgui/main.cpp, src/qtgui/recoll.h:
+	replace local variable recoll_datadir with access to config
+
+2008-11-24 14:54 +0000  dockes    (7005bf515a0b)
+
+	* src/unac/unac_version.h: new file.
+	* src/unac/unac.c, src/unac/unac_version.h:
+	*** empty log message ***
+
+2008-11-21 16:43 +0000  dockes    (5c4559fa9d49)
+
+	* src/makesrcdist.sh:
+	*** empty log message ***
+
+2008-11-21 16:37 +0000  dockes    (e92347cad84d)
+
+	* src/kde/kioslave/recoll/00README.txt, src/makesrcdist.sh:
+	ccmake cleanup in kio_recoll
+
+2008-11-21 16:02 +0000  dockes    (f691d6ad3333)
+
+	* src/excludefile:
+	*** empty log message ***
+
+2008-11-20 18:00 +0000  dockes    (5063f4280d8d)
+
+	* src/kde/kioslave/recoll/Makefile: deleted file.
+	* src/kde/kioslave/recoll/Makefile:
+	*** empty log message ***
+
+2008-11-20 15:10 +0000  dockes    (dc45badd0c45)
+
+	* src/VERSION:
+	*** empty log message ***
+
+2008-11-20 14:16 +0000  dockes    (c653773059df)
+
+	* src/kde/kioslave/recoll/00README.txt:
+	*** empty log message ***
+
+2008-11-20 13:10 +0000  dockes    (8b5eea7103b5)
+
+	* src/kde/kioslave/recoll/data/welcome.html: new file.
+	* src/kde/kioslave/recoll/00README.txt,
+	src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/data/welcome.html,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h, src/query/reslistpager.cpp,
+	src/query/reslistpager.h:
+	kioslave sort of works
+
+2008-11-19 12:28 +0000  dockes    (93e6b483f5c4)
+
+	* src/kde/kioslave/recoll/kio_recoll.cpp:
+	*** empty log message ***
+
+2008-11-19 12:19 +0000  dockes    (9b0d90b61574)
+
+	* src/query/plaintorich.cpp, src/query/plaintorich.h,
+	src/query/reslistpager.cpp, src/query/reslistpager.h: new file.
+	* src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h: deleted file.
+	* src/lib/Makefile, src/lib/mkMake, src/qt4gui/recoll.pro.in,
+	src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h,
+	src/qtgui/recoll.pro.in, src/query/plaintorich.cpp,
+	src/query/plaintorich.h, src/query/reslistpager.cpp,
+	src/query/reslistpager.h:
+	moved plaintorich from qtgui/ to query/
+
+2008-11-19 10:06 +0000  dockes    (350dd565c80d)
+
+	* src/qtgui/reslist.cpp, src/utils/smallut.cpp, src/utils/smallut.h:
+	moved code from qtgui to smallut
+
+2008-11-18 13:51 +0000  dockes    (fae04b17c778)
+
+	* src/utils/cancelcheck.h:
+	comment
+
+2008-11-18 13:25 +0000  dockes    (4d54c32dbee7)
+
+	* src/index/csguess.cpp, src/index/mimetype.cpp,
+	src/index/rclmonprc.cpp, src/index/rclmonrcv.cpp,
+	src/query/wasatorcl.cpp:
+	add a few includes for new gcc version
+
+2008-11-18 13:24 +0000  dockes    (9455c0affe0a)
+
+	* src/utils/cancelcheck.h:
+	comments
+
+2008-11-18 10:23 +0000  dockes    (d09d14bf2e24)
+
+	* src/utils/debuglog.h:
+	*** empty log message ***
+
+2008-11-17 14:51 +0000  dockes    (9d4e9515342e)
+
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/Makefile.kde3: new file.
+	* src/kde/kioslave/recoll/CMakeLists.txt,
+	src/kde/kioslave/recoll/Makefile,
+	src/kde/kioslave/recoll/Makefile.kde3,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h:
+	1st kde test. cmake doesnt work need to use buildit script
+
+2008-11-14 15:49 +0000  dockes    (13ca00d869a1)
+
+	* src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.h:
+	*** empty log message ***
+
+2008-11-13 10:57 +0000  dockes    (5cd3ce5481df)
+
+	* src/kde/kioslave/recoll/00README.txt,
+	src/kde/kioslave/recoll/Makefile,
+	src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/kde/kioslave/recoll/kio_recoll.la, src/query/docseqdb.cpp:
+	got the kio_slave working again
+
+2008-11-08 11:00 +0000  dockes    (81b9fe1d7644)
+
+	* src/qtgui/reslist.cpp:
+	Copy entries in the rght clck menu copy both to selection and
+	clipboard
+
+2008-10-18 07:04 +0000  dockes    (33b4eec42ac8)
+
+	* website/BUGS.html: new file.
+	* website/BUGS.html, website/download.html:
+	*** empty log message ***
+
+2008-10-18 06:51 +0000  dockes    (b885092a2488)
+
+	* website/CHANGES.html: new file.
+	* website/CHANGES.txt: deleted file.
+	* website/BUGS.txt, website/CHANGES.html, website/CHANGES.txt,
+	website/download.html, website/index.html.en, website/index.html.fr:
+	*** empty log message ***
+
+2008-10-15 08:30 +0000  dockes    (6657f5e0f698)
+
+	* src/sampleconf/recoll.conf.in:
+	add .git .hg .bzr to skipped
+
+2008-10-14 07:50 +0000  dockes    (2321044edfb9 [RECOLL_1_11_0])
+
+	* src/rcldb/searchdata.cpp, src/rcldb/searchdata.h,
+	src/utils/refcntr.h:
+	highlighting would not work with cat filt active because ClausSub
+	did not implement getTerms
+
+2008-10-14 06:07 +0000  dockes    (6ecc84bb82aa)
+
+	* src/index/recollindex.cpp:
+	print version in recollindex help
+
+2008-10-13 11:46 +0000  dockes    (1cd1451bbb74)
+
+	* src/excludefile, src/makesrcdist.sh:
+	change in excludefile handling
+
+2008-10-13 11:46 +0000  dockes    (609bbaa80120)
+
+	* src/qtgui/ssearch_w.cpp, src/query/filtseq.cpp:
+	warnings
+
+2008-10-13 11:44 +0000  dockes    (809f8c3eb265)
+
+	* src/qtgui/plaintorich.cpp:
+	compil warn
+
+2008-10-13 08:35 +0000  dockes    (a5d743b90fe8)
+
+	* src/INSTALL, src/README:
+	*** empty log message ***
+
+2008-10-13 08:23 +0000  dockes    (5874f0e6fc82)
+
+	* src/query/recollq.cpp:
+	dont change recollq output, used for tests!
+
+2008-10-13 07:57 +0000  dockes    (bf5637bbe652)
+
+	* src/doc/user/usermanual.sgml, src/qtgui/i18n/recoll_de.ts,
+	src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_it.ts,
+	src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_tr.ts,
+	src/qtgui/i18n/recoll_uk.ts, src/qtgui/i18n/recoll_xx.ts,
+	src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp:
+	messages and manual
+
+2008-10-10 08:19 +0000  dockes    (d5a5fb9959b7)
+
+	* src/doc/user/usermanual.sgml:
+	added python api doc
+
+2008-10-10 08:18 +0000  dockes    (4771280faa9c)
+
+	* src/python/recoll/pyrecoll.cpp, src/python/samples/rclmbox.py,
+	src/python/samples/recollqsd.py:
+	fix executesd
+
+2008-10-10 08:05 +0000  dockes    (f613511f9e1a)
+
+	* src/python/recoll/pyrecoll.cpp:
+	add delete purge
+
+2008-10-10 08:04 +0000  dockes    (2547574a0242)
+
+	* src/internfile/internfile.cpp:
+	log levels
+
+2008-10-09 09:36 +0000  dockes    (4fb973a50769)
+
+	* src/python/recoll/pyrecoll.cpp:
+	stemming went from query to searchdata
+
+2008-10-09 09:21 +0000  dockes    (e112c834fca2)
+
+	* src/filters/rclflac, src/filters/rclid3, src/sampleconf/mimeconf:
+	improved mp3/flac filter. use pstotext directly
+
+2008-10-09 09:19 +0000  dockes    (cf2e0559c3d9)
+
+	* src/internfile/mh_exec.cpp, src/internfile/mimehandler.cpp:
+	need to transcode text to utf-8
+
+2008-10-09 09:19 +0000  dockes    (d250c2a0a26f)
+
+	* src/utils/transcode.h:
+	comments
+
+2008-10-09 06:41 +0000  dockes    (721f4b3d08f4)
+
+	* src/filters/rclimg:
+	*** empty log message ***
+
+2008-10-09 06:38 +0000  dockes    (e9d7fde008f9)
+
+	* src/filters/rclimg:
+	*** empty log message ***
+
+2008-10-09 06:31 +0000  dockes    (4b76370655c3)
+
+	* src/filters/rclimg:
+	conform to filter error usual protocol
+
+2008-10-08 16:15 +0000  dockes    (d60a26ce4397)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/filters/rcldvi, src/index/indexer.cpp, src/index/indexer.h,
+	src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp,
+	src/qtgui/rclmain_w.h, src/utils/smallut.cpp, src/utils/smallut.h:
+	added menu to display missing helpers
+
+2008-10-08 16:12 +0000  dockes    (30da9114943c)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-10-08 08:27 +0000  dockes    (8a78ee8cc158)
+
+	* src/filters/rclabw, src/filters/rcldjvu, src/filters/rclid3,
+	src/filters/rclkwd, src/filters/rclogg, src/filters/rclopxml,
+	src/filters/rclppt, src/filters/rclsoff, src/filters/rclsvg,
+	src/filters/rclxls, src/sampleconf/fields, src/sampleconf/mimeconf:
+	improved rclid3 and rclogg
+
+2008-10-07 16:19 +0000  dockes    (c922f7984106)
+
+	* src/qtgui/preview_w.cpp:
+	message
+
+2008-10-07 08:07 +0000  dockes    (7e7e59b8a48f)
+
+	* src/doc/user/usermanual.sgml:
+	query language precisions
+
+2008-10-07 06:52 +0000  dockes    (0b46df2d0a1d)
+
+	* src/query/wasatorcl.cpp:
+	*** empty log message ***
+
+2008-10-07 06:44 +0000  dockes    (a6e8f2583e65)
+
+	* src/ChangeLog, src/common/rclconfig.cpp,
+	src/python/recoll/pyrecoll.cpp, src/rcldb/rcldb.cpp,
+	src/rcldb/rclquery.cpp, src/sampleconf/fields:
+	let rclconfig take care of field name lowercasing
+
+2008-10-06 06:22 +0000  dockes    (26eae5316b88)
+
+	* src/internfile/mh_exec.cpp, src/internfile/mh_exec.h,
+	src/internfile/mimehandler.cpp, src/utils/execmd.cpp:
+	Disable filters with missing helpers for the whole indexing pass
+
+2008-10-04 14:26 +0000  dockes    (556c7fa5998c)
+
+	* src/index/indexer.cpp, src/internfile/Filter.h,
+	src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/internfile/mh_exec.cpp, src/internfile/mh_exec.h,
+	src/internfile/mh_html.h, src/internfile/mh_mail.cpp,
+	src/internfile/mh_mail.h, src/internfile/mh_mbox.cpp,
+	src/internfile/mh_mbox.h, src/internfile/mh_text.h,
+	src/internfile/mh_unknown.h, src/internfile/mimehandler.cpp,
+	src/internfile/mimehandler.h:
+	allow specifying format and charset for ext filters. Cache and reuse
+	filters
+
+2008-10-03 16:02 +0000  dockes    (6f5d875c2923)
+
+	* src/utils/Makefile:
+	*** empty log message ***
+
+2008-10-03 16:02 +0000  dockes    (8d1e930cc9e2)
+
+	* src/qtgui/preview_w.cpp:
+	message
+
+2008-10-03 08:19 +0000  dockes    (cf75be4a88cf)
+
+	* src/common/rclconfig.cpp:
+	*** empty log message ***
+
+2008-10-03 08:09 +0000  dockes    (068bc565bf8b)
+
+	* src/common/rclconfig.cpp, src/qtgui/guiutils.cpp,
+	src/qtgui/guiutils.h, src/qtgui/plaintorich.cpp,
+	src/qtgui/plaintorich.h, src/qtgui/preview_w.cpp,
+	src/qtgui/preview_w.h, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp:
+	add option to preview html instead of plain text
+
+2008-10-03 06:23 +0000  dockes    (bd1a6a560e25)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h:
+	arrange for setting aside an html version when working for preview
+
+2008-10-03 06:17 +0000  dockes    (b10d8b6906a0)
+
+	* src/internfile/mh_html.cpp, src/internfile/mh_html.h:
+	save transcoded html for preview
+
+2008-10-02 13:30 +0000  dockes    (f469cf040425)
+
+	* src/internfile/mh_exec.cpp, src/internfile/mh_exec.h:
+	comments
+
+2008-09-30 12:38 +0000  dockes    (6ff81f690928)
+
+	* src/index/recollindex.cpp, src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/idxthread.cpp, src/qtgui/idxthread.h, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb_p.h:
+	added index format version checking
+
+2008-09-29 11:33 +0000  dockes    (2691a6abf645)
+
+	* src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/python/recoll/pyrecoll.cpp, src/qtgui/rclmain_w.cpp,
+	src/qtgui/reslist.cpp, src/query/docseq.h, src/query/docseqdb.cpp,
+	src/query/docseqdb.h, src/query/filtseq.cpp, src/query/filtseq.h,
+	src/query/recollq.cpp, src/query/sortseq.cpp, src/query/sortseq.h,
+	src/rcldb/rclquery.cpp, src/rcldb/rclquery.h,
+	src/rcldb/searchdata.cpp, src/rcldb/searchdata.h:
+	move stemlang from RclQuery to SearchData. Allow DocSequences to do
+	the sorting/filtering themselves
+
+2008-09-29 08:59 +0000  dockes    (00bc43d91e91)
+
+	* src/kde/kioslave/recoll/kio_recoll.cpp,
+	src/python/recoll/pyrecoll.cpp, src/qtgui/reslist.cpp,
+	src/query/docseq.cpp, src/query/docseq.h, src/query/docseqdb.cpp,
+	src/query/docseqdb.h, src/query/docseqhist.cpp,
+	src/query/docseqhist.h, src/query/filtseq.cpp, src/query/filtseq.h,
+	src/query/recollq.cpp, src/query/sortseq.cpp, src/query/sortseq.h,
+	src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/rcldb/rclquery.cpp,
+	src/rcldb/rclquery.h:
+	doc.pc now only place where relevancy is stored
+
+2008-09-29 07:13 +0000  dockes    (da809a196cc5)
+
+	* src/qtgui/reslist.h:
+	comments
+
+2008-09-29 06:58 +0000  dockes    (dccf6cb38207)
+
+	* src/python/recoll/pyrecoll.cpp, src/query/recollq.cpp,
+	src/rcldb/rclquery.cpp, src/rcldb/rclquery.h,
+	src/rcldb/searchdata.cpp, src/rcldb/searchdata.h:
+	move sort params from searchdata to rclquery
+
+2008-09-28 14:20 +0000  dockes    (0ce1cca8cac2)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/rclmain.ui,
+	src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h,
+	src/qtgui/reslist.cpp, src/qtgui/reslist.h, src/qtgui/sort_w.cpp,
+	src/query/filtseq.h, src/query/sortseq.cpp, src/query/sortseq.h,
+	src/sampleconf/mimeconf:
+	1st impl of catg filtering in reslist
+
+2008-09-28 07:40 +0000  dockes    (5e29feefc554)
+
+	* src/query/filtseq.cpp, src/query/filtseq.h: new file.
+	* src/lib/Makefile, src/lib/mkMake, src/qtgui/rclmain_w.cpp,
+	src/qtgui/rclmain_w.h, src/qtgui/reslist.cpp, src/qtgui/reslist.h,
+	src/query/docseq.h, src/query/docseqdb.cpp, src/query/docseqdb.h,
+	src/query/filtseq.cpp, src/query/filtseq.h:
+	rearranged some reslist/rclmain functions + add but not use filtseq
+	code
+
+2008-09-25 09:08 +0000  dockes    (8588b8cc05d1)
+
+	* src/python/samples/rcldlkp.py, src/python/samples/rclmbox.py:
+	*** empty log message ***
+
+2008-09-25 09:07 +0000  dockes    (40e028763fab)
+
+	* src/python/xesam/xesam-recoll-service:
+	arret apres hackfest
+
+2008-09-25 06:17 +0000  dockes    (811009efeb96)
+
+	* src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_it.ts,
+	src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_tr.ts,
+	src/qtgui/i18n/recoll_uk.ts, src/qtgui/i18n/recoll_xx.ts:
+	*** empty log message ***
+
+2008-09-25 06:14 +0000  dockes    (ce29702ab7cc)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts:
+	*** empty log message ***
+
+2008-09-25 06:02 +0000  dockes    (a065c833e601)
+
+	* src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts:
+	new russian/ukrainian translations
+
+2008-09-25 06:00 +0000  dockes    (ba80af83d32f)
+
+	* src/qtgui/advsearch_w.cpp, src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_tr.ts, src/qtgui/i18n/recoll_uk.ts,
+	src/qtgui/i18n/recoll_xx.ts, src/qtgui/rclmain_w.cpp,
+	src/qtgui/reslist.cpp, src/qtgui/uiprefs.ui:
+	fixed typos
+
+2008-09-24 06:50 +0000  dockes    (695914bd6d5d)
+
+	* src/kde/recoll_applet/0README.Recoll:
+	*** empty log message ***
+
+2008-09-24 06:44 +0000  dockes    (48bbf0a115cc)
+
+	* src/query/recollq.cpp:
+	command line args must be processed as local 8 bit
+
+2008-09-24 06:34 +0000  dockes    (e90ac2ed62fe)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-09-24 05:35 +0000  dockes    (36e2522b06b2)
+
+	* src/qtgui/main.cpp:
+	command line args must be processed as local 8 bit
+
+2008-09-24 05:31 +0000  dockes    (9b420f1d25f8)
+
+	* src/qtgui/main.cpp:
+	command line args must be processed as local 8 bit
+
+2008-09-23 14:32 +0000  dockes    (cd440e5917d3)
+
+	* src/configure, src/configure.ac:
+	use $QMAKE not qmake when checking version
+
+2008-09-16 10:19 +0000  dockes    (2bc72ad13a9b)
+
+	* src/python/recoll/pyrecoll.cpp:
+	fields, indexing i/f
+
+2008-09-16 10:13 +0000  dockes    (ff10e8072c66)
+
+	* src/qtgui/rclmain_w.cpp:
+	have to setkeydir before calling internfile when opening
+
+2008-09-16 08:18 +0000  dockes    (c78945994f7c)
+
+	* src/python/samples/recollqsd.py: new file.
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/internfile/internfile.cpp, src/python/recoll/pyrecoll.cpp,
+	src/python/recoll/setup.py, src/python/samples/recollqsd.py,
+	src/python/xesam/xesam-recoll-service, src/query/recollq.cpp,
+	src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/rcldb/rcldb_p.h,
+	src/rcldb/rcldoc.cpp, src/rcldb/rcldoc.h, src/rcldb/rclquery.cpp,
+	src/rcldb/rclquery.h, src/rcldb/searchdata.cpp,
+	src/rcldb/searchdata.h, src/sampleconf/fields:
+	general field name handling cleanup + sort facility in rclquery
+
+2008-09-16 08:13 +0000  dockes    (bd4c0f6fd812)
+
+	* src/internfile/mh_mail.cpp:
+	emit field for recipients
+
+2008-09-15 08:03 +0000  dockes    (11ba5592559e)
+
+	* src/sampleconf/fields, src/sampleconf/mimeconf,
+	src/sampleconf/mimemap, src/sampleconf/mimeview:
+	added rcltext/python/purple
+
+2008-09-15 08:02 +0000  dockes    (8af411ff9bf6)
+
+	* src/filters/rclpurple: new file.
+	* src/filters/rclpurple, src/qtgui/mtpics/README,
+	src/utils/base64.cpp, src/utils/smallut.cpp, src/utils/smallut.h,
+	src/utils/transcode.cpp:
+	*** empty log message ***
+
+2008-09-15 07:55 +0000  dockes    (49401228a5ef)
+
+	* src/filters/rclpython, src/qtgui/mtpics/pidgin.png,
+	src/qtgui/mtpics/text-x-python.png: new file.
+	* src/filters/rclpython, src/qtgui/mtpics/pidgin.png,
+	src/qtgui/mtpics/text-x-python.png:
+	*** empty log message ***
+
+2008-09-13 12:56 +0000  dockes    (299644545ca0)
+
+	* src/python/xesam/xesam-recoll-service: new file.
+	* src/python/xesam/xesam-recoll-service:
+	*** empty log message ***
+
+2008-09-12 11:35 +0000  dockes    (5c85f26d124d)
+
+	* src/sampleconf/mimeconf:
+	index c code with the new rcltext generic filter
+
+2008-09-12 11:30 +0000  dockes    (b8277032f494)
+
+	* src/filters/rcltext: new file.
+	* src/filters/rcltext:
+	*** empty log message ***
+
+2008-09-09 12:58 +0000  dockes    (a3afe9b35b57)
+
+	* src/rcldb/rcldb.cpp:
+	debug messages
+
+2008-09-08 16:49 +0000  dockes    (a18ab0c682a4)
+
+	* src/rcldb/rcldoc.cpp, src/sampleconf/fields: new file.
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/internfile/internfile.cpp, src/lib/Makefile, src/lib/mkMake,
+	src/python/recoll/pyrecoll.cpp, src/python/samples/recollq.py,
+	src/qtgui/preview_w.cpp, src/qtgui/reslist.cpp, src/query/docseq.h,
+	src/query/docseqdb.cpp, src/query/recollq.cpp, src/rcldb/rcldb.cpp,
+	src/rcldb/rcldoc.cpp, src/rcldb/rcldoc.h, src/recollinstall.in,
+	src/sampleconf/fields:
+	foundation work for configurable stored/indexed fields
+
+2008-09-08 15:47 +0000  dockes    (861e4211280b)
+
+	* src/rcldb/searchdata.h:
+	unused args warning
+
+2008-09-08 15:47 +0000  dockes    (3f6468e20038)
+
+	* src/utils/smallut.cpp:
+	test driver
+
+2008-09-08 15:46 +0000  dockes    (581ee503208b)
+
+	* src/ChangeLog:
+	*** empty log message ***
+
+2008-09-07 07:22 +0000  dockes    (dfe4dd53d0b9)
+
+	* src/Makefile.in, src/qt4gui/uifrom3:
+	cleanup
+
+2008-09-07 07:08 +0000  dockes    (95c2a94321a3)
+
+	* src/Makefile.in:
+	cleaning
+
+2008-09-07 06:43 +0000  dockes    (6294638c2504)
+
+	* src/Makefile.in, src/VERSION, src/mk/localdefs.in:
+	improved cleaning
+
+2008-09-05 11:45 +0000  dockes    (8532ebb84453)
+
+	* src/rcldb/rclquery.cpp:
+	gcc4.3
+
+2008-09-05 10:36 +0000  dockes    (2ada099a7545)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h:
+	strimline and restructure the doctree-exploring loop to make it
+	close to understandable
+
+2008-09-05 10:34 +0000  dockes    (404aa368d498)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb_p.h, src/rcldb/rclquery.cpp:
+	add relevancyrating to the metadata when querying
+
+2008-09-05 10:33 +0000  dockes    (bc0210deda18)
+
+	* src/internfile/myhtmlparse.cpp:
+	accept iso date format (2008-09-05T11:55:32)
+
+2008-09-05 10:26 +0000  dockes    (4b17d6defb3c)
+
+	* src/doc/man/recollindex.1:
+	*** empty log message ***
+
+2008-09-01 20:39 +0000  dockes    (39ff03712b54)
+
+	* src/sampleconf/mimeconf, src/sampleconf/mimeview:
+	openxml types
+
+2008-09-01 17:31 +0000  dockes    (f0fde685acc8)
+
+	* src/filters/rclopxml:
+	sort of works
+
+2008-09-01 17:21 +0000  dockes    (dfd3281994ff)
+
+	* src/filters/rclopxml: new file.
+	* src/filters/rclopxml:
+	almost almost ok excepts outputs some formatting directives for ppt
+
+2008-08-31 15:28 +0000  dockes    (7756d792699d [RECOLL_1_11_1exp1, RECOLL_1_11_1exp2, RECOLL_1_11_1exp])
+
+	* packaging/debian/changelog, packaging/debian/control,
+	packaging/debian/rules:
+	*** empty log message ***
+
+2008-08-30 12:21 +0000  dockes    (60b122f6f4d6)
+
+	* src/rcldb/rcldb.cpp:
+	typo in xfsn len fix
+
+2008-08-30 07:38 +0000  dockes    (d516181ad7a0)
+
+	* src/rcldb/rcldb.cpp:
+	truncate simple file names at max term length
+
+2008-08-30 07:34 +0000  dockes    (59326d99e18d)
+
+	* src/utils/smallut.cpp:
+	utf8truncate
+
+2008-08-30 07:31 +0000  dockes    (8f5c5fba53d1)
+
+	* src/utils/smallut.cpp, src/utils/smallut.h:
+	utf8truncate
+
+2008-08-29 14:12 +0000  dockes    (41c405565cd4)
+
+	* tests/boolean/boolean.sh:
+	or->OR
+
+2008-08-29 13:05 +0000  dockes    (6454f838026e)
+
+	* src/internfile/mh_mbox.cpp:
+	accept weird date format in From lines used by (old?) tbird
+
+2008-08-29 09:51 +0000  dockes    (b830b6d6b04d)
+
+	* src/index/recollindex.cpp:
+	be more informative when monitoring not configured
+
+2008-08-28 15:44 +0000  dockes    (27a9bf47f895)
+
+	* src/python/recoll/pyrecoll.cpp, src/python/samples/rcldlkp.py,
+	src/python/samples/rclmbox.py, src/rcldb/rcldb.cpp,
+	src/sampleconf/mimeview:
+	*** empty log message ***
+
+2008-08-28 15:43 +0000  dockes    (d28eac37bdd9)
+
+	* src/query/wasatorcl.cpp, src/rcldb/searchdata.h:
+	use a refcntr for the sub SearchData
+
+2008-08-28 15:42 +0000  dockes    (417a8f1346df)
+
+	* src/rcldb/searchdata.cpp:
+	ensure that a negative clause is not first or only in list
+
+2008-08-27 12:34 +0000  dockes    (658ca4b955c8)
+
+	* src/python/recoll/pyrecoll.cpp:
+	reorganize+traces
+
+2008-08-27 12:12 +0000  dockes    (37791b8e66aa)
+
+	* src/python/recoll/pyrecoll.cpp:
+	doc
+
+2008-08-26 13:50 +0000  dockes    (af43f86ffe99)
+
+	* src/query/wasastringtoquery.cpp:
+	make AND and OR case-sensitive
+
+2008-08-26 13:47 +0000  dockes    (bda91f767e32)
+
+	* src/query/wasastringtoquery.cpp, src/query/wasastringtoquery.h,
+	src/query/wasatorcl.cpp:
+	try to parse the whole of Xesam user language 0.95
+
+2008-08-26 07:56 +0000  dockes    (6a17726c7e41)
+
+	* src/python/recoll/pyrecoll.cpp, src/python/recoll/setup.py,
+	src/python/samples/rcldlkp.py, src/python/samples/rclmbox.py,
+	src/python/samples/recollq.py:
+	renamed a few things
+
+2008-08-26 07:38 +0000  dockes    (c97de92889e3)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	copy author back from data record to Doc
+
+2008-08-26 07:36 +0000  dockes    (d6e27e630844)
+
+	* src/python/samples/rcldlkp.py, src/python/samples/rclmbox.py,
+	src/python/samples/recollq.py: new file.
+	* src/python/recoll/pyrecoll.cpp, src/python/recoll/setup.py,
+	src/python/samples/rcldlkp.py, src/python/samples/rclmbox.py,
+	src/python/samples/recollq.py:
+	*** empty log message ***
+
+2008-08-26 07:33 +0000  dockes    (1d6816c32358)
+
+	* src/rcldb/rcldoc.h:
+	comments
+
+2008-08-26 07:33 +0000  dockes    (4e86d4c4f3d9)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/qtgui/reslist.cpp:
+	move ipath computations from reslist to internfile
+
+2008-08-26 07:31 +0000  dockes    (b44f4950a084)
+
+	* src/internfile/mh_exec.cpp, src/internfile/mh_exec.h:
+	implement skip_to_document
+
+2008-08-25 16:12 +0000  dockes    (936499917659)
+
+	* src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/sampleconf/mimeview:
+	opxml formats
+
+2008-07-30 13:16 +0000  dockes    (0f1387a8a565)
+
+	* src/rcldb/stemdb.cpp:
+	fixed inocuous but nasty bad string value test
+
+2008-07-29 08:25 +0000  dockes    (a7888d48c2a6)
+
+	* src/rcldb/rcldb.h, src/rcldb/rcldoc.h:
+	comments
+
+2008-07-29 06:25 +0000  dockes    (28ebb7cac39d)
+
+	* src/index/indexer.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h,
+	src/rcldb/rcldb_p.h, src/rcldb/rcldoc.h:
+	use explicit parent udi term instead of Qterm structure to express
+	parent-child relationship
+
+2008-07-28 12:24 +0000  dockes    (5cb926be362f)
+
+	* src/index/indexer.cpp, src/lib/Makefile, src/lib/mkMake,
+	src/query/docseqhist.cpp, src/rcldb/pathhash.cpp,
+	src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/rcldb/rcldoc.h,
+	src/utils/Makefile, src/utils/fileudi.cpp:
+	replaced path|ipath with unique doc id in rcldb i/f. Still depends
+	on udi structure for parent/child
+
+2008-07-28 10:20 +0000  dockes    (07bc933efb70)
+
+	* src/utils/fileudi.cpp, src/utils/fileudi.h: new file.
+	* src/utils/fileudi.cpp, src/utils/fileudi.h:
+	*** empty log message ***
+
+2008-07-28 08:42 +0000  dockes    (825cb66f8be3)
+
+	* src/index/indexer.cpp, src/qtgui/uiprefs_w.cpp, src/rcldb/rcldb.cpp,
+	src/rcldb/rcldb.h, src/rcldb/rcldb_p.h, src/rcldb/rcldoc.h,
+	src/utils/base64.h:
+	begin i/f cleanup: opacify doc uptodate sig (size+mtime)
+
+2008-07-04 09:29 +0000  dockes    (6551cb55fa98 [RECOLL_1_10_3])
+
+	* src/qtgui/plaintorich.cpp:
+	turn dbg off
+
+2008-07-01 13:00 +0000  dockes    (19e926f99256)
+
+	* src/ChangeLog, src/VERSION:
+	1.10.3: checkpoint for 1.10 branch maintenance
+
+2008-07-01 12:11 +0000  dockes    (910f409cb0be)
+
+	* src/bincimapmime/convert.h:
+	suppressed a few wasteful string-cstr conversions
+
+2008-07-01 11:57 +0000  dockes    (913963d84bc5)
+
+	* src/bincimapmime/convert.cc, src/bincimapmime/convert.h,
+	src/bincimapmime/mime-parseonlyheader.cc, src/bincimapmime/mime-
+	printheader.cc:
+	suppressed a few wasteful string-cstr conversions
+
+2008-07-01 11:51 +0000  dockes    (54f3a868fb92)
+
+	* src/bincimapmime/address.cc, src/internfile/mh_mail.cpp,
+	src/query/wasastringtoquery.cpp, src/query/xadump.cpp,
+	src/rcldb/rcldb.cpp, src/rcldb/rclquery.cpp, src/rcldb/searchdata.h,
+	src/utils/conftree.cpp, src/utils/conftree.h, src/utils/idfile.cpp,
+	src/utils/mimeparse.cpp, src/utils/pathut.cpp, src/utils/pathut.h,
+	src/utils/smallut.cpp:
+	suppressed a few wasteful string-cstr conversions
+
+2008-07-01 10:29 +0000  dockes    (3e1aa9958af4)
+
+	* src/index/mimetype.cpp, src/index/mimetype.h,
+	src/internfile/mh_mail.cpp:
+	mh_mail now uses mimetype() to try and better identify application
+	/octet-stream
+
+2008-07-01 08:31 +0000  dockes    (3665315a4fdd)
+
+	* src/ChangeLog:
+	*** empty log message ***
+
+2008-07-01 08:31 +0000  dockes    (928e08cb2cc8)
+
+	* src/rcldb/rclquery.cpp, src/rcldb/rclquery.h,
+	src/rcldb/rclquery_p.h:
+	small cleanups and comments
+
+2008-07-01 08:28 +0000  dockes    (e5847d808877)
+
+	* src/rcldb/rcldb.h:
+	comments
+
+2008-07-01 08:27 +0000  dockes    (97cd50050ecf)
+
+	* src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h,
+	src/qtgui/preview_w.cpp, src/qtgui/preview_w.h,
+	src/qtgui/reslist.cpp:
+	cleaned up plaintorich. Now a proper subclassable class + highlights
+	multiple groups, not just the first
+
+2008-07-01 08:27 +0000  dockes    (3ef1709e5955)
+
+	* src/qtgui/confgui/confguiindex.cpp:
+	typo
+
+2008-07-01 08:26 +0000  dockes    (f6ddabbf59a2)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/utils/pathut.cpp,
+	src/utils/pathut.h:
+	moved printableUrl() to pathut
+
+2008-07-01 08:24 +0000  dockes    (413a8a75c5af)
+
+	* src/python/recoll/pyrecoll.cpp:
+	added abstract i/f
+
+2008-06-17 11:43 +0000  dockes    (009a912c3daf)
+
+	* src/python/recoll/pyrecoll.cpp, src/python/recoll/setup.py:
+	basic functionality ok, more funcs and options needed
+
+2008-06-13 18:23 +0000  dockes    (58a4b54fa103)
+
+	* src/utils/refcntr.h:
+	separated rcldb and rclquery
+
+2008-06-13 18:22 +0000  dockes    (a52ef2510839)
+
+	* src/rcldb/rcldb_p.h, src/rcldb/rclquery.cpp, src/rcldb/rclquery.h,
+	src/rcldb/rclquery_p.h: new file.
+	* src/kde/kioslave/recoll/kio_recoll.cpp, src/lib/Makefile,
+	src/lib/mkMake, src/python/recoll/pyrecoll.cpp,
+	src/python/recoll/setup.py, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp, src/query/docseq.h, src/query/docseqdb.cpp,
+	src/query/docseqdb.h, src/query/recollq.cpp, src/rcldb/rcldb.cpp,
+	src/rcldb/rcldb.h, src/rcldb/rcldb_p.h, src/rcldb/rclquery.cpp,
+	src/rcldb/rclquery.h, src/rcldb/rclquery_p.h,
+	src/rcldb/searchdata.h, src/utils/pathut.cpp, src/utils/refcntr.h:
+	separated rcldb and rclquery
+
+2008-06-13 18:14 +0000  dockes    (e39af9faad92)
+
+	* src/common/autoconfig.h.in, src/configure, src/configure.ac,
+	src/mk/Darwin, src/mk/FreeBSD, src/mk/Linux, src/mk/OpenBSD:
+	move few things from the mk/sys files to autoconf
+
+2008-06-10 06:30 +0000  dockes    (822b88ae3d1f)
+
+	* src/qtgui/mtpics/License_sidux.txt: new file.
+	* src/qtgui/mtpics/License_sidux.txt:
+	*** empty log message ***
+
+2008-06-09 09:14 +0000  dockes    (c9953f1a54ee)
+
+	* src/filters/rclsiduxman, src/qtgui/mtpics/sidux-book.png: new file.
+	* src/filters/rclsiduxman, src/qtgui/mtpics/sidux-book.png,
+	src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/sampleconf/mimeview:
+	sidux manual support
+
+2008-05-27 10:46 +0000  dockes    (2afb8b8ec073)
+
+	* 1.10.2
+
+2008-05-27 10:45 +0000  dockes    (62c7f8ba0eb8)
+
+	* packaging/debian/changelog, packaging/rpm/recoll.spec,
+	packaging/rpm/recollfedora.spec, packaging/rpm/recollmdk.spec,
+	src/python/recoll/pyrecoll.cpp, src/python/recoll/setup.py,
+	website/BUGS.txt, website/CHANGES.txt, website/download.html,
+	website/features.html, website/index.html.en, website/index.html.fr,
+	website/styles/style.css:
+	1.10.2
+
+2008-05-27 06:47 +0000  dockes    (b120e7a059cd [RECOLL_1_10_2])
+
+	* src/README:
+	*** empty log message ***
+
+2008-05-27 06:46 +0000  dockes    (70d9bb153b58)
+
+	* src/VERSION:
+	1.10.2
+
+2008-05-27 06:18 +0000  dockes    (305829599fb1)
+
+	* src/utils/pathut.cpp:
+	suppress warning
+
+2008-05-27 05:40 +0000  dockes    (f611211f012a)
+
+	* src/internfile/internfile.cpp:
+	log message
+
+2008-05-26 09:07 +0000  dockes    (dbb469971d76)
+
+	* src/ChangeLog:
+	*** empty log message ***
+
+2008-05-21 07:21 +0000  dockes    (b1ee79619cca)
+
+	* src/qtgui/advsearch_w.cpp, src/qtgui/confgui/confgui.cpp,
+	src/qtgui/confgui/confgui.h, src/qtgui/preview_w.cpp,
+	src/qtgui/reslist.cpp, src/utils/idfile.cpp:
+	openSuse 11 compile issues
+
+2008-05-20 10:09 +0000  dockes    (f047b0f61753)
+
+	* src/qtgui/advsearch_w.cpp, src/rcldb/rcldb.cpp:
+	*** empty log message ***
+
+2008-05-20 10:09 +0000  dockes    (f2e76fada01c)
+
+	* src/unac/unac.c:
+	make strict gcc happy
+
+2008-05-09 12:34 +0000  dockes    (be08db2c226e)
+
+	* src/python/recoll/pyrecoll.cpp, src/python/recoll/setup.py: new
+	file.
+	* src/python/recoll/pyrecoll.cpp, src/python/recoll/setup.py:
+	*** empty log message ***
+
+2008-05-08 10:00 +0000  dockes    (2ff9f42dc279)
+
+	* src/rcldb/searchdata.h:
+	comments
+
+2008-05-08 09:57 +0000  dockes    (bd6106d7f9ab)
+
+	* src/utils/smallut.cpp, src/utils/smallut.h:
+	*** empty log message ***
+
+2008-05-08 09:31 +0000  dockes    (70f8eab20535)
+
+	* src/ChangeLog:
+	*** empty log message ***
+
+2008-05-07 06:14 +0000  dockes    (f3d36126287d)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-05-05 20:31 +0000  dockes    (d271616c4b99)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-05-05 20:28 +0000  dockes    (02b1484f3eee)
+
+	* src/doc/user/usermanual.sgml, src/qtgui/guiutils.cpp,
+	src/qtgui/guiutils.h, src/qtgui/preview_w.cpp,
+	src/qtgui/reslist.cpp, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp:
+	allow setting query term highlight color in prefs
+
+2008-05-05 16:38 +0000  dockes    (763298305d15)
+
+	* src/qtgui/reslist.cpp:
+	Edit -> Open in links
+
+2008-05-05 13:13 +0000  dockes    (d2fc5c651024)
+
+	* src/bincimapmime/mime-parsefull.cc:
+	part data was sometimes truncated because of bad handling of
+	consecutive mime boundaries. Most common symptom: error in base64
+	decoding
+
+2008-04-18 11:41 +0000  dockes    (32155182993c)
+
+	* src/mk/localdefs.in:
+	get CXXFLAGS from autoconf
+
+2008-04-18 11:39 +0000  dockes    (72073f033a45)
+
+	* src/query/xadump.cpp:
+	xadump would sometimes dump core with -b
+
+2008-04-18 11:38 +0000  dockes    (ef6566c2ac8e)
+
+	* src/qtgui/preview_w.cpp:
+	walking the search terms hits backwards would go forward
+
+2008-04-18 11:37 +0000  dockes    (018890cfdbd7)
+
+	* src/utils/Makefile, src/utils/base64.cpp, src/utils/readfile.cpp:
+	base64 testing code
+
+2008-02-19 08:02 +0000  dockes    (34b45c5acd1c)
+
+	* src/qtgui/main.cpp:
+	make first sort after -q work
+
+2008-02-19 08:02 +0000  dockes    (1293fc15412b)
+
+	* src/qtgui/rclmain_w.cpp:
+	comments+debug
+
+2008-02-19 07:41 +0000  dockes    (efbaeed44ee9)
+
+	* src/rcldb/rcldb.cpp:
+	traces
+
+2008-02-11 10:21 +0000  dockes    (81923201adc7)
+
+	* src/utils/idfile.cpp:
+	hack for Mark B.: allow treating (single-message) mbox files as
+	message/rfc822
+
+2008-02-08 08:37 +0000  dockes    (ddcce838e7d0)
+
+	* src/qtgui/i18n/recoll_de.ts:
+	update by Frank Thieme
+
+2008-02-05 10:45 +0000  dockes    (51a501984fd4)
+
+	* src/sampleconf/mimeconf:
+	*** empty log message ***
+
+2008-02-03 16:24 +0000  dockes    (825bb43d67ca)
+
+	* src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/sampleconf/mimeview:
+	rclsvg
+
+2008-02-03 16:05 +0000  dockes    (81794c3a6d9e)
+
+	* src/filters/rclsvg:
+	*** empty log message ***
+
+2008-02-03 16:04 +0000  dockes    (40c35a7fb1bb)
+
+	* src/filters/rclsvg: new file.
+	* src/filters/rclsvg:
+	*** empty log message ***
+
+2008-01-29 10:14 +0000  dockes    (fd74eae7e8b4 [RECOLL_1_10_1])
+
+	* src/README:
+	*** empty log message ***
+
+2008-01-29 10:11 +0000  dockes    (a1fee09bfc3d)
+
+	* src/rcldb/searchdata.h:
+	m_haveWildCards was sometimes not init
+
+2008-01-29 08:41 +0000  dockes    (ebc971754f92)
+
+	* src/ChangeLog:
+	*** empty log message ***
+
+2008-01-24 09:34 +0000  dockes    (301425122a56)
+
+	* src/qtgui/main.cpp:
+	*** empty log message ***
+
+2008-01-17 11:15 +0000  dockes    (af11c991aff3)
+
+	* src/qtgui/idxthread.cpp, src/qtgui/idxthread.h,
+	src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp,
+	src/qtgui/rclmain_w.h:
+	allow stopping indexing through menu action
+
+2008-01-17 11:14 +0000  dockes    (4c108ac6227a)
+
+	* src/query/wasastringtoquery.h:
+	comment
+
+2008-01-17 11:13 +0000  dockes    (7b2a9225dbef)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-01-16 11:14 +0000  dockes    (ddfe49735bc2)
+
+	* src/query/wasatorcl.cpp, src/rcldb/searchdata.cpp,
+	src/rcldb/searchdata.h:
+	express query language OR chains as rcldb subqueries so that field
+	specs will work inside them
+
+2008-01-16 10:52 +0000  dockes    (6487da12360f)
+
+	* src/ChangeLog, src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2008-01-16 08:43 +0000  dockes    (592d1258c5e4)
+
+	* src/rcldb/searchdata.cpp:
+	splitString filename queries
+
+2007-12-20 09:08 +0000  dockes    (e99decc750eb)
+
+	* src/index/indexer.cpp, src/rcldb/rcldb.cpp:
+	ensure that the names of files with filter errors get indexed anyway
+
+2007-12-13 06:58 +0000  dockes    (de422a0df409)
+
+	* src/aspell/rclaspell.cpp, src/bincimapmime/convert.h,
+	src/common/rclconfig.cpp, src/common/rclinit.cpp,
+	src/common/textsplit.cpp, src/common/unacpp.cpp,
+	src/index/csguess.cpp, src/index/indexer.cpp,
+	src/index/rclmonprc.cpp, src/index/rclmonrcv.cpp,
+	src/index/recollindex.cpp, src/internfile/htmlparse.cpp,
+	src/internfile/mh_mail.cpp, src/internfile/mh_mbox.cpp,
+	src/internfile/myhtmlparse.cpp, src/query/docseqhist.cpp,
+	src/query/history.cpp, src/query/recollq.cpp,
+	src/rcldb/pathhash.cpp, src/rcldb/rcldb.cpp, src/utils/base64.cpp,
+	src/utils/conftree.cpp, src/utils/copyfile.cpp,
+	src/utils/fstreewalk.cpp, src/utils/idfile.cpp,
+	src/utils/mimeparse.cpp, src/utils/pathut.cpp,
+	src/utils/readfile.cpp, src/utils/wipedir.cpp:
+	gcc 4 compat, thanks to Kartik Mistry
+
+2007-12-04 10:17 +0000  dockes    (f2bd537aad87)
+
+	* src/qtgui/rclmain_w.cpp:
+	directly open editor action choice dialog when user says so
+
+2007-12-04 10:16 +0000  dockes    (9a289ca30889)
+
+	* src/qtgui/uiprefs_w.cpp, src/utils/utf8iter.cpp:
+	*** empty log message ***
+
+2007-11-25 07:29 +0000  dockes    (3782c85019d4)
+
+	* src/qtgui/i18n/recoll_tr.ts:
+	*** empty log message ***
+
+2007-11-24 16:51 +0000  dockes    (a41099c58ac0)
+
+	* src/qtgui/i18n/recoll_fr.ts:
+	accents
+
+2007-11-24 16:43 +0000  dockes    (eecb572a0935)
+
+	* src/qtgui/confgui/confguiindex.h:
+	make conftoppanelw a q_object for translations to work
+
+2007-11-24 10:41 +0000  dockes    (343184d41f3b)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_tr.ts, src/qtgui/i18n/recoll_uk.ts,
+	src/qtgui/i18n/recoll_xx.ts:
+	*** empty log message ***
+
+2007-11-21 16:34 +0000  dockes    (966333a903a9)
+
+	* src/VERSION:
+	*** empty log message ***
+
+2007-11-21 16:34 +0000  dockes    (aed5f0389421)
+
+	* 1.10.0
+
+2007-11-21 16:34 +0000  dockes    (4918fce7a71a)
+
+	* packaging/debian/changelog, packaging/debian/control,
+	packaging/debian/menu, packaging/debian/rules,
+	packaging/rpm/recoll.spec, packaging/rpm/recollfedora.spec,
+	packaging/rpm/recollmdk.spec, tests/shared.sh, website/CHANGES.txt,
+	website/devel.html, website/download.html, website/features.html,
+	website/fr/features.html, website/index.html.en,
+	website/index.html.fr, website/pics/index.html,
+	website/styles/style.css:
+	1.10.0
+
+2007-11-21 14:15 +0000  dockes    (9c57d53ad305 [RECOLL_1_10_0])
+
+	* src/qtgui/confgui/confguiindex.cpp, src/qtgui/main.cpp,
+	src/qtgui/rclmain_w.cpp, src/qtgui/recoll.h:
+	allow opening config gui if no index on first start
+
+2007-11-21 09:42 +0000  dockes    (b1db39055b6d)
+
+	* src/excludefile:
+	*** empty log message ***
+
+2007-11-21 09:34 +0000  dockes    (cca64d1bdb79)
+
+	* src/utils/conftree.cpp:
+	explicitely detect lines beginning with #
+
+2007-11-21 09:00 +0000  dockes    (2cb85a4bd555)
+
+	* src/INSTALL, src/README:
+	*** empty log message ***
+
+2007-11-16 15:20 +0000  dockes    (1f90c7302746)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-11-16 14:28 +0000  dockes    (d7f21b7adf20)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/internfile/internfile.cpp, src/internfile/mimehandler.cpp,
+	src/internfile/mimehandler.h:
+	indexedmimetypes
+
+2007-11-16 12:21 +0000  dockes    (8221e8f1ce4f)
+
+	* src/query/wasastringtoquery.cpp, src/query/wasatorcl.cpp:
+	very small effort to look like xesam simple query
+
+2007-11-16 07:34 +0000  dockes    (1398d49de21d)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_it.ts,
+	src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts:
+	*** empty log message ***
+
+2007-11-16 07:19 +0000  dockes    (eedcef5d56b7)
+
+	* src/qtgui/i18n/recoll_tr.ts:
+	*** empty log message ***
+
+2007-11-15 18:44 +0000  dockes    (99e585288200)
+
+	* src/qtgui/preview_w.cpp:
+	comment
+
+2007-11-15 18:39 +0000  dockes    (1ee213030954)
+
+	* src/qt4gui/q3richtext_p.h: new file.
+	* src/qt4gui/q3richtext_p.h, src/qt4gui/recoll.pro.in:
+	qt4 movetoanchor
+
+2007-11-15 18:39 +0000  dockes    (335db8a5c8cb)
+
+	* src/qtgui/i18n/recoll_it.ts:
+	*** empty log message ***
+
+2007-11-15 18:34 +0000  dockes    (b3bb7b017f2a)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h:
+	moveToAnchor qt4
+
+2007-11-15 18:05 +0000  dockes    (1fe63dd4f268)
+
+	* src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h,
+	src/qtgui/preview_w.cpp, src/qtgui/preview_w.h,
+	src/qtgui/recoll.pro.in:
+	finally got anchors to work. qt3
+
+2007-11-15 18:05 +0000  dockes    (3158e59fd92e)
+
+	* src/qtgui/reslist.cpp:
+	*** empty log message ***
+
+2007-11-13 18:42 +0000  dockes    (1a7029e2dd4e)
+
+	* src/doc/man/recoll.1:
+	*** empty log message ***
+
+2007-11-13 18:40 +0000  dockes    (a5a94cfbfa7d)
+
+	* src/query/recollq.cpp:
+	keep format constant
+
+2007-11-13 18:40 +0000  dockes    (09f615e1a305)
+
+	* src/doc/user/usermanual.sgml:
+	text
+
+2007-11-13 18:39 +0000  dockes    (ce5a12bb92bd)
+
+	* tests/badsuffs1/badsuffs1.txt, tests/html/html.txt,
+	tests/mail/mail.txt, tests/ooff/ooff.txt, tests/special/special.txt:
+	1.10+small changes in dataset
+
+2007-11-13 15:35 +0000  dockes    (3a8d3f5af0e8)
+
+	* src/ChangeLog:
+	*** empty log message ***
+
+2007-11-13 15:34 +0000  dockes    (d23b6a94f4c0)
+
+	* src/VERSION:
+	1.10.0?
+
+2007-11-13 10:07 +0000  dockes    (f3338fa8cb4e)
+
+	* src/doc/man/recollq.1: new file.
+	* src/doc/man/recollq.1:
+	*** empty log message ***
+
+2007-11-09 18:48 +0000  dockes    (7859ad070bfc)
+
+	* src/qtgui/i18n/recoll_fr.ts:
+	1.9 ?
+
+2007-11-09 18:07 +0000  dockes    (557d4b9ce60a)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_tr.ts, src/qtgui/i18n/recoll_uk.ts,
+	src/qtgui/i18n/recoll_xx.ts:
+	*** empty log message ***
+
+2007-11-09 15:56 +0000  dockes    (2c201bdce017)
+
+	* src/filters/rcltex:
+	*** empty log message ***
+
+2007-11-09 15:46 +0000  dockes    (7960c1dd4d0a)
+
+	* src/kde/kioslave/recoll/00README.txt,
+	src/kde/kioslave/recoll/Makefile,
+	src/kde/kioslave/recoll/kio_recoll.cpp:
+	get things to compile with recoll 1.9 and suse + kde 3.5.5
+
+2007-11-09 13:44 +0000  dockes    (6196dbaf0aec)
+
+	* src/sampleconf/mimeview:
+	tex
+
+2007-11-09 11:55 +0000  dockes    (10ce7112596d)
+
+	* src/filters/rcltex: new file.
+	* src/filters/rclmedia: deleted file.
+	* src/filters/rclmedia, src/filters/rcltex, src/sampleconf/mimeconf,
+	src/sampleconf/mimemap:
+	added support for indexing TeX text
+
+2007-11-09 11:54 +0000  dockes    (5a35ec87ecf2)
+
+	* src/filters/rclid3:
+	comments
+
+2007-11-08 09:35 +0000  dockes    (bdde14acf3bd)
+
+	* src/query/recollq.h: new file.
+	* src/lib/Makefile, src/lib/mkMake, src/qtgui/main.cpp,
+	src/qtgui/recoll.pro.in, src/query/Makefile, src/query/recollq.cpp,
+	src/query/recollq.h:
+	allow recoll to be used as a recollq driver
+
+2007-11-08 09:34 +0000  dockes    (06e94674b8e2)
+
+	* src/utils/execmd.cpp:
+	include pthread
+
+2007-11-08 09:34 +0000  dockes    (d6e84478935d)
+
+	* src/rcldb/stemdb.cpp:
+	debug
+
+2007-11-08 09:32 +0000  dockes    (9f3349e7358b)
+
+	* src/qt4gui/recoll.pro.in:
+	turkish
+
+2007-11-08 09:31 +0000  dockes    (cd6b8b7d2a36)
+
+	* src/mk/OpenBSD:
+	*** empty log message ***
+
+2007-11-08 07:54 +0000  dockes    (6e986b6d1e64)
+
+	* src/query/recollq.cpp:
+	add -b option to only output url list
+
+2007-11-06 11:55 +0000  dockes    (2b0e2fc0dd88)
+
+	* src/qtgui/i18n/recoll_tr.ts: new file.
+	* src/qtgui/i18n/recoll_tr.ts:
+	*** empty log message ***
+
+2007-10-27 16:40 +0000  dockes    (e8ac0b8f6c46)
+
+	* src/rcldb/rcldb.cpp:
+	comment
+
+2007-10-27 08:40 +0000  dockes    (2ccaf4ef243e)
+
+	* src/ChangeLog, src/qtgui/i18n/recoll_de.ts,
+	src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_it.ts,
+	src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts:
+	*** empty log message ***
+
+2007-10-27 08:40 +0000  dockes    (e647e4592daa)
+
+	* src/filters/rcluncomp:
+	allow uncompressing suffix-less files
+
+2007-10-27 08:40 +0000  dockes    (dc6d97a86685)
+
+	* src/internfile/internfile.cpp:
+	use pcSubst
+
+2007-10-27 08:39 +0000  dockes    (54ba3ef75586)
+
+	* src/rcldb/rcldb.cpp:
+	adjust MatchDecider return type according to xapian version
+
+2007-10-27 07:06 +0000  dockes    (54b798d7fa02)
+
+	* src/qtgui/i18n/recoll_xx.ts:
+	sent to ning
+
+2007-10-26 10:42 +0000  dockes    (acfa4e6c24ba)
+
+	* src/doc/user/usermanual.sgml:
+	index config gui
+
+2007-10-25 15:51 +0000  dockes    (12d12311134a)
+
+	* src/qtgui/confgui/confguiindex.cpp:
+	labels
+
+2007-10-25 15:51 +0000  dockes    (2a1d29582446)
+
+	* src/qtgui/confgui/confgui.cpp:
+	use new style combobox constructor
+
+2007-10-25 15:50 +0000  dockes    (8b45d32c605c)
+
+	* src/internfile/mh_exec.h:
+	cleanup
+
+2007-10-25 08:04 +0000  dockes    (0bf8540b6c22)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-10-25 07:27 +0000  dockes    (5d57c38993af)
+
+	* src/query/recollq.cpp, src/query/wasatorcl.cpp:
+	added option to query language for filtering on directory
+
+2007-10-25 07:09 +0000  dockes    (d1adc7006d08)
+
+	* src/rcldb/rcldb.cpp:
+	add filter topdir to query description
+
+2007-10-24 15:38 +0000  dockes    (5f1863c33239)
+
+	* src/rcldb/rcldb.cpp:
+	use a Xapian MatchDecider to filter on dir path
+
+2007-10-24 08:42 +0000  dockes    (2d337545271f)
+
+	* src/rcldb/rcldb.cpp:
+	make filter a xapian::MatchDecider, dont change mechanism
+
+2007-10-19 15:25 +0000  dockes    (935a92d6db39)
+
+	* src/qtgui/ssearch_w.cpp, src/utils/smallut.cpp:
+	consider cr and lf as whitespace when splitting strings
+
+2007-10-19 14:31 +0000  dockes    (bb88b5f4fc25)
+
+	* src/qtgui/confgui/confgui.h, src/qtgui/confgui/confguiindex.cpp:
+	small sizing adjustments
+
+2007-10-18 10:39 +0000  dockes    (f34f0260a62a)
+
+	* src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h,
+	src/qtgui/preview_w.cpp, src/qtgui/reslist.cpp:
+	let plaintorich do the chunking, easier to make sure we dont confuse
+	textedit by cutting inside a tag
+
+2007-10-18 10:15 +0000  dockes    (7c46f29559fe)
+
+	* src/qtgui/confgui/confguiindex.cpp:
+	qt3
+
+2007-10-17 16:12 +0000  dockes    (41f711edeb0b)
+
+	* src/qtgui/plaintorich.cpp:
+	replaced utf8 cgj with good ole bel
+
+2007-10-17 11:40 +0000  dockes    (102fcc4aa169)
+
+	* src/internfile/mh_mail.cpp, src/internfile/mh_mail.h,
+	src/utils/mimeparse.cpp:
+	text/plain attachments were not transcoded to utf-8
+
+2007-10-17 09:57 +0000  dockes    (dd33128e3a59)
+
+	* src/common/rclconfig.cpp, src/internfile/internfile.cpp:
+	*** empty log message ***
+
+2007-10-15 13:08 +0000  dockes    (0a095e89bfb9)
+
+	* src/kde/recoll_applet/0README.Recoll, src/kde/recoll_applet/AUTHORS,
+	src/kde/recoll_applet/COPYING, src/kde/recoll_applet/ChangeLog,
+	src/kde/recoll_applet/Doxyfile, src/kde/recoll_applet/INSTALL,
+	src/kde/recoll_applet/Makefile.am,
+	src/kde/recoll_applet/Makefile.cvs,
+	src/kde/recoll_applet/Makefile.in, src/kde/recoll_applet/NEWS,
+	src/kde/recoll_applet/README, src/kde/recoll_applet/TODO,
+	src/kde/recoll_applet/acinclude.m4,
+	src/kde/recoll_applet/aclocal.m4,
+	src/kde/recoll_applet/admin/Doxyfile.am,
+	src/kde/recoll_applet/admin/Doxyfile.global,
+	src/kde/recoll_applet/admin/Makefile.common,
+	src/kde/recoll_applet/admin/acinclude.m4.in,
+	src/kde/recoll_applet/admin/am_edit,
+	src/kde/recoll_applet/admin/bcheck.pl,
+	src/kde/recoll_applet/admin/compile,
+	src/kde/recoll_applet/admin/conf.change.pl,
+	src/kde/recoll_applet/admin/config.guess,
+	src/kde/recoll_applet/admin/config.pl,
+	src/kde/recoll_applet/admin/config.sub,
+	src/kde/recoll_applet/admin/configure.in.bot.end,
+	src/kde/recoll_applet/admin/configure.in.min,
+	src/kde/recoll_applet/admin/cvs.sh,
+	src/kde/recoll_applet/admin/debianrules,
+	src/kde/recoll_applet/admin/depcomp,
+	src/kde/recoll_applet/admin/deps.am, src/kde/recoll_applet/admin
+	/detect-autoconf.pl, src/kde/recoll_applet/admin/doxygen.sh,
+	src/kde/recoll_applet/admin/install-sh,
+	src/kde/recoll_applet/admin/libtool.m4.in,
+	src/kde/recoll_applet/admin/ltmain.sh,
+	src/kde/recoll_applet/admin/missing,
+	src/kde/recoll_applet/admin/mkinstalldirs,
+	src/kde/recoll_applet/admin/nmcheck,
+	src/kde/recoll_applet/admin/oldinclude.m4.in,
+	src/kde/recoll_applet/admin/pkg.m4.in,
+	src/kde/recoll_applet/admin/ylwrap,
+	src/kde/recoll_applet/config.h.in, src/kde/recoll_applet/configure,
+	src/kde/recoll_applet/configure.files,
+	src/kde/recoll_applet/configure.in,
+	src/kde/recoll_applet/configure.in.in,
+	src/kde/recoll_applet/doc/Makefile.am,
+	src/kde/recoll_applet/doc/Makefile.in,
+	src/kde/recoll_applet/doc/en/Makefile.am,
+	src/kde/recoll_applet/doc/en/Makefile.in,
+	src/kde/recoll_applet/doc/en/index.docbook,
+	src/kde/recoll_applet/po/Makefile.am,
+	src/kde/recoll_applet/po/Makefile.in,
+	src/kde/recoll_applet/src/Makefile.am,
+	src/kde/recoll_applet/src/Makefile.in,
+	src/kde/recoll_applet/src/kpixmapcombo.cpp,
+	src/kde/recoll_applet/src/kpixmapcombo.h,
+	src/kde/recoll_applet/src/recoll_applet.cpp,
+	src/kde/recoll_applet/src/recoll_applet.desktop,
+	src/kde/recoll_applet/src/recoll_applet.h,
+	src/kde/recoll_applet/src/recoll_applet.lsm,
+	src/kde/recoll_applet/stamp-h.in, src/kde/recoll_applet/subdirs: new
+	file.
+	* src/kde/recoll_applet/0README.Recoll, src/kde/recoll_applet/AUTHORS,
+	src/kde/recoll_applet/COPYING, src/kde/recoll_applet/ChangeLog,
+	src/kde/recoll_applet/Doxyfile, src/kde/recoll_applet/INSTALL,
+	src/kde/recoll_applet/Makefile.am,
+	src/kde/recoll_applet/Makefile.cvs,
+	src/kde/recoll_applet/Makefile.in, src/kde/recoll_applet/NEWS,
+	src/kde/recoll_applet/README, src/kde/recoll_applet/TODO,
+	src/kde/recoll_applet/acinclude.m4,
+	src/kde/recoll_applet/aclocal.m4,
+	src/kde/recoll_applet/admin/Doxyfile.am,
+	src/kde/recoll_applet/admin/Doxyfile.global,
+	src/kde/recoll_applet/admin/Makefile.common,
+	src/kde/recoll_applet/admin/acinclude.m4.in,
+	src/kde/recoll_applet/admin/am_edit,
+	src/kde/recoll_applet/admin/bcheck.pl,
+	src/kde/recoll_applet/admin/compile,
+	src/kde/recoll_applet/admin/conf.change.pl,
+	src/kde/recoll_applet/admin/config.guess,
+	src/kde/recoll_applet/admin/config.pl,
+	src/kde/recoll_applet/admin/config.sub,
+	src/kde/recoll_applet/admin/configure.in.bot.end,
+	src/kde/recoll_applet/admin/configure.in.min,
+	src/kde/recoll_applet/admin/cvs.sh,
+	src/kde/recoll_applet/admin/debianrules,
+	src/kde/recoll_applet/admin/depcomp,
+	src/kde/recoll_applet/admin/deps.am, src/kde/recoll_applet/admin
+	/detect-autoconf.pl, src/kde/recoll_applet/admin/doxygen.sh,
+	src/kde/recoll_applet/admin/install-sh,
+	src/kde/recoll_applet/admin/libtool.m4.in,
+	src/kde/recoll_applet/admin/ltmain.sh,
+	src/kde/recoll_applet/admin/missing,
+	src/kde/recoll_applet/admin/mkinstalldirs,
+	src/kde/recoll_applet/admin/nmcheck,
+	src/kde/recoll_applet/admin/oldinclude.m4.in,
+	src/kde/recoll_applet/admin/pkg.m4.in,
+	src/kde/recoll_applet/admin/ylwrap,
+	src/kde/recoll_applet/config.h.in, src/kde/recoll_applet/configure,
+	src/kde/recoll_applet/configure.files,
+	src/kde/recoll_applet/configure.in,
+	src/kde/recoll_applet/configure.in.in,
+	src/kde/recoll_applet/doc/Makefile.am,
+	src/kde/recoll_applet/doc/Makefile.in,
+	src/kde/recoll_applet/doc/en/Makefile.am,
+	src/kde/recoll_applet/doc/en/Makefile.in,
+	src/kde/recoll_applet/doc/en/index.docbook,
+	src/kde/recoll_applet/po/Makefile.am,
+	src/kde/recoll_applet/po/Makefile.in,
+	src/kde/recoll_applet/src/Makefile.am,
+	src/kde/recoll_applet/src/Makefile.in,
+	src/kde/recoll_applet/src/kpixmapcombo.cpp,
+	src/kde/recoll_applet/src/kpixmapcombo.h,
+	src/kde/recoll_applet/src/recoll_applet.cpp,
+	src/kde/recoll_applet/src/recoll_applet.desktop,
+	src/kde/recoll_applet/src/recoll_applet.h,
+	src/kde/recoll_applet/src/recoll_applet.lsm,
+	src/kde/recoll_applet/stamp-h.in, src/kde/recoll_applet/subdirs:
+	*** empty log message ***
+
+2007-10-14 16:07 +0000  dockes    (aea3ceac265d)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-10-09 14:08 +0000  dockes    (008fb8da2cfe)
+
+	* src/qt4gui/recoll.pro.in, src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/confgui/confguiindex.h, src/qtgui/idxthread.cpp,
+	src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp,
+	src/qtgui/rclmain_w.h, src/qtgui/recoll.pro.in:
+	indexing confgui seems to sort of work
+
+2007-10-09 11:08 +0000  dockes    (8e165638db48)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/confgui/confguiindex.h, src/qtgui/confgui/conflinkrcl.h,
+	src/qtgui/confgui/main.cpp:
+	*** empty log message ***
+
+2007-10-09 09:43 +0000  dockes    (bda697547b28)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h:
+	modified mechanism for confgui updates
+
+2007-10-09 09:40 +0000  dockes    (314568630e50)
+
+	* src/utils/conftree.h:
+	*** empty log message ***
+
+2007-10-07 20:22 +0000  dockes    (a4407de529dc)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confguiindex.cpp:
+	*** empty log message ***
+
+2007-10-06 07:44 +0000  dockes    (e12dcaba9422)
+
+	* src/sampleconf/mimeconf:
+	*** empty log message ***
+
+2007-10-06 07:26 +0000  dockes    (8c03c83a6353)
+
+	* src/ChangeLog, src/INSTALL, src/README, src/VERSION:
+	*** empty log message ***
+
+2007-10-06 07:13 +0000  dockes    (80c8e77d75e3)
+
+	* src/qtgui/i18n/recoll_xx.ts: new file.
+	* src/doc/user/usermanual.sgml, src/qtgui/i18n/recoll_xx.ts:
+	*** empty log message ***
+
+2007-10-05 14:00 +0000  dockes    (3f47738c7b7f)
+
+	* src/query/wasatorcl.cpp:
+	add rclcat prefix to query languages + adapt find_applet to use it
+
+2007-10-05 08:03 +0000  dockes    (eb9ae456f872)
+
+	* src/qtgui/main.cpp, src/qtgui/ssearch_w.cpp, src/qtgui/ssearch_w.h:
+	add cmd line option to run query when starting
+
+2007-10-04 12:26 +0000  dockes    (479712bd069b)
+
+	* src/rcldb/searchdata.cpp:
+	when search includes composite spans + other terms, increase slack
+	instead of switching to word split
+
+2007-10-04 12:21 +0000  dockes    (67c23cd41df2)
+
+	* src/common/rclconfig.cpp, src/common/textsplit.cpp,
+	src/common/textsplit.h:
+	make cjk ngramlen configurable
+
+2007-10-04 12:20 +0000  dockes    (e9e128bf43ab)
+
+	* src/index/indexer.cpp:
+	trace
+
+2007-10-03 14:53 +0000  dockes    (b8852ea7a80c)
+
+	* src/internfile/Makefile, src/internfile/mh_mbox.cpp,
+	src/internfile/mh_mbox.h:
+	Improve From_ line detection
+
+2007-10-02 14:25 +0000  dockes    (3379ab8d9013)
+
+	* src/doc/user/docbook.css, src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-10-02 14:22 +0000  dockes    (29a402a23d12)
+
+	* src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/sampleconf/mimeview:
+	a few more image files
+
+2007-10-02 14:00 +0000  dockes    (d0e7241eeb0e)
+
+	* src/filters/rclflac, src/filters/rclogg: new file.
+	* src/filters/rcljpeg: deleted file.
+	* src/filters/rclflac, src/filters/rcljpeg, src/filters/rclogg:
+	*** empty log message ***
+
+2007-10-02 13:56 +0000  dockes    (e180ca729bea)
+
+	* src/filters/rclimg:
+	comments,GPL
+
+2007-10-02 11:39 +0000  dockes    (7777fdc5d30a)
+
+	* src/common/rclconfig.cpp, src/common/textsplit.cpp,
+	src/common/textsplit.h:
+	add flag to disable cjk processing
+
+2007-10-01 17:56 +0000  dockes    (29b1aeb75d23)
+
+	* src/filters/rclimg: new file.
+	* src/filters/rclimg:
+	initial version from Cedric Scott
+
+2007-10-01 15:57 +0000  dockes    (b3aeb47d6a43)
+
+	* src/utils/conftree.cpp:
+	added updates/erase tests
+
+2007-10-01 06:35 +0000  dockes    (b29617933c16)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/confguiindex.cpp, src/qtgui/confgui/main.cpp,
+	src/qtgui/confgui/trconf.pro:
+	qt4 port
+
+2007-10-01 06:19 +0000  dockes    (78068b236681)
+
+	* src/VERSION, src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/qtgui/confgui/confgui.cpp, src/utils/conftree.cpp,
+	src/utils/conftree.h:
+	config update enabling functions
+
+2007-09-29 09:06 +0000  dockes    (e38c26097ece)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/confgui/confguiindex.h, src/qtgui/confgui/conflinkrcl.h,
+	src/qtgui/confgui/main.cpp, src/qtgui/confgui/trconf.pro:
+	*** empty log message ***
+
+2007-09-27 15:47 +0000  dockes    (9ac07bf91591)
+
+	* src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/confgui/confguiindex.h, src/qtgui/confgui/conflinkrcl.h:
+	new file.
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/confguiindex.cpp,
+	src/qtgui/confgui/confguiindex.h, src/qtgui/confgui/conflinkrcl.h,
+	src/qtgui/confgui/main.cpp, src/qtgui/confgui/trconf.pro:
+	*** empty log message ***
+
+2007-09-27 11:03 +0000  dockes    (436530279a09)
+
+	* src/utils/conftree.h:
+	comment
+
+2007-09-27 11:02 +0000  dockes    (a466c387c485)
+
+	* src/utils/conftree.cpp, src/utils/conftree.h:
+	avoid adding unneeded entries in confstack. fix erase-add resulting
+	in duplicate
+
+2007-09-26 12:16 +0000  dockes    (8e1e4edb4f4a)
+
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/main.cpp, src/qtgui/confgui/trconf.pro: new file.
+	* src/qtgui/confgui/confgui.cpp, src/qtgui/confgui/confgui.h,
+	src/qtgui/confgui/main.cpp, src/qtgui/confgui/trconf.pro:
+	*** empty log message ***
+
+2007-09-22 08:51 +0000  dockes    (8072f3278663)
+
+	* src/common/textsplit.cpp, src/utils/utf8iter.h:
+	include assert.h when needed
+
+2007-09-21 16:45 +0000  dockes    (d85479652341)
+
+	* src/INSTALL, src/README, src/VERSION, src/doc/user/usermanual.sgml,
+	src/qtgui/recoll.pro.in:
+	*** empty log message ***
+
+2007-09-20 12:22 +0000  dockes    (28a9c536ebba)
+
+	* src/common/textsplit.cpp:
+	logs
+
+2007-09-20 08:45 +0000  dockes    (415256bd7508)
+
+	* src/common/textsplit.cpp, src/common/textsplit.h,
+	src/utils/utf8iter.h:
+	initial cjk support
+
+2007-09-20 08:43 +0000  dockes    (66200ff61f31)
+
+	* src/rcldb/searchdata.cpp:
+	comments,formatting
+
+2007-09-20 08:42 +0000  dockes    (750b59dea1e9)
+
+	* src/qtgui/rclmain_w.cpp:
+	restore cursor if cant start query
+
+2007-09-18 20:35 +0000  dockes    (1d01904f2b55)
+
+	* src/common/textsplit.cpp, src/common/textsplit.h:
+	use m_ prefix for members
+
+2007-09-18 20:34 +0000  dockes    (49381b7f40f6)
+
+	* src/qt4gui/recoll.pro.in:
+	add recoll_xx.ts
+
+2007-09-18 07:01 +0000  dockes    (7dea06d57ada)
+
+	* src/qtgui/i18n/recoll_it.ts:
+	changes by Giovanni Cannizzaro
+
+2007-09-11 08:23 +0000  dockes    (615a70a64b94 [RECOLL_1_9_0])
+
+	* src/desktop/recoll-searchgui.desktop:
+	desktop file corrected as per Kartik Mistry patch
+
+2007-09-10 05:44 +0000  dockes    (78b0c9bd47bb)
+
+	* src/qtgui/i18n/recoll_fr.ts:
+	long menu labels cause pbs at least on macosx
+
+2007-09-08 17:26 +0000  dockes    (ef2964b2e49e)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_uk.ts:
+	*** empty log message ***
+
+2007-09-08 17:25 +0000  dockes    (000b2b01844d)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h,
+	src/qtgui/preview_w.cpp, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp:
+	change hghlight text size limit to configurable value
+
+2007-09-08 17:21 +0000  dockes    (c0ab1e961f0a)
+
+	* src/qtgui/viewaction_w.cpp:
+	added missing space in string
+
+2007-09-08 17:21 +0000  dockes    (f70ce9c4c753)
+
+	* src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp:
+	renamed preferencesQuery_PrefsAction to queryPrefsAction
+
+2007-09-08 17:19 +0000  dockes    (17eefeb77500 [RECOLL_1_9_1cjk2, RECOLL_1_9_1cjk1])
+
+	* src/qtgui/plaintorich.cpp:
+	comment
+
+2007-09-08 09:44 +0000  dockes    (8aabe9bc2d85)
+
+	* src/utils/readfile.cpp:
+	small pb in solaris fix
+
+2007-09-08 08:07 +0000  dockes    (4b862559adbb)
+
+	* src/mk/SunOS, src/utils/pathut.cpp, src/utils/readfile.cpp:
+	SunOS 2.8 fixes
+
+2007-09-07 14:58 +0000  dockes    (f0b17af1f5d7)
+
+	* src/configure, src/configure.ac:
+	always add lz to lxapian
+
+2007-09-07 12:39 +0000  dockes    (b10ac30fe130)
+
+	* website/CHANGES.txt:
+	*** empty log message ***
+
+2007-09-07 08:05 +0000  dockes    (f031116372e8)
+
+	* src/rcldb/rcldb.cpp:
+	improve purge error message printing
+
+2007-09-07 08:04 +0000  dockes    (276b259f9ec6)
+
+	* src/qtgui/i18n/recoll_it.ts:
+	new 1.9 translation by C. Rigamont
+
+2007-09-07 08:04 +0000  dockes    (450e1342467c)
+
+	* src/sampleconf/mimemap:
+	fix wordperfect spurious extensions
+
+2007-09-07 08:03 +0000  dockes    (624a100107be [RECOLL_1_9_1cjk])
+
+	* website/BUGS.txt:
+	update xapian near to 1.0.2
+
+2007-09-07 08:03 +0000  dockes    (a0d360caf71e)
+
+	* website/copydocs:
+	to_mac
+
+2007-09-01 19:12 +0000  dockes    (3ebdb5af664f)
+
+	* src/qt4gui/recoll.pro.in, src/qtgui/i18n/recoll_de.ts,
+	src/qtgui/recoll.pro.in:
+	*** empty log message ***
+
+2007-08-31 09:04 +0000  dockes    (32533d0d11d0)
+
+	* src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h:
+	pressing CR in advsearch would run query twice because of start
+	autodefault
+
+2007-08-31 07:23 +0000  dockes    (bb17fa4cfaca)
+
+	* src/qtgui/images/d_firstpage.png, src/qtgui/images/firstpage.png:
+	new file.
+	* src/qtgui/images/d_firstpage.png, src/qtgui/images/firstpage.png:
+	*** empty log message ***
+
+2007-08-30 10:11 +0000  dockes    (c75b5f42b33d)
+
+	* src/INSTALL, src/README, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_uk.ts:
+	*** empty log message ***
+
+2007-08-30 10:00 +0000  dockes    (7c4ccceae2a7)
+
+	* website/BUGS.txt, website/CHANGES.txt, website/download.html,
+	website/features.html:
+	*** empty log message ***
+
+2007-08-30 09:01 +0000  dockes    (687cad7b46de)
+
+	* src/doc/user/usermanual.sgml, src/index/indexer.cpp,
+	src/index/indexer.h, src/index/rclmonrcv.cpp,
+	src/sampleconf/recoll.conf.in, src/utils/fstreewalk.cpp,
+	src/utils/fstreewalk.h:
+	add followLinks option
+
+2007-08-30 08:39 +0000  dockes    (6af3a2216074)
+
+	* src/doc/user/usermanual.sgml:
+	add followLinks option
+
+2007-08-28 08:12 +0000  dockes    (6385c6a9c88e)
+
+	* src/index/indexer.cpp:
+	allow symlinks in topdirs
+
+2007-08-28 08:08 +0000  dockes    (a3df89087437)
+
+	* src/utils/fstreewalk.cpp, src/utils/fstreewalk.h:
+	follow top (entry) symlinks even if nofollow is set
+
+2007-08-28 08:07 +0000  dockes    (19ac4f90b7e7)
+
+	* src/internfile/internfile.cpp:
+	error msg
+
+2007-08-26 13:52 +0000  dockes    (fa08f95a4d95)
+
+	* src/doc/user/usermanual.sgml:
+	add wordperfect ext app info
+
+2007-08-26 13:34 +0000  dockes    (ac877cc2e3ad)
+
+	* src/filters/rclwpd: new file.
+	* src/filters/rclwpd, src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/sampleconf/mimeview:
+	added wordperfect support
+
+2007-08-26 13:34 +0000  dockes    (7472abcdbc4a)
+
+	* src/sampleconf/recoll.conf.in:
+	add commented entries for daem*
+
+2007-08-07 08:45 +0000  dockes    (ad6dad566902)
+
+	* src/qtgui/rclmain_w.cpp:
+	*** empty log message ***
+
+2007-08-07 08:42 +0000  dockes    (2040417c73e4)
+
+	* src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp:
+	qt3 adjustments
+
+2007-08-07 08:26 +0000  dockes    (55c7dc79c190)
+
+	* src/aspell/rclaspell.cpp, src/sampleconf/recoll.conf.in:
+	*** empty log message ***
+
+2007-08-05 05:55 +0000  dockes    (3acd192c01d1)
+
+	* src/utils/conftree.h:
+	comments
+
+2007-08-05 05:49 +0000  dockes    (afee970ae166)
+
+	* src/utils/conftree.h:
+	*** empty log message ***
+
+2007-08-04 07:22 +0000  dockes    (9afb2050f462)
+
+	* src/utils/conftree.cpp, src/utils/conftree.h:
+	Allow updates in confstacks
+
+2007-08-03 07:50 +0000  dockes    (28ae2e572dcf)
+
+	* src/utils/Makefile, src/utils/conftree.cpp, src/utils/conftree.h:
+	have conftree preserve comments and ordering
+
+2007-08-02 06:33 +0000  dockes    (4da8b2dbcaa6)
+
+	* src/qt4gui/recoll.qrc, src/qtgui/rclmain.ui,
+	src/qtgui/rclmain_w.cpp, src/qtgui/recoll.pro.in,
+	src/qtgui/reslist.cpp, src/qtgui/reslist.h:
+	added gotofirstpage action
+
+2007-08-01 10:04 +0000  dockes    (c91831fab8a0)
+
+	* src/qtgui/guiutils.h, src/qtgui/rclmain_w.cpp,
+	src/qtgui/rclmain_w.h, src/qtgui/ssearch_w.cpp,
+	src/qtgui/uiprefs_w.cpp, src/qtgui/uiprefs_w.h,
+	src/rcldb/stemdb.cpp, src/rcldb/stemdb.h:
+	Allow stem expansion for several (all) stemming languages at a time
+
+2007-08-01 07:55 +0000  dockes    (5d13d87e6e14)
+
+	* src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp,
+	src/qtgui/rclmain_w.h, src/qtgui/uiprefs_w.cpp,
+	src/qtgui/uiprefs_w.h:
+	allow setting stemlang from prefs menu
+
+2007-07-20 14:50 +0000  dockes    (573069870fd4)
+
+	* src/configure, src/configure.ac:
+	check for uic3 during qt4 configure
+
+2007-07-20 14:43 +0000  dockes    (32ae47904cca)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h:
+	preview: dont search for anchors if we have none
+
+2007-07-20 14:32 +0000  dockes    (eac614c9a725)
+
+	* src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp, src/qtgui/reslist.h:
+	*** empty log message ***
+
+2007-07-20 11:44 +0000  dockes    (6133f68f886f)
+
+	* src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h:
+	factorize previewNext/Prev
+
+2007-07-20 11:38 +0000  dockes    (4dfc3942351a)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h,
+	src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h:
+	more preview window interface cleanup
+
+2007-07-20 10:55 +0000  dockes    (d57bd5e6cb2d)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h,
+	src/qtgui/rclmain_w.cpp:
+	cleaned up preview window interface
+
+2007-07-14 16:53 +0000  dockes    (35087158d61f)
+
+	* src/common/autoconfig.h.in, src/configure, src/configure.ac,
+	src/mk/AIX, src/mk/Darwin, src/mk/Linux, src/mk/SunOS,
+	src/utils/execmd.cpp:
+	handle putenv arg constness in configure
+
+2007-07-13 10:24 +0000  dockes    (98774298901d)
+
+	* src/INSTALL, src/README, src/doc/man/recoll.conf.5,
+	src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_it.ts,
+	src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts,
+	website/BUGS.txt, website/CHANGES.txt, website/download.html:
+	*** empty log message ***
+
+2007-07-13 07:17 +0000  dockes    (d2c5a6098bbd)
+
+	* src/doc/user/docbook.css, src/doc/user/usermanual.sgml:
+	1.9 changes
+
+2007-07-13 07:10 +0000  dockes    (2569115962c0)
+
+	* src/qtgui/uiprefs.ui:
+	msg
+
+2007-07-13 07:00 +0000  dockes    (2bd0371b8e12)
+
+	* src/qtgui/plaintorich.cpp:
+	adjust term beacon for better finding ?
+
+2007-07-13 06:31 +0000  dockes    (f7d41e95166c)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h,
+	src/qtgui/rclmain_w.cpp:
+	better handle preview close during load
+
+2007-07-12 17:28 +0000  dockes    (5b6f1204d077)
+
+	* src/rcldb/rcldb.cpp:
+	*** empty log message ***
+
+2007-07-12 17:13 +0000  dockes    (9345d3db5ff2)
+
+	* src/filters/rclpdf:
+	dont use anchored regexps for stripping whitespace, ubuntu mawk
+	ignores the anchor
+
+2007-07-12 13:41 +0000  dockes    (1fb4e582fe5b)
+
+	* src/utils/cancelcheck.h:
+	*** empty log message ***
+
+2007-07-12 10:53 +0000  dockes    (eb352f6c17ae)
+
+	* src/index/rclmonrcv.cpp, src/utils/fstreewalk.cpp,
+	src/utils/fstreewalk.h:
+	monitor: dont add watch on created dir if in skippedXXX
+
+2007-07-12 10:13 +0000  dockes    (d55862505674)
+
+	* src/ChangeLog, src/qtgui/guiutils.cpp, src/qtgui/guiutils.h,
+	src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp:
+	fix v1.8 default format string if we find it
+
+2007-07-12 08:34 +0000  dockes    (b69b14b67cd2)
+
+	* src/rcldb/rcldb.cpp:
+	use uniform code for Xapian exception catching + catch a few more,
+	esp. databaseModified cases
+
+2007-07-12 08:23 +0000  dockes    (ffe9a12f9237)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/reslist.cpp,
+	src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp:
+	icon now part of paragraph format
+
+2007-07-11 10:05 +0000  dockes    (a8d4da32f304)
+
+	* src/qtgui/reslist.cpp:
+	dont create popup in irrelevant areas
+
+2007-07-10 09:24 +0000  dockes    (993776d69bab)
+
+	* src/sampleconf/recoll.conf.in:
+	idxflushnb default 10
+
+2007-07-10 09:23 +0000  dockes    (e800d4e4d1de)
+
+	* src/doc/man/recollindex.1, src/index/indexer.cpp,
+	src/index/indexer.h, src/index/recollindex.cpp, src/rcldb/rcldb.cpp,
+	src/rcldb/rcldb.h:
+	recollindex -l
+
+2007-07-10 05:44 +0000  dockes    (7247df0336ab)
+
+	* src/sampleconf/recoll.conf.in:
+	*** empty log message ***
+
+2007-07-09 17:21 +0000  dockes    (ef8eddb1b94a)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-07-01 06:52 +0000  dockes    (03cb707d9122)
+
+	* src/filters/rclid3: new file.
+	* src/filters/rclid3, src/sampleconf/mimeconf, src/sampleconf/mimemap,
+	src/sampleconf/mimeview:
+	audio tags support improvement: flac+ogg. use FORPREVIEW
+
+2007-06-26 17:07 +0000  dockes    (ec5b66db8aea)
+
+	* src/qtgui/i18n/recoll_de.ts, src/qtgui/i18n/recoll_fr.ts,
+	src/qtgui/i18n/recoll_it.ts, src/qtgui/i18n/recoll_ru.ts,
+	src/qtgui/i18n/recoll_uk.ts:
+	*** empty log message ***
+
+2007-06-26 16:58 +0000  dockes    (34658791397a)
+
+	* *** empty log message ***
+
+2007-06-26 16:58 +0000  dockes    (26a811724423)
+
+	* packaging/rpm/recollCooker.spec, website/fr/features.html,
+	website/mario.png, website/perfs.html, website/smile.png: new file.
+	* packaging/rpm/recollCooker.spec, src/doc/user/usermanual.sgml,
+	website/BUGS.txt, website/CHANGES.txt, website/credits.html,
+	website/doc.html, website/download.html, website/features.html,
+	website/fr/features.html, website/index.html.en,
+	website/index.html.fr, website/mario.png, website/perfs.html,
+	website/rclidxfmt.html, website/smile.png, website/styles/style.css:
+	*** empty log message ***
+
+2007-06-26 16:09 +0000  dockes    (d4a3058d613e)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h:
+	comments
+
+2007-06-26 16:08 +0000  dockes    (7115d37ab33d)
+
+	* src/configure, src/configure.ac, src/mk/Darwin,
+	src/qtgui/reslist.cpp, src/recollinstall.in:
+	get things to sort of compile / install on macosx
+
+2007-06-26 15:38 +0000  dockes    (02621fd62ca0)
+
+	* src/ChangeLog: new file.
+	* src/ChangeLog:
+	*** empty log message ***
+
+2007-06-26 11:59 +0000  dockes    (51061217635d)
+
+	* src/excludefile, src/makesrcdist.sh:
+	small mkdist fixes
+
+2007-06-25 18:31 +0000  dockes    (5f173fcd227f)
+
+	* src/INSTALL, src/README:
+	*** empty log message ***
+
+2007-06-25 10:25 +0000  dockes    (048658cd678b)
+
+	* src/rcldb/rcldb.cpp:
+	simplified and hopefully improved abstract generation
+
+2007-06-25 10:13 +0000  dockes    (14ecb9d719e7)
+
+	* src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h,
+	src/qtgui/reslist.cpp:
+	plaintorich: only setup beacons if needed
+
+2007-06-22 06:14 +0000  dockes    (0584daa67e7c)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/query/wasatorcl.cpp, src/rcldb/rcldb.cpp,
+	src/rcldb/searchdata.cpp, src/sampleconf/mimeconf:
+	handle mime: and ext: in qlang
+
+2007-06-21 11:56 +0000  dockes    (e5102468f77e)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	slightly reorganized Db::close/~Db code
+
+2007-06-21 11:14 +0000  dockes    (e360a50fdaa5)
+
+	* src/common/rclconfig.cpp:
+	beware of unsigneds diffs when comparing to 0 !
+
+2007-06-20 13:16 +0000  dockes    (e515c5541bd4)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/rclmain.ui,
+	src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h,
+	src/query/history.cpp, src/query/history.h:
+	menu entry to reset document history
+
+2007-06-19 16:19 +0000  dockes    (675d2fed7a32)
+
+	* src/qtgui/rclmain_w.cpp, src/qtgui/sort_w.cpp:
+	fix sort state restoration which didnt work
+
+2007-06-19 15:48 +0000  dockes    (36fa1c12d616)
+
+	* src/rcldb/rcldb.cpp:
+	try to better print delete exception messages
+
+2007-06-19 15:47 +0000  dockes    (304862edc545)
+
+	* src/query/xadump.cpp:
+	option X
+
+2007-06-19 15:47 +0000  dockes    (23a728d3cdd7)
+
+	* src/query/recollq.cpp:
+	compile
+
+2007-06-19 12:27 +0000  dockes    (5ee1b5e9168e)
+
+	* src/internfile/internfile.cpp, src/internfile/internfile.h:
+	get test driver to compile
+
+2007-06-19 12:17 +0000  dockes    (8974a52d2baa)
+
+	* src/internfile/htmlparse.h, src/internfile/mh_html.cpp,
+	src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h:
+	renamed the html charset values to stick to omega usage
+
+2007-06-19 10:28 +0000  dockes    (e66870aeadb6)
+
+	* src/internfile/htmlparse.cpp, src/internfile/htmlparse.h,
+	src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h:
+	updated html parser to omega 1.0.1 + moved entity decoder to
+	myhtmlparse to minimize amount of diffs
+
+2007-06-19 08:36 +0000  dockes    (e2533617731d)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/internfile/internfile.cpp, src/internfile/mh_html.cpp,
+	src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h,
+	src/qtgui/preview_w.cpp, src/qtgui/reslist.cpp, src/query/docseq.h,
+	src/query/docseqdb.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h,
+	src/rcldb/rcldoc.h, src/rcldb/searchdata.cpp,
+	src/sampleconf/mimeconf:
+	added open-ended field name handling
+
+2007-06-19 07:52 +0000  dockes    (73ccb629ad66)
+
+	* src/common/autoconfig.h.in, src/configure, src/configure.ac,
+	src/index/csguess.cpp, src/utils/transcode.cpp:
+	added test for iconv parm 2 constness
+
+2007-06-18 13:04 +0000  dockes    (bb1262134776)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/rcldb/searchdata.cpp,
+	src/sampleconf/mimeconf:
+	implement dynamic field name to prefix translation, query side
+
+2007-06-15 11:41 +0000  dockes    (5eccc05a2ae7)
+
+	* src/filters/rclabw, src/filters/rclsoff, src/sampleconf/mimeconf,
+	src/sampleconf/mimemap, src/sampleconf/mimeview:
+	added abiword + some oofice cleanup
+
+2007-06-15 09:25 +0000  dockes    (f5b1666a10e6)
+
+	* src/filters/rclabw: new file.
+	* src/filters/rclabw:
+	*** empty log message ***
+
+2007-06-14 08:20 +0000  dockes    (dc698e7b3c84)
+
+	* src/rcldb/rcldb.cpp:
+	removed the "weak" date, not used and not in omega anymore
+
+2007-06-13 17:03 +0000  dockes    (3d509dbc275c)
+
+	* src/qtgui/reslist.cpp:
+	textedit autext sometimes switched to plain at eol?
+
+2007-06-12 13:31 +0000  dockes    (793abec1cee4)
+
+	* src/qtgui/plaintorich.cpp, src/qtgui/preview_w.cpp,
+	src/qtgui/preview_w.h, src/qtgui/rclmain_w.cpp,
+	src/qtgui/reslist.cpp, src/qtgui/reslist.h:
+	somewhat fixed qt4 selection problems
+
+2007-06-12 10:33 +0000  dockes    (261ca6c11087)
+
+	* src/qtgui/ssearch_w.cpp:
+	adjust event handling for qt4, get esc-spc to work
+
+2007-06-12 10:32 +0000  dockes    (97c9f158e297)
+
+	* src/qtgui/plaintorich.cpp:
+	comments
+
+2007-06-12 08:50 +0000  dockes    (28d503078074)
+
+	* src/qtgui/rclmain_w.cpp:
+	*** empty log message ***
+
+2007-06-12 08:46 +0000  dockes    (d3f305e57522)
+
+	* src/query/recollq.cpp:
+	getMainConfig
+
+2007-06-11 08:33 +0000  dockes    (5542196b466a)
+
+	* src/qtgui/rclmain_w.cpp:
+	set busy cursor while search runs
+
+2007-06-11 05:51 +0000  dockes    (bf5090aed2fd)
+
+	* src/Makefile.in:
+	*** empty log message ***
+
+2007-06-11 05:49 +0000  dockes    (9327b736d7ff)
+
+	* src/Makefile.in, src/qt4gui/uifrom3:
+	*** empty log message ***
+
+2007-06-11 05:45 +0000  dockes    (cbb602782461)
+
+	* src/desktop/recoll.png, src/desktop/recoll.xcf: new file.
+	* src/desktop/recoll-searchgui.png, src/desktop/recoll-searchgui.xcf:
+	deleted file.
+	* src/desktop/recoll-searchgui.desktop, src/desktop/recoll-
+	searchgui.png, src/desktop/recoll-searchgui.xcf,
+	src/desktop/recoll.png, src/desktop/recoll.xcf,
+	src/makestaticdist.sh, src/recollinstall.in:
+	icon named recoll.png
+
+2007-06-11 05:38 +0000  dockes    (9268fba2c65c)
+
+	* src/index/indexer.cpp:
+	changed level of missing helpers message
+
+2007-06-10 12:26 +0000  dockes    (f5b6dcd36de0)
+
+	* src/mk/OpenBSD: new file.
+	* src/mk/OpenBSD:
+	*** empty log message ***
+
+2007-06-08 16:47 +0000  dockes    (96f2807957dd)
+
+	* src/common/rclconfig.h, src/index/indexer.cpp,
+	src/index/recollindex.cpp, src/mk/FreeBSD, src/qtgui/main.cpp,
+	src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	added file system usage check
+
+2007-06-08 16:46 +0000  dockes    (0c11deb1a678)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-06-08 16:46 +0000  dockes    (4f2c0d45e15b)
+
+	* src/desktop/recoll-searchgui.desktop, src/desktop/recoll-
+	searchgui.png, src/desktop/recoll-searchgui.xcf:
+	new icon
+
+2007-06-08 16:05 +0000  dockes    (6835d2fbb56c)
+
+	* src/rcldb/rcldb.h:
+	comments and ordering
+
+2007-06-08 15:30 +0000  dockes    (aeffac1f3f2d)
+
+	* src/utils/pathut.cpp, src/utils/pathut.h:
+	fsocc
+
+2007-06-08 14:01 +0000  dockes    (7c47d8aae3cc)
+
+	* src/filters/rclkwd: new file.
+	* src/filters/rclkwd, src/sampleconf/mimeview:
+	kword support
+
+2007-06-08 13:51 +0000  dockes    (53a1012a564f)
+
+	* src/filters/rcldjvu, src/filters/rcldoc, src/filters/rcldvi,
+	src/filters/rclgaim, src/filters/rcljpeg, src/filters/rcllyx,
+	src/filters/rclman, src/filters/rclmedia, src/filters/rclpdf,
+	src/filters/rclppt, src/filters/rclps, src/filters/rclrtf,
+	src/filters/rclscribus, src/filters/rclsoff, src/filters/rclxls,
+	src/filters/recfiltcommon, src/sampleconf/mimeconf,
+	src/sampleconf/mimemap:
+	kword support
+
+2007-06-08 12:33 +0000  dockes    (a56bc180327b)
+
+	* src/query/recollq.cpp:
+	added stopfile parameter
+
+2007-06-08 12:32 +0000  dockes    (7b3710f69cd0)
+
+	* src/filters/rcljpeg: new file.
+	* src/filters/rcljpeg, src/sampleconf/mimeconf:
+	rcljpeg
+
+2007-06-08 12:31 +0000  dockes    (0b20447d105e)
+
+	* src/common/rclconfig.cpp:
+	improve message about bad config
+
+2007-06-02 08:30 +0000  dockes    (dfa3e5682035)
+
+	* src/rcldb/Makefile, src/rcldb/stoplist.cpp, src/rcldb/stoplist.h:
+	new file.
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/index/indexer.cpp, src/lib/Makefile, src/lib/mkMake,
+	src/qtgui/main.cpp, src/rcldb/Makefile, src/rcldb/rcldb.cpp,
+	src/rcldb/rcldb.h, src/rcldb/searchdata.cpp, src/rcldb/stoplist.cpp,
+	src/rcldb/stoplist.h, src/utils/readfile.cpp, src/utils/readfile.h:
+	minimal experimental stopword functionality
+
+2007-06-01 05:44 +0000  dockes    (b9f3d4b61852)
+
+	* src/qtgui/preview_w.cpp:
+	preview: space and backspace bound to pgdown/pgup
+
+2007-05-30 12:31 +0000  dockes    (105744d9f609)
+
+	* src/index/indexer.cpp, src/internfile/mh_html.cpp,
+	src/internfile/mh_html.h, src/qtgui/plaintorich.cpp,
+	src/query/xadump.cpp, src/utils/transcode.cpp:
+	improve transcode error printing
+
+2007-05-30 12:30 +0000  dockes    (d4fa167018eb)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-05-30 12:30 +0000  dockes    (6027fd8afb12)
+
+	* src/rcldb/rcldb.cpp:
+	improve add_document error message printing
+
+2007-05-30 12:29 +0000  dockes    (234dc300c26b)
+
+	* src/qtgui/reslist.cpp, src/qtgui/reslist.h:
+	escape possibly not html-safe text
+
+2007-05-24 09:35 +0000  dockes    (ec684a070c43)
+
+	* src/rcldb/stemdb.cpp:
+	comment
+
+2007-05-24 07:48 +0000  dockes    (deedeff93a6e)
+
+	* src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/sort_w.cpp,
+	src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp:
+	optionally remember sorting state between invocations
+
+2007-05-24 07:47 +0000  dockes    (e6bb3bced970)
+
+	* src/configure, src/configure.ac, src/qt4gui/uifrom3:
+	make uifrom3 a makefile
+
+2007-05-23 09:19 +0000  dockes    (4f9ab7436818)
+
+	* src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h,
+	src/qtgui/preview.ui, src/qtgui/preview_w.cpp,
+	src/qtgui/preview_w.h:
+	in preview window if search line empty look for search terms
+
+2007-05-23 08:29 +0000  dockes    (644c4e20106b)
+
+	* src/internfile/internfile.cpp:
+	*** empty log message ***
+
+2007-05-23 08:28 +0000  dockes    (1927522b5826)
+
+	* src/common/rclinit.cpp, src/utils/execmd.cpp:
+	cant block sigcld globally cause qt needs it
+
+2007-05-22 08:33 +0000  dockes    (2c0d94ae674a)
+
+	* src/internfile/internfile.cpp, src/internfile/mh_html.cpp:
+	let email attachments inherit date and author from parent message
+
+2007-05-22 07:40 +0000  dockes    (fc644359e793)
+
+	* src/index/indexer.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	implemented adjustable indexing flush threshold
+
+2007-05-21 14:26 +0000  dockes    (d70d7b6988f0)
+
+	* src/qtgui/rclmain_w.cpp:
+	reopen db for each search during query
+
+2007-05-21 13:30 +0000  dockes    (7f65a405e028)
+
+	* src/common/rclinit.cpp, src/common/rclinit.h,
+	src/index/rclmonprc.cpp, src/index/rclmonrcv.cpp,
+	src/index/recollindex.cpp, src/qtgui/idxthread.cpp,
+	src/qtgui/main.cpp, src/rcldb/rcldb.cpp, src/utils/execmd.cpp,
+	src/utils/execmd.h:
+	make sure signals are only handled by the main thread. Fix bus error
+	on rclmon exit (double delete)
+
+2007-05-21 12:03 +0000  dockes    (7af2d0c361be)
+
+	* src/utils/smallut.h:
+	*** empty log message ***
+
+2007-05-21 09:00 +0000  dockes    (9ee50650bd6f)
+
+	* src/index/indexer.cpp, src/index/rclmonprc.cpp:
+	better handle aspell errors: dont exit from monitor on aux db
+	creation failure, and dont retry forever
+
+2007-05-21 07:24 +0000  dockes    (53f18ed9c2f8)
+
+	* src/VERSION, src/configure, src/configure.ac,
+	src/doc/user/usermanual.sgml, src/qt4gui/uifrom3,
+	src/sampleconf/recoll.conf.in:
+	removed --enable-qt4, rely on qmake output instead
+
+2007-05-21 06:46 +0000  dockes    (d6267bb0e30f)
+
+	* website/BUGS.txt, website/CHANGES.txt, website/devel.html,
+	website/doc.html, website/download.html, website/index.html.en,
+	website/index.html.fr:
+	*** empty log message ***
+
+2007-05-19 07:32 +0000  dockes    (cbbd4158e0a8)
+
+	* website/doc.html: new file.
+	* website/doc.html:
+	*** empty log message ***
+
+2007-05-18 12:05 +0000  dockes    (75610b300ee1 [RECOLL_1_8_2])
+
+	* src/recollinstall.in:
+	qt4 install glitches
+
+2007-05-18 11:16 +0000  dockes    (c9a0be6210be)
+
+	* src/README:
+	*** empty log message ***
+
+2007-05-18 07:49 +0000  dockes    (eaf500145dd5)
+
+	* src/VERSION:
+	1.8.2
+
+2007-05-18 07:49 +0000  dockes    (fc64434e87c0)
+
+	* packaging/debian/changelog, tests/runtests.sh, website/BUGS.txt,
+	website/CHANGES.txt, website/download.html:
+	*** empty log message ***
+
+2007-05-18 07:41 +0000  dockes    (6bec0784b8fd)
+
+	* src/doc/user/usermanual.sgml:
+	doc fix
+
+2007-05-18 07:41 +0000  dockes    (022d354a0a2f)
+
+	* src/sampleconf/recoll.conf.in:
+	add .beagle to stops
+
+2007-05-18 07:41 +0000  dockes    (451a13663a00)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/stemdb.cpp:
+	change method name deprecated in xap 1.0
+
+2007-05-18 07:40 +0000  dockes    (54bfc83a6186)
+
+	* src/query/Makefile:
+	*** empty log message ***
+
+2007-05-18 07:40 +0000  dockes    (ef599af3e2e7)
+
+	* src/configure.ac:
+	use $libdir instead of /usr/lib (64bits machs)
+
+2007-05-16 11:28 +0000  dockes    (2cced3d0aa32)
+
+	* src/qtgui/i18n/recoll_it.ts:
+	*** empty log message ***
+
+2007-04-22 07:36 +0000  dockes    (8628fca949e7)
+
+	* src/qtgui/i18n/recoll_de.ts: new file.
+	* src/qtgui/i18n/recoll_de.ts:
+	*** empty log message ***
+
+2007-03-28 19:30 +0000  dockes    (51c5bdb227cd)
+
+	* website/BUGS.txt, website/download.html, website/index.html.en,
+	website/index.html.fr:
+	*** empty log message ***
+
+2007-03-08 12:24 +0000  dockes    (0efcbb1564f2)
+
+	* packaging/FreeBSD/recoll/Makefile,
+	packaging/FreeBSD/recoll/distinfo:
+	1.8.1
+
+2007-03-08 12:04 +0000  dockes    (813c82bcc951 [RECOLL_1_8_1])
+
+	* packaging/FreeBSD/recoll/Makefile,
+	packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg-
+	plist, packaging/debian/changelog, packaging/rpm/recoll.spec,
+	packaging/rpm/recollfedora.spec, packaging/rpm/recollmdk.spec,
+	src/VERSION, src/makestaticdist.sh, website/BUGS.txt,
+	website/CHANGES.txt, website/download.html:
+	version 1.8.1 ?
+
+2007-02-20 09:30 +0000  dockes    (817cdab71c1c [RECOLL_1_8_0])
+
+	* src/recollinstall.in:
+	go back to not using xdg
+
+2007-02-20 07:57 +0000  dockes    (d1f1b31e4a58)
+
+	* website/index.html.en, website/index.html.fr: new file.
+	* website/index.html: deleted file.
+	* packaging/debian/changelog, website/BUGS.txt, website/CHANGES.txt,
+	website/credits.html, website/download.html, website/features.html,
+	website/index.html, website/index.html.en, website/index.html.fr:
+	*** empty log message ***
+
+2007-02-20 07:43 +0000  dockes    (1f4b07f4cb62)
+
+	* src/qtgui/recoll.pro.in:
+	*** empty log message ***
+
+2007-02-20 07:33 +0000  dockes    (dc922603c639)
+
+	* src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_it.ts,
+	src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts:
+	*** empty log message ***
+
+2007-02-20 07:19 +0000  dockes    (d6b63dc759cd)
+
+	* src/INSTALL, src/README:
+	*** empty log message ***
+
+2007-02-19 18:15 +0000  dockes    (a1331ff143f7)
+
+	* src/qtgui/preview_w.cpp, src/qtgui/preview_w.h:
+	make shift-arrow in preview work with qt4 and avoid reentrancy while
+	loading a file
+
+2007-02-19 18:14 +0000  dockes    (66c79bcff30e)
+
+	* src/utils/execmd.cpp:
+	block sigcld, it sometimes causes eintrs during the select() call
+
+2007-02-19 18:05 +0000  dockes    (db9e1830a040)
+
+	* src/internfile/internfile.cpp:
+	check file name not empty on return from uncomp exec
+
+2007-02-19 16:28 +0000  dockes    (19982a948347)
+
+	* src/qtgui/spell_w.cpp:
+	stemming language choice was not observed in term explorer
+
+2007-02-19 16:10 +0000  dockes    (26815f6c7ce0)
+
+	* src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h:
+	cleanup ign file types handling/saving
+
+2007-02-14 15:02 +0000  dockes    (714300cb7780)
+
+	* tests/empty/empty.sh, tests/empty/empty.txt, tests/html/html.sh,
+	tests/html/html.txt, tests/images/images.sh,
+	tests/images/images.txt, tests/koi8r/koi8r.sh,
+	tests/koi8r/koi8r.txt, tests/mail/mail.sh, tests/mail/mail.txt,
+	tests/notypes/notypes.sh, tests/notypes/notypes.txt,
+	tests/rfc2231/rfc2231.sh, tests/rfc2231/rfc2231.txt,
+	tests/special/special.sh, tests/special/special.txt,
+	tests/txt/txt.sh, tests/txt/txt.txt, tests/utf8/utf8.sh,
+	tests/utf8/utf8.txt: new file.
+	* tests/empty/empty.sh, tests/empty/empty.txt, tests/html/html.sh,
+	tests/html/html.txt, tests/images/images.sh,
+	tests/images/images.txt, tests/koi8r/koi8r.sh,
+	tests/koi8r/koi8r.txt, tests/lyx/lyx.txt, tests/mail/mail.sh,
+	tests/mail/mail.txt, tests/notypes/notypes.sh,
+	tests/notypes/notypes.txt, tests/rfc2231/rfc2231.sh,
+	tests/rfc2231/rfc2231.txt, tests/special/special.sh,
+	tests/special/special.txt, tests/txt/txt.sh, tests/txt/txt.txt,
+	tests/utf8/utf8.sh, tests/utf8/utf8.txt:
+	*** empty log message ***
+
+2007-02-14 11:52 +0000  dockes    (b3f3859ce5e5)
+
+	* tests/boolean/boolean.sh, tests/boolean/boolean.txt,
+	tests/delete/delete.sh, tests/delete/delete.txt,
+	tests/dirwithblanks/dirwithblanks.sh,
+	tests/dirwithblanks/dirwithblanks.txt, tests/djvu/djvu.sh,
+	tests/djvu/djvu.txt, tests/dvi/dvi.sh, tests/dvi/dvi.txt,
+	tests/lyx/lyx.sh, tests/lyx/lyx.txt, tests/media/media.sh,
+	tests/media/media.txt, tests/msword/msword.sh,
+	tests/msword/msword.txt, tests/ooff/ooff.sh, tests/ooff/ooff.txt,
+	tests/pdf/pdf.sh, tests/pdf/pdf.txt, tests/postscript/postscript.sh,
+	tests/postscript/postscript.txt, tests/ppt/ppt.sh,
+	tests/ppt/ppt.txt, tests/rtf/rtf.sh, tests/rtf/rtf.txt,
+	tests/scribus/scribus.sh, tests/scribus/scribus.txt,
+	tests/xls/xls.sh, tests/xls/xls.txt: new file.
+	* tests/Maildir1/Maildir1.txt, tests/andor/andor.txt,
+	tests/badsuffs1/badsuffs1.txt, tests/boolean/boolean.sh,
+	tests/boolean/boolean.txt, tests/delete/delete.sh,
+	tests/delete/delete.txt, tests/dirwithblanks/dirwithblanks.sh,
+	tests/dirwithblanks/dirwithblanks.txt, tests/djvu/djvu.sh,
+	tests/djvu/djvu.txt, tests/dvi/dvi.sh, tests/dvi/dvi.txt,
+	tests/lyx/lyx.sh, tests/lyx/lyx.txt, tests/media/media.sh,
+	tests/media/media.txt, tests/msword/msword.sh,
+	tests/msword/msword.txt, tests/ooff/ooff.sh, tests/ooff/ooff.txt,
+	tests/pdf/pdf.sh, tests/pdf/pdf.txt, tests/postscript/postscript.sh,
+	tests/postscript/postscript.txt, tests/ppt/ppt.sh,
+	tests/ppt/ppt.txt, tests/rtf/rtf.sh, tests/rtf/rtf.txt,
+	tests/scribus/scribus.sh, tests/scribus/scribus.txt,
+	tests/shared.sh, tests/skipped/skipped.sh,
+	tests/skipped/skipped.txt, tests/xls/xls.sh, tests/xls/xls.txt:
+	*** empty log message ***
+
+2007-02-14 10:10 +0000  dockes    (04c3156fd4dd)
+
+	* src/doc/user/usermanual.sgml, src/makestaticdist.sh,
+	src/qtgui/guiutils.cpp, src/qtgui/guiutils.h,
+	src/qtgui/rclmain_w.cpp, src/qtgui/uiprefs.ui,
+	src/qtgui/uiprefs_w.cpp, src/recollinstall.in,
+	src/sampleconf/mimeview:
+	add user pref to use xdg-open for all document edits
+
+2007-02-14 10:09 +0000  dockes    (7886dd99d419)
+
+	* src/rcldb/rcldb.cpp:
+	during indexing use simple file name as title if this is empty. This
+	allows storing the sfn for subdocs for which the url sfn doesnt make
+	sense as title
+
+2007-02-14 10:08 +0000  dockes    (fb42e10e5a7b)
+
+	* src/query/recollq.cpp:
+	adjust format to help the test set scripts
+
+2007-02-14 08:54 +0000  dockes    (5e02666b38db)
+
+	* src/desktop/xdg-utils-1.0.1/scripts/xdg-open: new file.
+	* src/desktop/xdg-utils-1.0.1/scripts/xdg-open:
+	*** empty log message ***
+
+2007-02-14 08:16 +0000  dockes    (eb0fd52ef15a)
+
+	* tests/Maildir/Maildir.sh, tests/Maildir/Maildir.txt,
+	tests/Maildir1/Maildir1.sh, tests/Maildir1/Maildir1.txt,
+	tests/andor/andor.sh, tests/andor/andor.txt,
+	tests/badsuffs/badsuffs.sh, tests/badsuffs/badsuffs.txt,
+	tests/badsuffs1/badsuffs1.sh, tests/badsuffs1/badsuffs1.txt,
+	tests/runtests.sh, tests/shared.sh, tests/skipped/skipped.sh,
+	tests/skipped/skipped.txt: new file.
+	* tests/Maildir/Maildir.sh, tests/Maildir/Maildir.txt,
+	tests/Maildir1/Maildir1.sh, tests/Maildir1/Maildir1.txt,
+	tests/andor/andor.sh, tests/andor/andor.txt,
+	tests/badsuffs/badsuffs.sh, tests/badsuffs/badsuffs.txt,
+	tests/badsuffs1/badsuffs1.sh, tests/badsuffs1/badsuffs1.txt,
+	tests/runtests.sh, tests/shared.sh, tests/skipped/skipped.sh,
+	tests/skipped/skipped.txt:
+	*** empty log message ***
+
+2007-02-13 10:58 +0000  dockes    (19c29e100995)
+
+	* src/query/wasatorcl.cpp, src/rcldb/searchdata.cpp,
+	src/rcldb/searchdata.h:
+	propagate wasa nostem modifier
+
+2007-02-12 18:16 +0000  dockes    (bf3060f2e259)
+
+	* src/query/wasastringtoquery.cpp, src/query/wasastringtoquery.h:
+	add wasabi modifiers
+
+2007-02-12 18:14 +0000  dockes    (6ae625065d64)
+
+	* src/qtgui/guiutils.cpp:
+	dont set Helvetica as default font
+
+2007-02-08 17:05 +0000  dockes    (f23e18da0362)
+
+	* src/index/indexer.cpp, src/index/indexer.h,
+	src/internfile/internfile.cpp, src/internfile/internfile.h,
+	src/qtgui/preview_w.cpp, src/utils/smallut.cpp, src/utils/smallut.h:
+	improve handling of missing helpers messages
+
+2007-02-08 17:03 +0000  dockes    (f53e952b71cd)
+
+	* src/filters/rcldvi:
+	typos
+
+2007-02-08 12:25 +0000  dockes    (ba982598a66f)
+
+	* src/internfile/internfile.h, src/query/recollq.cpp:
+	clarify temp dir usage in internfile
+
+2007-02-08 09:03 +0000  dockes    (876ec27bd9c0)
+
+	* src/qtgui/reslist.cpp, src/qtgui/uiprefs_w.cpp,
+	src/qtgui/uiprefs_w.h:
+	qt4 compilation glitches
+
+2007-02-07 17:18 +0000  dockes    (2f05854b010a)
+
+	* src/filters/injectcommon.sh, src/filters/recfiltcommon: new file.
+	* src/filters/injectcommon.sh, src/filters/recfiltcommon:
+	*** empty log message ***
+
+2007-02-07 17:17 +0000  dockes    (39e4d9e07461)
+
+	* src/recoll.desktop, src/recoll.png, src/recoll.xcf: deleted file.
+	* src/recoll.desktop, src/recoll.png, src/recoll.xcf,
+	src/recollinstall.in:
+	use xdg scripts to install desktop file and icon
+
+2007-02-07 17:17 +0000  dockes    (3161a2dabc0a)
+
+	* src/common/rclconfig.cpp, src/doc/user/usermanual.sgml:
+	dont autocreate config specified with -c or RECOLL_CONFDIR
+
+2007-02-07 16:31 +0000  dockes    (f89cbedba93f)
+
+	* src/desktop/recoll-searchgui.desktop, src/desktop/recoll-
+	searchgui.png, src/desktop/recoll-searchgui.xcf, src/desktop/xdg-
+	utils-1.0.1/LICENSE, src/desktop/xdg-utils-1.0.1/scripts/xdg-
+	desktop-menu, src/desktop/xdg-utils-1.0.1/scripts/xdg-icon-resource:
+	new file.
+	* src/desktop/recoll-searchgui.desktop, src/desktop/recoll-
+	searchgui.png, src/desktop/recoll-searchgui.xcf, src/desktop/xdg-
+	utils-1.0.1/LICENSE, src/desktop/xdg-utils-1.0.1/scripts/xdg-
+	desktop-menu, src/desktop/xdg-utils-1.0.1/scripts/xdg-icon-resource,
+	src/query/recollq.cpp:
+	*** empty log message ***
+
+2007-02-07 16:31 +0000  dockes    (2494c5157c22)
+
+	* src/aspell/rclaspell.cpp:
+	improve db creation error message
+
+2007-02-07 12:00 +0000  dockes    (3c02ca709886)
+
+	* src/query/recollq.cpp: new file.
+	* src/query/Makefile, src/query/recollq.cpp, src/query/wasatorcl.cpp,
+	src/query/wasatorcl.h:
+	recollq
+
+2007-02-06 18:01 +0000  dockes    (1992c71741c0)
+
+	* src/index/indexer.cpp, src/internfile/internfile.cpp,
+	src/internfile/internfile.h, src/internfile/mh_exec.cpp,
+	src/qtgui/preview_w.cpp:
+	arrange for error info about missing helpers to trickle up to the
+	user
+
+2007-02-06 18:01 +0000  dockes    (d5e12cec5aeb)
+
+	* src/sampleconf/mimeconf, src/sampleconf/mimemap:
+	added config+filter for man pages
+
+2007-02-06 15:08 +0000  dockes    (ef2eef3c33e9)
+
+	* src/filters/rclman: new file.
+	* src/filters/rcldjvu, src/filters/rcldoc, src/filters/rcldvi,
+	src/filters/rclgaim, src/filters/rcllyx, src/filters/rclman,
+	src/filters/rclmedia, src/filters/rclpdf, src/filters/rclppt,
+	src/filters/rclps, src/filters/rclrtf, src/filters/rclscribus,
+	src/filters/rclsoff, src/filters/rclxls:
+	factored out filter script common code
+
+2007-02-06 14:18 +0000  dockes    (7812fc3157a4)
+
+	* src/common/rclconfig.cpp, src/utils/pathut.cpp, src/utils/pathut.h:
+	make sure the -c argument is turned absolute before use
+
+2007-02-06 10:19 +0000  dockes    (243d1fffdfb9)
+
+	* src/qtgui/ssearch_w.cpp:
+	no space in query -> phrase
+
+2007-02-06 10:18 +0000  dockes    (d1b8dd6a7182)
+
+	* src/qtgui/reslist.cpp:
+	try to make sure that the old reslist is cleared while searching
+
+2007-02-06 10:18 +0000  dockes    (24163d1804e5)
+
+	* src/qt4gui/uifrom3:
+	link images/ from qtgui to qt4gui
+
+2007-02-03 16:46 +0000  dockes    (d27849ad572f)
+
+	* website/styles/style.css:
+	*** empty log message ***
+
+2007-02-02 10:27 +0000  dockes    (3c82d463b36c)
+
+	* src/doc/user/usermanual.sgml:
+	add skippedPaths and daemSkippedPaths config variables
+
+2007-02-02 10:12 +0000  dockes    (0232602ba055)
+
+	* src/common/rclconfig.cpp, src/common/rclconfig.h,
+	src/index/indexer.cpp, src/index/rclmonrcv.cpp,
+	src/utils/fstreewalk.cpp:
+	add skippedPaths and daemSkippedPaths config variables
+
+2007-02-02 10:10 +0000  dockes    (12a2a255dedc)
+
+	* src/rcldb/rcldb.cpp, src/rcldb/rcldb.h:
+	sort and uniquify termMatch results out of stem expansion
+
+2007-02-02 10:09 +0000  dockes    (344b11ebced1)
+
+	* src/index/recollindex.cpp:
+	do x11 check between sleeping and starting in recollindex -m
+
+2007-02-02 10:06 +0000  dockes    (3a9bb20130c8)
+
+	* src/doc/user/usermanual-italian.html: new file.
+	* src/doc/user/usermanual-italian.html, src/qtgui/i18n/recoll_it.ts:
+	*** empty log message ***
+
+2007-02-02 10:06 +0000  dockes    (9a6092dbecea)
+
+	* src/lib/Makefile, src/lib/mkMake:
+	fix $(depth) usage for easier kio compilation
+
+2007-02-02 10:05 +0000  dockes    (a645eeae729a)
+
+	* src/doc/user/usermanual.sgml:
+	added config examples
+
+2007-02-02 10:01 +0000  dockes    (a0640e49ab3a)
+
+	* src/recollinstall.in:
+	removed old filter in examples cleanup
+
+2007-02-01 15:01 +0000  dockes    (db53657c868d)
+
+	* src/aspell/rclaspell.cpp, src/mk/localdefs.in:
+	use configure libdir to search for aspell lib (mainly for 64 bits
+	machines)
+
+2007-02-01 12:43 +0000  dockes    (7f3d33405e53)
+
+	* src/kde/kioslave/recoll/Makefile,
+	src/kde/kioslave/recoll/kio_recoll.cpp:
+	fixed kio compilation. Dont know if it works
+
+2007-01-30 11:39 +0000  dockes    (1aa8e8c3d93a)
+
+	* src/filters/rcldjvu, src/filters/rcldoc, src/filters/rcldvi,
+	src/filters/rclpdf, src/filters/rclps, src/filters/rclrtf,
+	src/filters/rclsoff:
+	hide awk BEGIN statements - make debian linda happy
+
+2007-01-29 13:51 +0000  dockes    (f207a83f0617)
+
+	* src/rcldb/searchdata.cpp:
+	more field name synonyms
+
+2007-01-25 15:50 +0000  dockes    (ba53fd450dc5)
+
+	* src/rcldb/searchdata.cpp, src/rcldb/searchdata.h:
+	better wildcards handling. Tuning of user term boosting
+
+2007-01-25 15:47 +0000  dockes    (026e24e9aafc)
+
+	* src/doc/user/usermanual.sgml:
+	*** empty log message ***
+
+2007-01-25 15:47 +0000  dockes    (31cd60d81a3a)
+
+	* src/rcldb/rcldb.cpp:
+	dont explicitely anchor regexp in termMatch
+
+2007-01-25 15:46 +0000  dockes    (8c7afe9df6fb)
+
+	* src/qtgui/ssearch_w.cpp:
+	Dont add auto phrase if there are wildcards
+
+2007-01-25 15:45 +0000  dockes    (d35369f54699)
+
+	* src/query/wasatorcl.cpp:
+	comment
+
+2007-01-25 15:40 +0000  dockes    (2d7b13ebd2c8)
+
+	* src/common/textsplit.cpp:
+	[] are also wildcard chars
+
+2007-01-25 12:04 +0000  dockes    (27310036f46c)
+
+	* src/qtgui/i18n/recoll_it.ts:
+	*** empty log message ***
+
+2007-01-25 08:27 +0000  dockes    (876d5192bdde)
+
+	* src/qtgui/i18n/recoll_it.ts: new file.
+	* src/qtgui/i18n/recoll_it.ts:
+	*** empty log message ***
+
+2007-01-24 12:40 +0000  dockes    (dd470677dbf2)
+
+	* src/qtgui/guiutils.cpp:
+	make AND the initial default for ssearch
+
+2007-01-24 11:20 +0000  dockes    (623c6533e0f0)
+
+	* src/qtgui/uiprefs.ui, src/qtgui/viewaction.ui:
+	change MyDialog and Form1 dialog captions
+
+2007-01-24 11:15 +0000  dockes    (9dc93d749ea8)
+
+	* src/filters/rclscribus:
+	transate \r to 
(for older scribus files) + +2007-01-24 11:00 +0000 dockes (7ea73b206760) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap: + scribus scd files + +2007-01-23 07:23 +0000 dockes (0f9e96c72d1c) + + * src/filters/rcllyx: + *** empty log message *** + +2007-01-23 07:22 +0000 dockes (5fc9550be90c) + + * src/filters/rcllyx: + *** empty log message *** + +2007-01-23 07:16 +0000 dockes (55734c5d16c2) + + * src/filters/rcllyx: + *** empty log message *** + +2007-01-23 07:14 +0000 dockes (dafabbcdaf1a) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap, + src/sampleconf/mimeview: + lyx filter + +2007-01-23 07:14 +0000 dockes (d5ac3c0cf64f) + + * src/filters/rcllyx: new file. + * src/filters/rcllyx: + lyx filter + +2007-01-22 16:34 +0000 dockes (e76e39a890d0) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap: + added scribus support + +2007-01-22 16:32 +0000 dockes (0b142f40e0c7) + + * src/filters/rclscribus: new file. + * src/filters/rclscribus: + added scribus support + +2007-01-21 16:41 +0000 dockes (8e06e0f7914e) + + * src/filters/rclsoff: + fix shell syntax for debian + +2007-01-19 15:22 +0000 dockes (084098d57a50) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/preview_w.cpp, src/qtgui/preview_w.h, + src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp, src/qtgui/reslist.h, + src/query/docseq.h, src/query/docseqdb.cpp, src/query/docseqdb.h, + src/query/docseqhist.h, src/query/sortseq.cpp, src/query/sortseq.h: + try to limit the places which use Rcl:: stuff + +2007-01-19 15:19 +0000 dockes (1d1bdf98f176) + + * src/rcldb/stemdb.cpp: + make sure that both the user term and the stem are in the expanded + list + +2007-01-19 10:32 +0000 dockes (757f49c23d93) + + * src/query/docseqdb.cpp, src/query/docseqdb.h, + src/query/docseqhist.cpp, src/query/docseqhist.h: new file. + * src/lib/Makefile, src/lib/mkMake, src/qtgui/rclmain_w.cpp, + src/qtgui/reslist.cpp, src/qtgui/ssearch_w.cpp, + src/query/docseq.cpp, src/query/docseq.h, src/query/docseqdb.cpp, + src/query/docseqdb.h, src/query/docseqhist.cpp, + src/query/docseqhist.h, src/query/sortseq.cpp, src/query/sortseq.h: + cleanup docseq, arrange things so that we can page reslist past the + initial result count estimate if there are more + +2007-01-19 10:23 +0000 dockes (d4ecd356406a) + + * src/rcldb/searchdata.cpp: + the relevance-boosted original term needs a prefix too + +2007-01-19 10:23 +0000 dockes (cacb9b50f1cf) + + * src/rcldb/rcldb.cpp: + adjust makeAbstract for prefixed terms + +2007-01-19 10:22 +0000 dockes (95d569102c37) + + * src/query/wasatorcl.cpp, src/query/wasatorcl.h: + add direct qstring to rcl function + +2007-01-18 14:23 +0000 dockes (157d8676b256) + + * src/utils/mimeparse.cpp: + debug msg + +2007-01-18 12:09 +0000 dockes (b0647b310dec) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/rcldb/searchdata.cpp: + handle wildcards in search terms + +2007-01-17 14:06 +0000 dockes (65d2617d690c) + + * src/query/Makefile, src/query/wasatorcl.cpp: + *** empty log message *** + +2007-01-17 13:53 +0000 dockes (82c00cf9d054) + + * src/internfile/internfile.cpp, src/internfile/mh_html.cpp, + src/internfile/mh_mail.cpp, src/internfile/myhtmlparse.cpp, + src/internfile/myhtmlparse.h, src/lib/Makefile, src/lib/mkMake, + src/query/Makefile, src/query/wasastringtoquery.cpp, + src/query/wasastringtoquery.h, src/query/wasatorcl.cpp, + src/rcldb/rcldb.cpp, src/rcldb/rcldoc.h, src/rcldb/searchdata.cpp, + src/rcldb/searchdata.h: + added field/prefixes for author and title + command line query + language + +2007-01-16 10:58 +0000 dockes (f56d8a303798) + + * src/sampleconf/recoll.conf.in: + add recollrc to skipped + +2007-01-16 10:58 +0000 dockes (a28d7ea5359b) + + * website/BUGS.txt, website/CHANGES.txt, website/download.html, + website/index.html: + 1.7.5 + +2007-01-16 10:58 +0000 dockes (83b10dc2e5ea) + + * src/bincimapmime/trbinc.cc, src/utils/debuglog.cpp: + wrong copyrights + +2007-01-16 10:56 +0000 dockes (e51d7ee21ffd) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/rpm/recoll.spec, + packaging/rpm/recollfedora.spec, packaging/rpm/recollmdk.spec: + 1.7.5 packaging + +2007-01-16 09:22 +0000 dockes (7f8fea3bed13) + + * packaging/debian/manpages: deleted file. + * packaging/debian/changelog, packaging/debian/control, + packaging/debian/copyright, packaging/debian/manpages, + packaging/debian/rules: + 2007-01-12 comments + +2007-01-15 19:16 +0000 dockes (740528a1cd7d) + + * packaging/debian/dirs: deleted file. + * packaging/debian/dirs: + *** empty log message *** + +2007-01-15 13:06 +0000 dockes (12e31e690f9e) + + * src/internfile/internfile.cpp, src/internfile/internfile.h: + dont stop processing a complex document on the first next_document + error: pop level and go on + +2007-01-15 13:03 +0000 dockes (6d3f8a71e602) + + * src/doc/user/usermanual.sgml: + *** empty log message *** + +2007-01-13 15:21 +0000 dockes (b04adc5188d5) + + * src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h, src/qtgui/uiprefs.ui, + src/qtgui/uiprefs_w.cpp, src/qtgui/uiprefs_w.h: + improved external index dialog with listview + +2007-01-13 14:41 +0000 dockes (f9567f0fed32) + + * src/query/xadump.cpp: + add option to dump raw terms + +2007-01-13 10:28 +0000 dockes (fc890008108f) + + * src/internfile/mh_mail.cpp: + handle multipart/signed + +2007-01-12 09:01 +0000 dockes (1782d39f9d4d) + + * src/qtgui/reslist.cpp: + Use sample from Rcl::Doc if makeAbstract() fails + +2007-01-12 06:42 +0000 dockes (8223a4aa9ad4) + + * packaging/debian/copyright: + include gpl statement + +2007-01-10 16:03 +0000 dockes (66247acdb470) + + * packaging/debian/changelog, packaging/debian/compat, + packaging/debian/control, packaging/debian/copyright, + packaging/debian/dirs, packaging/debian/docs, + packaging/debian/manpages, packaging/debian/menu, + packaging/debian/rules, packaging/debian/watch: new file. + * packaging/debian/changelog, packaging/debian/compat, + packaging/debian/control, packaging/debian/copyright, + packaging/debian/dirs, packaging/debian/docs, + packaging/debian/manpages, packaging/debian/menu, + packaging/debian/rules, packaging/debian/watch, src/Makefile.in, + src/VERSION: + *** empty log message *** + +2007-01-10 12:27 +0000 dockes (733bc11b5526) + + * packaging/FreeBSD/recoll/Makefile: + *** empty log message *** + +2007-01-09 15:34 +0000 dockes (9583ff723edf [RECOLL_1_7_3]) + + * packaging/rpm/recollfedora.spec: new file. + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + descr, packaging/FreeBSD/recoll/pkg-plist, + packaging/rpm/recoll.spec, packaging/rpm/recollfedora.spec, + packaging/rpm/recollmdk.spec: + 1.7.3 + +2007-01-09 14:39 +0000 dockes (f108471cd099) + + * website/BUGS.txt, website/CHANGES.txt, website/download.html: + 1.7.3 + +2007-01-09 07:25 +0000 dockes (e0c1d14a73c5) + + * src/VERSION: + *** empty log message *** + +2007-01-09 07:25 +0000 dockes (f06dbc019ff4) + + * src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts: + french messages + +2007-01-08 15:21 +0000 dockes (906e56e99e81) + + * src/VERSION, src/qtgui/main.cpp: + initial indexation with gui would not work + +2007-01-08 13:00 +0000 dockes (44d2b5d58ac6 [RECOLL_1_7_1]) + + * src/VERSION: + 1.7.1 + +2007-01-08 12:43 +0000 dockes (2cb748432b10) + + * src/qtgui/advsearch.ui: + lost sizers? + +2007-01-08 10:11 +0000 dockes (67c4375292e5) + + * src/qtgui/rclmain_w.cpp: + fix the previous icon fix + +2007-01-08 10:01 +0000 dockes (8eb24fe9db4f) + + * src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, + src/qtgui/reslist.cpp, src/qtgui/reslist.h: + reslist menu openParent opens containing folder if not a subdoc + +2007-01-08 09:40 +0000 dockes (b38401a650c3) + + * src/qtgui/uiprefs.ui: + fix resizing of prefs dialog + +2007-01-08 07:02 +0000 dockes (5a2fb87a2c55) + + * src/qtgui/rclmain_w.cpp: + get rid of messages about missing d_xxx images + +2007-01-08 07:01 +0000 dockes (8a2c6d2cba46) + + * src/qtgui/reslist.cpp: + synthetic abstracts not displayed + +2006-12-24 08:07 +0000 dockes (e42dca990bea [RECOLL_1_7_0]) + + * src/Makefile.in: + better cleanup -> 1.7.0 NOW + +2006-12-24 08:02 +0000 dockes (916d6e831996 [RECOLL_1_7_2]) + + * packaging/FreeBSD/recoll/pkg-plist, src/excludefile, + website/BUGS.txt, website/CHANGES.txt, website/download.html, + website/features.html, website/index.html, website/pics/index.html, + website/rclidxfmt.html: + 1.7.0 + +2006-12-24 07:53 +0000 dockes (b37a6e3566b9) + + * src/INSTALL, src/README, src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-12-24 07:40 +0000 dockes (69573fe97b89) + + * src/configure, src/configure.ac, src/doc/man/recollindex.1, + src/doc/user/usermanual.sgml, src/index/rclmon.h, + src/index/rclmonprc.cpp, src/index/recollindex.cpp: + option -x to disable x11 session monitoring + +2006-12-23 13:07 +0000 dockes (fb731b7d3ab1) + + * src/configure, src/configure.ac, src/index/Makefile, + src/index/rclmonprc.cpp, src/lib/Makefile, src/lib/mkMake, + src/mk/localdefs.in, src/utils/pathut.cpp: + x11 session end detection + +2006-12-23 12:23 +0000 dockes (00532204c17f) + + * src/utils/x11mon.cpp, src/utils/x11mon.h: new file. + * src/utils/Makefile, src/utils/x11mon.cpp, src/utils/x11mon.h: + *** empty log message *** + +2006-12-22 16:48 +0000 dockes (ee878b9d311e) + + * src/qt4gui/recoll.qrc, src/qtgui/rclmain.ui, + src/qtgui/rclmain_w.cpp, src/qtgui/spell_w.cpp: + get all icons out of .ui files to avoid qt4 startup messages + +2006-12-22 11:01 +0000 dockes (078acb3ab4fd) + + * src/doc/man/recollindex.1, src/doc/user/usermanual.sgml, + src/qtgui/spell_w.h: + *** empty log message *** + +2006-12-21 10:08 +0000 dockes (d36d26d5b5d5) + + * src/index/rclmonprc.cpp: + try to be more responsive to interruptions + +2006-12-21 09:22 +0000 dockes (818387de5d92) + + * src/index/indexer.cpp, src/index/rclmonrcv.cpp, + src/index/recollindex.cpp, src/sampleconf/mimemap, + src/utils/fstreewalk.cpp: + always skip indexing of confdir and dbdir. start index monitor with + normal indexing pass + +2006-12-21 09:21 +0000 dockes (13c7229ee6dc) + + * src/qtgui/advsearch.ui, src/qtgui/ssearchb.ui: + tooltips + +2006-12-21 08:22 +0000 dockes (c1e9892c3ba1) + + * src/utils/fstreewalk.cpp, src/utils/fstreewalk.h: + add skipped paths + +2006-12-20 14:28 +0000 dockes (f580e9aa026a) + + * src/internfile/internfile.cpp: + msg + +2006-12-20 14:09 +0000 dockes (e3d7f975546f) + + * src/qtgui/preview_w.cpp: + try to improve error message for internfile failure + +2006-12-20 13:55 +0000 dockes (0a07075dd464) + + * src/qtgui/preview_w.cpp, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h, src/qtgui/reslist.cpp, src/qtgui/reslist.h: + reslist: added menu entry to see parent doc of attachment + +2006-12-20 13:12 +0000 dockes (733a59947cfb) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/advsearch_w.h, src/qtgui/guiutils.cpp, + src/qtgui/guiutils.h, src/sampleconf/mimeconf: + mime categories + +2006-12-20 10:47 +0000 dockes (591625eb1d38) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-12-20 09:54 +0000 dockes (c563fb138893) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/doc/user/usermanual.sgml, src/index/mimetype.cpp: + changed stopsuffixes processing + +2006-12-20 09:41 +0000 dockes (64488c2687be) + + * src/index/recollindex.cpp: + opt -e + +2006-12-19 12:38 +0000 dockes (6d4a0c0f8cc3) + + * src/qtgui/spell_w.cpp: + qt4 + +2006-12-19 12:11 +0000 dockes (a3e7c86f79d7) + + * src/qtgui/spell.ui, src/qtgui/spell_w.cpp, src/qtgui/spell_w.h, + src/qtgui/ssearch_w.cpp, src/qtgui/viewaction.ui, + src/qtgui/viewaction_w.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/rcldb/searchdata.cpp, src/rcldb/stemdb.cpp, src/rcldb/stemdb.h, + src/utils/smallut.cpp, src/utils/smallut.h: + merge stemExpand into termExpand. return term frequencies from there + and display in spellW + +2006-12-19 08:40 +0000 dockes (3bbff3062a89) + + * src/common/rclconfig.cpp, src/index/indexer.cpp, + src/index/mimetype.cpp, src/index/mimetype.h, + src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/mimehandler.cpp, src/qtgui/preview_w.cpp, + src/sampleconf/mimeconf, src/sampleconf/mimeview: + index directory names + +2006-12-19 07:48 +0000 dockes (7301c237649a) + + * src/qtgui/mtpics/folder.png: new file. + * src/qtgui/mtpics/folder.png: + *** empty log message *** + +2006-12-18 16:45 +0000 dockes (0a640477a752) + + * src/qt4gui/recoll.pro.in, src/qtgui/viewaction.ui, + src/qtgui/viewaction_w.cpp, src/qtgui/viewaction_w.h: + qt4 + +2006-12-18 12:06 +0000 dockes (5f17ab347621) + + * src/doc/user/usermanual.sgml, src/internfile/mh_mail.cpp, + src/utils/smallut.cpp, src/utils/smallut.h: + mh_mail needs to lowercase contentypes + +2006-12-18 12:05 +0000 dockes (03363b562546) + + * src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, + src/qtgui/viewaction_w.cpp, src/qtgui/viewaction_w.h: + dblclick to edit in viewAction + +2006-12-16 15:39 +0000 dockes (a3027dd4b920) + + * src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/mh_html.h, src/internfile/mh_mail.cpp, + src/internfile/mh_mail.h, src/internfile/mh_text.h, + src/internfile/mimehandler.h, src/qtgui/main.cpp, + src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h: + mail attachments sort of ok + +2006-12-16 15:31 +0000 dockes (7d335e595c2b) + + * src/utils/pathut.cpp, src/utils/pathut.h: + added TempFile class + +2006-12-16 15:30 +0000 dockes (89fed05a6ace) + + * src/internfile/Filter.h: + *** empty log message *** + +2006-12-16 15:30 +0000 dockes (5f74c84fa800) + + * src/index/indexer.cpp: + dont clobber utf8fn from filter + +2006-12-16 15:30 +0000 dockes (b5f77fb6530b) + + * src/common/rclconfig.cpp, src/common/rclconfig.h: + added getSuffixFromMimeType() + +2006-12-16 07:15 +0000 dockes (ef72575e285c) + + * src/internfile/Filter.h: + *** empty log message *** + +2006-12-15 16:33 +0000 dockes (df6232340341) + + * src/index/indexer.cpp, src/internfile/Filter.h, + src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/mh_html.cpp, src/internfile/mh_mail.cpp, + src/internfile/mh_mail.h, src/internfile/myhtmlparse.h: + test data indexing result same terms as 1.6.3 + +2006-12-15 12:40 +0000 dockes (5156a319f219) + + * src/internfile/Filter.h, src/internfile/mh_mbox.cpp, + src/internfile/mh_mbox.h: new file. + * src/internfile/Filter.h, src/internfile/Makefile, + src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/mh_exec.cpp, src/internfile/mh_exec.h, + src/internfile/mh_html.cpp, src/internfile/mh_html.h, + src/internfile/mh_mail.cpp, src/internfile/mh_mail.h, + src/internfile/mh_mbox.cpp, src/internfile/mh_mbox.h, + src/internfile/mh_text.cpp, src/internfile/mh_text.h, + src/internfile/mh_unknown.h, src/internfile/mimehandler.cpp, + src/internfile/mimehandler.h, src/internfile/myhtmlparse.h, + src/lib/Makefile, src/lib/mkMake, src/utils/smallut.cpp, + src/utils/smallut.h: + Dijon filters 1st step: mostly working needs check and optim + +2006-12-14 14:54 +0000 dockes (2f7d4fb90b31) + + * src/rcldb/rcldoc.h: new file. + * src/rcldb/rcldb.h, src/rcldb/rcldoc.h: + split rcldb.h -> rcldoc.h + +2006-12-14 13:53 +0000 dockes (839454238284) + + * src/qtgui/viewaction.ui, src/qtgui/viewaction_w.cpp, + src/qtgui/viewaction_w.h, src/sampleconf/mimeview: new file. + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/doc/user/usermanual.sgml, src/index/indexer.cpp, + src/qtgui/preview_w.cpp, src/qtgui/rclmain_w.cpp, + src/qtgui/recoll.pro.in, src/qtgui/ssearch_w.cpp, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp, + src/qtgui/uiprefs_w.h, src/qtgui/viewaction.ui, + src/qtgui/viewaction_w.cpp, src/qtgui/viewaction_w.h, + src/recollinstall.in, src/sampleconf/mimeconf, + src/sampleconf/mimeview, src/utils/Makefile, src/utils/conftree.cpp, + src/utils/conftree.h, src/utils/execmd.cpp, src/utils/execmd.h, + src/utils/pathut.cpp, src/utils/pathut.h, src/utils/smallut.cpp, + src/utils/smallut.h: + created mimeview and the viewer conf edit dialog + +2006-12-13 09:13 +0000 dockes (ca4c21f5ad44) + + * src/common/rclconfig.cpp, src/internfile/internfile.cpp, + src/internfile/mh_exec.cpp, src/internfile/mimehandler.cpp: + move findFilter usage out of mh_exec + +2006-12-11 14:56 +0000 dockes (dd4f283c9753 [BEFORE_Dijon20061215]) + + * src/qtgui/plaintorich.cpp: + not calling textsplit with onlyspans improves highlighting + +2006-12-11 14:50 +0000 dockes (c6d552528f6c) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/index/mimetype.cpp, src/utils/smallut.cpp, src/utils/smallut.h: + rationalize stopsuffix list usage + +2006-12-11 09:05 +0000 dockes (87037320fddf) + + * packaging/FreeBSD/recoll/pkg-plist: + try to cleanup the share/icons tree + +2006-12-10 17:03 +0000 dockes (0d0fec69b4e4 [MAPSTRMAPSTRSTR]) + + * src/query/wasastringtoquery.cpp, src/query/wasastringtoquery.h, + src/query/wasatorcl.cpp, src/query/wasatorcl.h: + added sort and type specs parsing + +2006-12-08 17:18 +0000 dockes (9d443b2ad416) + + * src/query/wasatorcl.h: + 1st query + +2006-12-08 10:54 +0000 dockes (dc4914858b42) + + * src/query/wasastringtoquery.cpp, src/query/wasastringtoquery.h: + *** empty log message *** + +2006-12-08 07:11 +0000 dockes (df1ce4c7c9bf) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/qtgui/ssearch_w.cpp: + only autophrase if query has several terms + +2006-12-08 06:45 +0000 dockes (6b96cd852343) + + * src/qtgui/ssearch_w.cpp: + make autophrase do the right thing: add a subclause, not modify the + query string + +2006-12-07 16:38 +0000 dockes (e0b7c11d4054) + + * src/query/qtry.cpp, src/query/qxtry.cpp: deleted file. + * src/query/Makefile, src/query/qtry.cpp, src/query/qxtry.cpp, + src/query/xadump.cpp: + removed qtry and merged qxtry into xadump + +2006-12-07 13:24 +0000 dockes (11f50dc2ced9) + + * src/rcldb/rcldb.cpp: + comment + +2006-12-07 13:14 +0000 dockes (0137bc80c8a5) + + * website/rclidxfmt.html: new file. + * website/rclidxfmt.html: + *** empty log message *** + +2006-12-07 13:02 +0000 dockes (e36e165c1055) + + * src/rcldb/rcldb.cpp: + comments + +2006-12-07 08:23 +0000 dockes (6bdb3421d1ca) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + plist: + 1.6.3 + +2006-12-07 08:06 +0000 dockes (2ca80dafce2a) + + * src/internfile/mh_mail.cpp: + fix bug with bad message "From " delimiter detection + +2006-12-07 07:07 +0000 dockes (92354b8e641a) + + * src/qtgui/rclmain_w.cpp, src/utils/mimeparse.h, + src/utils/smallut.cpp, src/utils/smallut.h: + fix pb with executing viewer for files with single-quotes in + pathnames + +2006-12-07 07:06 +0000 dockes (b415958c3148) + + * src/internfile/mh_mail.cpp: + fix bug with bad message "From " delimiter detection + +2006-12-05 15:25 +0000 dockes (451489717e47) + + * src/internfile/mh_mail.cpp: + use regexp to better discriminate From delimiter lines in mbox. + Avoid reading mboxes twice + +2006-12-05 15:23 +0000 dockes (282880e83069) + + * src/qtgui/advsearch.ui, src/qtgui/main.cpp, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h, src/qtgui/reslist.cpp, src/qtgui/reslist.h, + src/qtgui/sort.ui, src/qtgui/sort_w.cpp, src/qtgui/sort_w.h: + avoid generating abstracts before theyre needed (ie: not during + sort). have the sort tools redisplay the results when sort criteria + are applied + +2006-12-05 15:18 +0000 dockes (069f87c83682) + + * src/query/sortseq.cpp, src/query/sortseq.h: + use refcntr to access docsequence + +2006-12-05 15:17 +0000 dockes (f7bad3e61904) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + expose abstract synthesis to let users decide when they want it done + +2006-12-05 15:17 +0000 dockes (57148c851c44) + + * src/rcldb/searchdata.h: + clauseCount + +2006-12-05 15:16 +0000 dockes (d6d5ee7b750b) + + * src/utils/refcntr.h: + fix pbs with empty object + +2006-12-04 09:56 +0000 dockes (1173f38c9de4) + + * src/configure, src/configure.ac, src/qtgui/advsearch_w.h, + src/qtgui/main.cpp, src/qtgui/preview_w.h, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h, src/qtgui/sort_w.h, src/qtgui/spell_w.h, + src/qtgui/ssearch_w.h, src/qtgui/uiprefs_w.h, src/utils/refcntr.h: + qt4 compiles and sort of works + +2006-12-04 09:49 +0000 dockes (00bc69d47f20) + + * src/qt4gui/recoll.qrc, src/qt4gui/uifrom3: new file. + * src/qt4gui/recoll.pro.in, src/qt4gui/recoll.qrc, src/qt4gui/uifrom3: + *** empty log message *** + +2006-12-04 08:17 +0000 dockes (c92f84765756) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/advsearch_w.h, src/qtgui/preview_w.cpp, + src/qtgui/preview_w.h, src/qtgui/sort_w.cpp, + src/qtgui/ssearch_w.cpp, src/qtgui/uiprefs_w.cpp, + src/qtgui/uiprefs_w.h: + compiles (doesnt work) on qt4 + +2006-12-04 06:19 +0000 dockes (5a7d6794967e) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/advsearch_w.h, src/qtgui/guiutils.cpp, src/qtgui/main.cpp, + src/qtgui/preview.ui, src/qtgui/preview_w.h, src/qtgui/rclmain.ui, + src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, + src/qtgui/reslist.cpp, src/qtgui/reslist.h, + src/qtgui/searchclause_w.cpp, src/qtgui/searchclause_w.h, + src/qtgui/sort_w.h, src/qtgui/spell.ui, src/qtgui/spell_w.h, + src/qtgui/ssearch_w.h, src/qtgui/ssearchb.ui, src/qtgui/uiprefs_w.h: + qt4 ckpt + +2006-12-02 07:32 +0000 dockes (45564d318a93) + + * src/utils/idfile.cpp: + improved tests to check for mail + +2006-12-01 10:05 +0000 dockes (8c3b51bc117f) + + * src/query/xadump.cpp: + *** empty log message *** + +2006-11-30 18:12 +0000 dockes (e41c0db701ae) + + * src/query/wasastringtoquery.cpp, src/query/wasastringtoquery.h, + src/query/wasatorcl.cpp, src/query/wasatorcl.h: new file. + * src/query/wasastringtoquery.cpp, src/query/wasastringtoquery.h, + src/query/wasatorcl.cpp, src/query/wasatorcl.h: + *** empty log message *** + +2006-11-30 13:44 +0000 dockes (5ef831ae4659) + + * website/download.html: + *** empty log message *** + +2006-11-30 13:38 +0000 dockes (6e49658236c6) + + * src/qtgui/images/cancel.png, src/qtgui/images/close.png: new file. + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + plist, packaging/rpm/recoll.spec, packaging/rpm/recollmdk.spec, + src/README, src/aspell/rclaspell.cpp, src/doc/user/usermanual.sgml, + src/index/indexer.cpp, src/index/indexer.h, src/makesrcdist.sh, + src/makestaticdist.sh, src/mk/SunOS, src/qtgui/advsearch.ui, + src/qtgui/advsearch_w.cpp, src/qtgui/guiutils.cpp, + src/qtgui/guiutils.h, src/qtgui/i18n/recoll_fr.ts, + src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts, + src/qtgui/images/cancel.png, src/qtgui/images/close.png, + src/qtgui/main.cpp, src/qtgui/plaintorich.cpp, + src/qtgui/plaintorich.h, src/qtgui/preview.ui, + src/qtgui/preview_w.cpp, src/qtgui/rclmain.ui, + src/qtgui/recoll.pro.in, src/qtgui/reslist.cpp, + src/qtgui/searchclause_w.cpp, src/qtgui/spell_w.cpp, + src/qtgui/ssearch_w.cpp, src/qtgui/ssearchb.ui, + src/rcldb/searchdata.cpp, src/recoll.desktop, src/recollinstall.in, + src/sampleconf/recoll.conf.in, src/utils/execmd.cpp, + src/utils/mimeparse.cpp, src/utils/smallut.cpp, website/BUGS.txt, + website/CHANGES.txt, website/download.html, website/features.html, + website/index.html: + merged 1.6 maint branch modifs up to MERGED_TO_TRUNK_20061130 + +2006-11-22 09:29 +0000 dockes (568c34cf75e9) + + * src/VERSION, website/BUGS.txt, website/CHANGES.txt, + website/credits.html, website/download.html: + *** empty log message *** + +2006-11-21 14:00 +0000 dockes (f247e019bf08 [RECOLL_1_6_0]) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-11-21 13:05 +0000 dockes (23604b23773d) + + * src/aspell/rclaspell.cpp, src/configure, src/configure.ac: + mdk 2006 aspell quirks + +2006-11-21 09:18 +0000 dockes (17597459707c) + + * packaging/FreeBSD/recoll/pkg-plist, packaging/rpm/recoll.spec, + packaging/rpm/recollmdk.spec, src/doc/user/usermanual.sgml, + src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts, website/BUGS.txt, website/CHANGES.txt, + website/copydocs, website/download.html, website/index.html: + *** empty log message *** + +2006-11-21 08:47 +0000 dockes (f434e776fec8) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/spell.ui, + src/qtgui/spell_w.cpp, src/qtgui/spell_w.h, src/qtgui/uiprefs_w.cpp: + added stem expansion mode to term explorer + +2006-11-20 18:07 +0000 dockes (bc85af9f678c) + + * src/doc/man/recoll.conf.5, src/doc/man/recollindex.1, + src/doc/user/usermanual.sgml: + doc + +2006-11-20 17:46 +0000 dockes (28cb0d8c325a) + + * src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-11-20 17:06 +0000 dockes (9252428377e4) + + * src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts: + *** empty log message *** + +2006-11-20 15:35 +0000 dockes (192c101b8b7c) + + * src/qtgui/advsearch.ui: + tooltip + +2006-11-20 15:29 +0000 dockes (73ca6e78a1dd) + + * src/filters/rclxls, src/utils/transcode.cpp: + *** empty log message *** + +2006-11-20 15:28 +0000 dockes (9bb875d3bfcf) + + * src/rcldb/rcldb.cpp: + clear abstract if its only ... + +2006-11-20 15:28 +0000 dockes (5ef1b603c3be) + + * src/common/rclconfig.cpp: + test driver + +2006-11-20 15:28 +0000 dockes (1c4807a363f9) + + * src/common/rclconfig.h: + fix defaultcharset reset + +2006-11-20 11:17 +0000 dockes (ef95275586d1) + + * src/common/Makefile, src/common/textsplit.cpp, + src/common/textsplit.h: + improved textsplit speed (needs utf8iter modifs too + +2006-11-20 11:16 +0000 dockes (e05653621eb4) + + * src/utils/Makefile, src/utils/utf8iter.cpp, src/utils/utf8iter.h: + cleaned and speeded up utf8iter + +2006-11-19 18:37 +0000 dockes (756bc7569b34) + + * src/common/textsplit.cpp, src/common/textsplit.h: + optim ckpt + +2006-11-18 12:56 +0000 dockes (bf6e4de3a902) + + * src/qtgui/plaintorich.cpp: + firsttermocc init was not always done + +2006-11-18 12:31 +0000 dockes (1703e5a7b03e) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/preview_w.cpp, src/qtgui/reslist.cpp: + improve positionning on term groups by storing/passing an occurrence + index + +2006-11-18 12:30 +0000 dockes (f065c8063ff3) + + * src/rcldb/searchdata.cpp: + correctly generate highlighting term groups when stem-expanding NEAR + queries + +2006-11-17 15:26 +0000 dockes (ee4a13877b24) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/advsearch_w.h, src/qtgui/guiutils.cpp, + src/qtgui/guiutils.h: + Save adv search clause list + add delete button + +2006-11-17 12:55 +0000 dockes (679a2cb3d3e7) + + * src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, + src/qtgui/reslist.cpp, src/qtgui/reslist.h: + get shift+clicklink to open new preview window instead of tab + +2006-11-17 12:32 +0000 dockes (51f7db5eff83) + + * src/qtgui/plaintorich.cpp: + small opts + fixed near region detection code + +2006-11-17 12:31 +0000 dockes (c0ba08efc3dd) + + * src/qtgui/plaintorich.h: + comments + +2006-11-17 12:31 +0000 dockes (e54183706237) + + * src/utils/utf8iter.h: + removed not strictly needed error checking code + +2006-11-17 10:09 +0000 dockes (7e44d4280e2d) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/preview_w.cpp, src/qtgui/preview_w.h, + src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp, src/qtgui/reslist.h: + Remember searchData and use it in plaintorich for phrase/group + highlighting + +2006-11-17 10:08 +0000 dockes (c175799e9e72) + + * src/qtgui/advsearch_w.cpp: + better data encap in searchdata + +2006-11-17 10:06 +0000 dockes (0ea302968170) + + * src/rcldb/rcldb.cpp, src/rcldb/searchdata.cpp, + src/rcldb/searchdata.h: + added code to remember search terms and term groups in searchdata + +2006-11-15 14:57 +0000 dockes (188b5b28427d) + + * src/common/Makefile, src/lib/Makefile, src/lib/mkMake, + src/mk/commondefs, src/qtgui/recoll.pro.in, src/rcldb/pathhash.cpp, + src/rcldb/pathhash.h, src/rcldb/rcldb.cpp, src/rcldb/searchdata.h, + src/rcldb/stemdb.h: + distributed files from common/ into rcld, internfile, common + +2006-11-15 07:27 +0000 dockes (5bfc0444c072) + + * src/internfile/Makefile: new file. + * src/internfile/Makefile: + *** empty log message *** + +2006-11-14 18:29 +0000 dockes (c45d7a2b1c63) + + * src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h: + got rid of the static clause names + +2006-11-14 18:17 +0000 dockes (e4789b229585) + + * src/qtgui/advsearch.ui: + *** empty log message *** + +2006-11-14 17:56 +0000 dockes (ae916c13c591) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp: + added conjunction choice in advsearch + +2006-11-14 17:41 +0000 dockes (dfc71f06c1ce) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/advsearch_w.h, src/qtgui/searchclause_w.cpp, + src/qtgui/searchclause_w.h, src/rcldb/searchdata.cpp: + use SearchClauseW for all advsearch fields + +2006-11-14 15:13 +0000 dockes (300f3705d6cf) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp: + *** empty log message *** + +2006-11-14 14:58 +0000 dockes (c5f65c6f8fb9) + + * src/qtgui/recoll.pro.in: + *** empty log message *** + +2006-11-14 13:55 +0000 dockes (9e98c3d86016) + + * src/qtgui/searchclause_w.cpp, src/qtgui/searchclause_w.h: new file. + * src/doc/user/usermanual.sgml, src/qtgui/advsearch.ui, + src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h, + src/qtgui/rclmain_w.cpp, src/qtgui/searchclause_w.cpp, + src/qtgui/searchclause_w.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/rcldb/searchdata.cpp, src/rcldb/searchdata.h: + added dynamic clauses to adv search. Still needs work + +2006-11-13 14:51 +0000 dockes (5c9db8d08690) + + * src/rcldb/rcldb.cpp: + *** empty log message *** + +2006-11-13 14:48 +0000 dockes (edec86240778) + + * src/rcldb/rcldb.cpp: + use wdfs for better selection of doc extracts in makeAbstract + +2006-11-13 11:59 +0000 dockes (fdf0f43cd03e) + + * src/utils/smallut.h: + *** empty log message *** + +2006-11-13 08:58 +0000 dockes (c48e54f96603) + + * src/utils/refcntr.h: new file. + * src/utils/refcntr.h: + *** empty log message *** + +2006-11-13 08:58 +0000 dockes (40853ad94507) + + * src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h, + src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h, src/qtgui/reslist.cpp, src/qtgui/reslist.h, + src/qtgui/ssearch_w.cpp, src/qtgui/ssearch_w.h: + make searchdata a more flexible struct + +2006-11-13 08:50 +0000 dockes (e585bfd6e725) + + * src/rcldb/searchdata.cpp: new file. + * src/lib/Makefile, src/lib/mkMake, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h, src/rcldb/searchdata.cpp, src/rcldb/searchdata.h: + make searchdata a more flexible struct + +2006-11-13 08:49 +0000 dockes (db3490f9b522) + + * src/kde/kioslave/recoll/kio_recoll.cpp: + *** empty log message *** + +2006-11-13 08:15 +0000 dockes (7240ec62ffac) + + * src/qtgui/plaintorich.cpp: + new splitter interface + +2006-11-12 08:35 +0000 dockes (ff9f3aed6a5b) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/rcldb/rcldb.cpp: + phrase queries with bot spans and words must be splitted as words + only + +2006-11-11 15:30 +0000 dockes (25647c7c5aac) + + * src/qtgui/reslist.cpp, src/qtgui/uiprefs.ui: + have more compact list header + %N + +2006-11-10 17:53 +0000 dockes (d423490bea37) + + * src/qtgui/reslist.cpp: + Really use the rich abstracts + +2006-11-10 17:18 +0000 dockes (9fc1a2d1b7af) + + * src/rcldb/rcldb.cpp: + optimized abstract building: bybye big vector + +2006-11-10 13:32 +0000 dockes (8cfbbddd355a) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/rclmain_w.cpp, src/qtgui/reslist.cpp, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp: + make result list paragraph format user-adjustable + +2006-11-10 13:30 +0000 dockes (933509968125) + + * src/utils/smallut.cpp, src/utils/smallut.h: + pcSubst() + +2006-11-10 13:29 +0000 dockes (17e0ecfb5834) + + * src/internfile/internfile.cpp: + errlog + +2006-11-09 19:04 +0000 dockes (814af75ba7a8) + + * src/qtgui/preview_w.cpp: + better handle the situation of mbox file name matching search + +2006-11-09 17:38 +0000 dockes (3c996d97497a) + + * src/Makefile.in: + *** empty log message *** + +2006-11-09 17:37 +0000 dockes (c13aab8ac186) + + * src/qtgui/reslist.cpp: + nbsp to prevent line date wrap before tz + +2006-11-09 17:37 +0000 dockes (573934250b27) + + * src/rcldb/rcldb.cpp: + dont continue adding ellipsis into the abstract when its maxlen! + +2006-11-09 08:59 +0000 dockes (baafe52b9d1b) + + * src/utils/mimeparse.cpp: + test driver modifs + +2006-11-08 15:34 +0000 dockes (025fa484738a) + + * src/common/rclinit.cpp, src/utils/debuglog.cpp, + src/utils/debuglog.h: + fix pb with special log file names + +2006-11-08 15:32 +0000 dockes (a32333c18e9f) + + * src/configure, src/configure.ac: + aspell help string + +2006-11-08 13:04 +0000 dockes (f5f0e953f42e) + + * src/qtgui/plaintorich.cpp: + use vector instead of list for positions + +2006-11-08 07:22 +0000 dockes (de7777528655) + + * src/common/rclinit.cpp, src/common/rclinit.h, + src/index/recollindex.cpp: + allow daemon-specific log parameters + +2006-11-08 06:56 +0000 dockes (451b31555bc2) + + * src/utils/conftree.cpp, src/utils/conftree.h: + volatile conf + +2006-11-08 06:49 +0000 dockes (ba1e8fb12e39) + + * src/recollinstall.in: + install rclmon.sh + +2006-11-07 18:28 +0000 dockes (fb26679a6cec) + + * src/qtgui/reslist.cpp, src/utils/mimeparse.cpp: + 1.5.9: fix bad tz correction in email dates + display tz in reslist + +2006-11-07 16:51 +0000 dockes (affd0b42e8ae) + + * src/index/rclmon.h, src/index/rclmonprc.cpp, + src/index/rclmonrcv.cpp: + traces + +2006-11-07 12:02 +0000 dockes (70ed645d27f3) + + * src/rcldb/rcldb.cpp: + use both size and mtime changes as updateneeding indicator + +2006-11-07 09:11 +0000 dockes (2491b468f55d) + + * src/qtgui/uiprefs.ui: + improved autophrase tooltip + +2006-11-07 09:04 +0000 dockes (ba7c28e1a205) + + * src/qtgui/uiprefs_w.cpp: + Cancel did not reset uiprefs dialog to stored state + +2006-11-07 08:57 +0000 dockes (c9f2b8c02171) + + * src/qtgui/uiprefs_w.cpp, src/qtgui/uiprefs_w.h: + Cancel did not reset uiprefs dialog to stored state + +2006-11-07 06:41 +0000 dockes (fea8781e4829) + + * src/index/indexer.cpp: + record/show mtime instead of ctime + +2006-11-06 17:37 +0000 dockes (a82b3932ac69) + + * src/doc/user/usermanual.sgml, src/qtgui/rclmain.ui, + src/qtgui/spell_w.cpp, src/rcldb/rcldb.cpp: + wrote manual for term explorer and fixed a few problems + +2006-11-05 21:10 +0000 dockes (f4fc6544cb74) + + * src/bincimapmime/mime-parsefull.cc: + fix binc imap infinite loop on multipart with null boundary + +2006-11-05 18:02 +0000 dockes (9306096cb34f) + + * src/bincimapmime/depot.h, src/bincimapmime/session.h: deleted file. + * src/bincimapmime/address.cc, src/bincimapmime/address.h, + src/bincimapmime/convert.cc, src/bincimapmime/convert.h, + src/bincimapmime/depot.h, src/bincimapmime/iodevice.cc, + src/bincimapmime/iodevice.h, src/bincimapmime/iofactory.h, + src/bincimapmime/mime-getpart.cc, src/bincimapmime/mime- + inputsource.h, src/bincimapmime/mime-parsefull.cc, src/bincimapmime + /mime-parseonlyheader.cc, src/bincimapmime/mime-printbody.cc, + src/bincimapmime/mime-printdoc.cc, src/bincimapmime/mime- + printheader.cc, src/bincimapmime/mime-utils.h, + src/bincimapmime/mime.cc, src/bincimapmime/mime.h, + src/bincimapmime/session.h: + included bincimap 1.3.3 to 1.3.4 diffs (mostly cosmetic) + +2006-11-04 17:09 +0000 dockes (3e0e0d4b152f) + + * src/qtgui/spell.ui, src/qtgui/spell_w.cpp: + fix aspell version of term explorer + +2006-11-04 14:49 +0000 dockes (7f914235875b) + + * src/qtgui/ssearch_w.cpp, src/qtgui/ssearch_w.h: + change ctrl-tab to esc-spc + +2006-10-30 12:59 +0000 dockes (2454d0c418a2) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/rclmain_w.cpp, src/qtgui/spell.ui, src/qtgui/spell_w.cpp, + src/qtgui/ssearch_w.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + Turn spell tool into multimode spell/wild/regexp + +2006-10-25 11:50 +0000 dockes (66843e6e167c) + + * src/index/indexer.cpp: + make tmpdir only once + +2006-10-25 10:52 +0000 dockes (10c2b1b74822) + + * src/index/indexer.cpp, src/index/rclmon.h, src/index/rclmonprc.cpp, + src/index/rclmonrcv.cpp, src/rcldb/rcldb.cpp: + added some debugging msgs (too much) + +2006-10-24 15:16 +0000 dockes (1fc3f90d5ee3) + + * src/mk/Darwin: + *** empty log message *** + +2006-10-24 14:28 +0000 dockes (33512e5ceddb) + + * src/index/indexer.cpp, src/index/indexer.h, src/index/rclmon.h, + src/index/rclmonprc.cpp, src/index/recollindex.cpp: + create stemming db on queue timeout if needed + +2006-10-24 13:22 +0000 dockes (21df8a0f4856) + + * src/index/rclmon.sh: new file. + * src/index/rclmon.sh: + *** empty log message *** + +2006-10-24 12:48 +0000 dockes (4af32c44f8ea) + + * src/index/rclmon.h, src/index/rclmonprc.cpp: + setup lockfile for monitor + +2006-10-24 11:42 +0000 dockes (f922b4dda121) + + * src/query/Makefile: + *** empty log message *** + +2006-10-24 11:42 +0000 dockes (f1da6521f1ff) + + * src/qtgui/ssearch_w.cpp: + explain error for C-TAB too many expansions + +2006-10-24 09:28 +0000 dockes (3228b6b8093a) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + fix slowness in needUpdate by using Database instead of + WritableDatabase + +2006-10-24 09:09 +0000 dockes (0d72c341e2eb) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/index/indexer.cpp, src/index/rclmonrcv.cpp: + centralize skippedNames computation to add dbdir always + +2006-10-23 15:01 +0000 dockes (6a07dc59db99) + + * src/index/rclmon.h, src/index/rclmonrcv.cpp: + handle directory creation + +2006-10-23 15:00 +0000 dockes (672e4b4bfe51) + + * src/utils/pathut.cpp, src/utils/pathut.h: + add path_isdir() + +2006-10-23 14:29 +0000 dockes (d395ca679c7a) + + * src/common/autoconfig.h.in, src/configure, src/configure.ac, + src/index/rclmonrcv.cpp: + raw inotify support + +2006-10-22 15:55 +0000 dockes (de0702a6c5e2) + + * src/mk/Linux: + *** empty log message *** + +2006-10-22 15:54 +0000 dockes (35832011eaf9) + + * src/rcldb/rcldb.cpp: + simplify needUpdate test + +2006-10-22 14:47 +0000 dockes (733c7646ca29) + + * src/configure, src/configure.ac, src/index/Makefile, + src/index/indexer.cpp, src/index/indexer.h, src/index/rclmonprc.cpp, + src/index/rclmonrcv.cpp, src/index/recollindex.cpp, + src/mk/localdefs.in, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + monitor: purge docs for deleted files from db + +2006-10-20 08:31 +0000 dockes (6d54039efe79) + + * src/qtgui/i18n/recoll_ru.ts, src/qtgui/i18n/recoll_uk.ts: + new Ukrainian+Russian messages from Michael + +2006-10-20 08:29 +0000 dockes (ebcb12870038) + + * src/qtgui/advsearch.ui, src/qtgui/rclmain.ui, src/qtgui/uiprefs.ui: + small fixes on label strings + +2006-10-17 14:41 +0000 dockes (ea77c15d81a6) + + * src/common/autoconfig.h.in, src/configure, src/configure.ac, + src/index/rclmon.h, src/index/rclmonprc.cpp, + src/index/rclmonrcv.cpp, src/index/recollindex.cpp: + fam autoconfig + +2006-10-16 15:33 +0000 dockes (aa570fc97bf9) + + * src/index/rclmon.h, src/index/rclmonprc.cpp, + src/index/rclmonrcv.cpp: new file. + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/index/Makefile, src/index/indexer.cpp, src/index/indexer.h, + src/index/rclmon.h, src/index/rclmonprc.cpp, + src/index/rclmonrcv.cpp, src/index/recollindex.cpp: + 1st version of real time monitor + +2006-10-15 13:07 +0000 dockes (aa97f764d4a6) + + * src/qtgui/rclmain_w.cpp, src/qtgui/spell_w.cpp, src/qtgui/spell_w.h: + dbl click in spell win to add to ssearch + +2006-10-12 14:46 +0000 dockes (78a3a37209ae) + + * src/configure.ac, src/index/indexer.cpp, src/index/indexer.h, + src/index/recollindex.cpp: + recollindex -i now checks that the files are descendants of topdirs + +2006-10-12 08:39 +0000 dockes (ab66430f3f7d) + + * src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-10-11 16:09 +0000 dockes (1cf66e2b486f) + + * src/aspell/rclaspell.cpp, src/utils/execmd.cpp, src/utils/execmd.h: + improve execcmd to avoid allocating an allterms buffer when creating + dico + +2006-10-11 14:16 +0000 dockes (26e08a8fc135) + + * src/qtgui/images/d_spell.png, src/qtgui/images/spell.png, + src/qtgui/spell.ui, src/qtgui/spell_w.cpp, src/qtgui/spell_w.h: new + file. + * src/aspell/rclaspell.cpp, src/aspell/rclaspell.h, + src/common/autoconfig.h.in, src/common/rclconfig.h, src/configure, + src/configure.ac, src/index/indexer.cpp, src/index/indexer.h, + src/index/recollindex.cpp, src/mk/commondefs, src/mk/localdefs.in, + src/qtgui/images/d_spell.png, src/qtgui/images/spell.png, + src/qtgui/main.cpp, src/qtgui/rclmain.ui, src/qtgui/rclmain_w.cpp, + src/qtgui/rclmain_w.h, src/qtgui/recoll.h, src/qtgui/recoll.pro.in, + src/qtgui/spell.ui, src/qtgui/spell_w.cpp, src/qtgui/spell_w.h, + src/sampleconf/recoll.conf.in, src/utils/smallut.cpp, + src/utils/smallut.h: + 1st full version of aspell support + +2006-10-10 10:58 +0000 dockes (ed60d657e8e9) + + * src/aspell/aspell-local.h, src/common/autoconfig.h.in: new file. + * src/aspell/aspell-local.h, src/common/autoconfig.h.in: + *** empty log message *** + +2006-10-09 16:37 +0000 dockes (93d9009c4d51) + + * src/VERSION, src/aspell/rclaspell.cpp, src/aspell/rclaspell.h, + src/index/Makefile, src/lib/Makefile, src/lib/mkMake, + src/makesrcdist.sh, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/rcldb/stemdb.cpp, src/utils/execmd.cpp, src/utils/execmd.h: + aspell checkpoint + +2006-10-09 14:05 +0000 dockes (711360b10738) + + * src/aspell/Makefile, src/aspell/rclaspell.cpp, + src/aspell/rclaspell.h: new file. + * src/aspell/Makefile, src/aspell/rclaspell.cpp, + src/aspell/rclaspell.h: + *** empty log message *** + +2006-10-03 08:34 +0000 dockes (4033d57b83da) + + * packaging/rpm/recoll.spec, packaging/rpm/recollmdk.spec: + 1.5 + +2006-10-02 13:30 +0000 dockes (562f54fc8029) + + * src/VERSION, src/makestaticdist.sh: + small glitches in makestaticdist + +2006-10-02 12:33 +0000 dockes (7be5b4b7d6c0) + + * src/VERSION, src/configure, src/configure.ac, src/query/history.h: + small glitches detected on suse / gcc 4.1 + +2006-10-02 11:25 +0000 dockes (8731b62606fe [RECOLL-1_5_8, RECOLL-1_5_3, RECOLL-1_5_6, RECOLL-1_5_7, RECOLL-1_5_4, RECOLL-1_5_5]) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + descr, packaging/FreeBSD/recoll/pkg-plist: + 1.5.2 + +2006-10-02 08:38 +0000 dockes (ee82de281263) + + * src/VERSION: + *** empty log message *** + +2006-10-02 08:26 +0000 dockes (bafb3e762d82) + + * src/sampleconf/mimeconf: + added 2 icons + +2006-10-02 08:25 +0000 dockes (c3d47772ea99) + + * src/qtgui/mtpics/image.png, src/qtgui/mtpics/source.png: new file. + * src/qtgui/mtpics/image.png, src/qtgui/mtpics/source.png: + *** empty log message *** + +2006-10-02 07:50 +0000 dockes (fe9700b5a6fe [RECOLL-1_5_2, RECOLL-1_5_1]) + + * src/INSTALL, src/README, website/BUGS.txt, website/CHANGES.txt, + website/download.html, website/index.html: + *** empty log message *** + +2006-10-02 07:45 +0000 dockes (bc3c93581184) + + * src/VERSION, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts: + 1.5.1 + +2006-09-29 11:43 +0000 dockes (bd51dd85dc0f) + + * src/doc/user/usermanual.sgml: + aspell pass + +2006-09-29 08:26 +0000 dockes (026d0b177533) + + * src/rcldb/rcldb.cpp: + syntabs: remove size limit. Handle overlapping chunks. Make sure we + use only one term per position + +2006-09-29 08:24 +0000 dockes (49342357f800) + + * src/qtgui/reslist.cpp: + reset curPvDoc on setDocSource + +2006-09-29 08:23 +0000 dockes (a9cef42dd219) + + * src/qtgui/uiprefs.ui: + bump up limits on max abstract size parameters + +2006-09-29 07:13 +0000 dockes (7973023d7c1b) + + * src/qtgui/ssearch_w.cpp: + bad/unneeded conversion to utf8 while saving ssearch history would + cause some string sizes in history to double at each program + invocation + +2006-09-28 14:32 +0000 dockes (a5bba26b0ac0) + + * src/qtgui/i18n/recoll_fr.ts: + 1.5 + +2006-09-28 14:31 +0000 dockes (71d5895b7848) + + * src/qtgui/ssearchb.ui: + improved tip + +2006-09-28 14:30 +0000 dockes (903f443a7150) + + * src/doc/user/usermanual.sgml: + reordered the tips + +2006-09-28 11:55 +0000 dockes (3bf818bd1e39) + + * src/qtgui/main.cpp: + debug messages + +2006-09-23 13:32 +0000 dockes (3cf269bf18f0) + + * website/BUGS.txt, website/CHANGES.txt, website/download.html, + website/features.html, website/index.html: + *** empty log message *** + +2006-09-23 13:13 +0000 dockes (06ed627f182d [RECOLL-1_5_0]) + + * src/INSTALL, src/README, src/makesrcdist.sh: + *** empty log message *** + +2006-09-23 13:11 +0000 dockes (0533f47f1c34) + + * src/INSTALL, src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-09-23 13:09 +0000 dockes (9b8fdf62ad07) + + * src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-09-23 07:39 +0000 dockes (33e469ad3a2e) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/preview_w.cpp, src/qtgui/reslist.cpp: + fix file name display in tooltips + +2006-09-23 07:39 +0000 dockes (e47ebb4e22ce) + + * src/internfile/mh_mail.cpp: + fix newlines + +2006-09-23 07:21 +0000 dockes (b5b530ea2ec9) + + * src/rcldb/rcldb.cpp: + message + +2006-09-22 14:11 +0000 dockes (3ef29a8417c7) + + * src/qtgui/i18n/recoll_fr.ts, src/rcldb/rcldb.cpp: + msg + +2006-09-22 10:46 +0000 dockes (9ade76cc0df5) + + * src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts, src/qtgui/uiprefs_w.cpp: + messages + +2006-09-22 08:19 +0000 dockes (c228a1515468) + + * src/qtgui/recoll.pro.in: + *** empty log message *** + +2006-09-22 07:51 +0000 dockes (df858f3508f4) + + * src/qtgui/recoll.pro.in: + names cleanup + +2006-09-22 07:42 +0000 dockes (de54384ab321) + + * src/utils/mimeparse.h: + comment + +2006-09-22 07:41 +0000 dockes (f37052248b5b) + + * src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts, src/qtgui/rclmain.ui, + src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h: new file. + * src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, src/qtgui/recoll_fr.ts, + src/qtgui/recoll_ru.ts, src/qtgui/recoll_uk.ts, + src/qtgui/recollmain.ui: deleted file. + * src/qtgui/i18n/recoll_fr.ts, src/qtgui/i18n/recoll_ru.ts, + src/qtgui/i18n/recoll_uk.ts, src/qtgui/main.cpp, + src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, src/qtgui/rclmain.ui, + src/qtgui/rclmain_w.cpp, src/qtgui/rclmain_w.h, + src/qtgui/recoll_fr.ts, src/qtgui/recoll_ru.ts, + src/qtgui/recoll_uk.ts, src/qtgui/recollmain.ui: + names cleanup: rclmain, translations + +2006-09-22 07:38 +0000 dockes (c17bf757689b) + + * src/recollinstall.in: + names cleanup: translations + +2006-09-22 07:29 +0000 dockes (2d749704a22b) + + * src/qtgui/reslist.cpp, src/qtgui/reslist.h: new file. + * src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h: deleted file. + * src/qtgui/rclmain.cpp, src/qtgui/rclreslist.cpp, + src/qtgui/rclreslist.h, src/qtgui/recollmain.ui, + src/qtgui/reslist.cpp, src/qtgui/reslist.h: + names cleanup: reslist + +2006-09-22 07:22 +0000 dockes (cd9f046bf5e3) + + * src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h: + clarified preview paragraph coloring in reslist + +2006-09-22 07:19 +0000 dockes (c700f9f95168) + + * src/internfile/mh_mail.cpp: + clarified depth processing and increased limit + +2006-09-21 12:56 +0000 dockes (334ef2914129) + + * src/qtgui/preview_w.cpp, src/qtgui/preview_w.h, + src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, + src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h: + synchronize preview tab and colored paragraph in result list + +2006-09-21 09:37 +0000 dockes (43c279d4d112) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/rclmain.cpp, + src/qtgui/rclmain.h, src/qtgui/sort_w.cpp, src/qtgui/sort_w.h, + src/query/sortseq.cpp, src/query/sortseq.h: + remember sort criteria + +2006-09-21 05:59 +0000 dockes (e5e9c1ffa44c) + + * src/internfile/myhtmlparse.cpp: + dont throw away text even if html is weird + +2006-09-21 05:59 +0000 dockes (4e99ebec009f) + + * src/common/textsplit.cpp: + 132.jpg was not split + +2006-09-21 05:57 +0000 dockes (3bc572456a49) + + * src/common/Makefile, src/utils/Makefile: + *** empty log message *** + +2006-09-20 06:21 +0000 dockes (5829221e8612) + + * src/rcldb/stemdb.cpp: + comments + +2006-09-19 14:30 +0000 dockes (598f2c534c4c) + + * src/rcldb/stemdb.cpp: + Stems with unique parent must be in db too so that one can search on + stem (which is not a term) + +2006-09-19 14:30 +0000 dockes (98cd92c958bd) + + * src/internfile/mh_mail.cpp, src/internfile/mh_mail.h: + walk the full mime tree instead of staying at level 1 + +2006-09-19 14:19 +0000 dockes (12fcb57186c2) + + * src/configure, src/configure.ac: + *** empty log message *** + +2006-09-19 14:19 +0000 dockes (88bbc8f18b9e) + + * src/utils/mimeparse.cpp: + disable date debug msgs + +2006-09-19 14:18 +0000 dockes (a0016b0e9969) + + * src/query/xadump.cpp: + add option to dump a recoll stemdb + +2006-09-18 12:17 +0000 dockes (e662e0bbe85e) + + * src/README: + *** empty log message *** + +2006-09-15 16:50 +0000 dockes (315f1c1d3dd3) + + * src/VERSION, src/doc/user/usermanual.sgml, + src/internfile/mh_mail.cpp, src/utils/mimeparse.cpp, + src/utils/mimeparse.h: + Use own code to parse rfc822 dates, strptime() cant do + +2006-09-15 16:49 +0000 dockes (ca133771bc5b) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/recoll.pro.in, src/qtgui/uiprefs.ui, + src/qtgui/uiprefs_w.cpp: + small typo fixes + +2006-09-15 12:36 +0000 dockes (47354227e577) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-09-14 07:13 +0000 dockes (b717321f9de4 [RECOLL-1_4_4]) + + * *** empty log message *** + +2006-09-14 07:13 +0000 dockes (919e6e0dfc56) + + * website/BUGS.txt, website/CHANGES.txt, website/copydocs, + website/credits.html, website/devel.html, website/download.html, + website/features.html, website/index.html, website/pics/index.html, + website/styles/style.css: new file. + * website/BUGS.txt, website/CHANGES.txt, website/copydocs, + website/credits.html, website/devel.html, website/download.html, + website/features.html, website/index.html, website/pics/index.html, + website/styles/style.css: + *** empty log message *** + +2006-09-13 15:31 +0000 dockes (9bd2431eaa66) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/ssearch_w.cpp, src/qtgui/uiprefs.ui, + src/qtgui/uiprefs_w.cpp: + autophrase parameter + +2006-09-13 14:57 +0000 dockes (0d952f522055) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/rclreslist.cpp, src/query/docseq.cpp, src/query/docseq.h: + colorize search terms in abstracts + +2006-09-13 13:53 +0000 dockes (5980807171a8) + + * src/index/indexer.cpp, src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/main.cpp, src/qtgui/rclmain.cpp, src/qtgui/ssearch_w.cpp, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h, src/sampleconf/recoll.conf.in: + make constant lengths for abstracts config params + +2006-09-13 08:13 +0000 dockes (6e43869ceb61) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/advsearch_w.h, src/qtgui/guiutils.cpp, + src/qtgui/guiutils.h, src/qtgui/main.cpp, src/qtgui/rclmain.cpp, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs_w.cpp: + add feature to save asearch ignored file types as startup default + +2006-09-12 10:11 +0000 dockes (9b323c436beb) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/preview_w.cpp, src/qtgui/preview_w.h, + src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, + src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h, + src/qtgui/ssearch_w.cpp, src/qtgui/ssearchb.ui: + allow paging through results inside a preview window with shift-up + shift-down + +2006-09-11 14:22 +0000 dockes (f0dd93428e23) + + * src/doc/user/usermanual.sgml, src/qtgui/advsearch.ui: + try to make clearer that adv search fields will accept phrases as + well as single words + +2006-09-11 12:05 +0000 dockes (f455fbc6a42a) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch_w.cpp, + src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, + src/qtgui/ssearch_w.cpp, src/qtgui/ssearchb.ui, + src/query/history.cpp, src/query/history.h: + remember history of restrict subdirs in adv search + +2006-09-11 09:08 +0000 dockes (ad274e633ffb) + + * src/qtgui/guiutils.cpp, src/qtgui/main.cpp, src/qtgui/rclmain.cpp, + src/qtgui/rclmain.h, src/qtgui/recoll.h, src/qtgui/uiprefs.ui, + src/query/docseq.h, src/query/history.cpp, src/query/history.h: + use the (should be renamed) history file to store external databases + lists + +2006-09-11 07:10 +0000 dockes (6cb09384f54a) + + * src/qtgui/ssearch_w.cpp, src/qtgui/ssearchb.ui: + maintain ssearches listbox in mru order + +2006-09-11 06:58 +0000 dockes (b62d0be5650e) + + * src/qtgui/advsearch.ui, src/qtgui/sort.ui, src/qtgui/uiprefs.ui: + ensure dialogs are sized according to font size + +2006-09-08 09:02 +0000 dockes (a5a31c9b0a37) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/common/rclinit.cpp, src/common/rclinit.h, src/doc/man/recoll.1, + src/doc/man/recoll.conf.5, src/doc/man/recollindex.1, + src/doc/user/usermanual.sgml, src/index/recollindex.cpp, + src/qtgui/guiutils.cpp, src/qtgui/main.cpp: + Add -c option to recoll and recollindex + +2006-09-08 08:51 +0000 dockes (315e0865ec26) + + * src/sampleconf/recoll.conf.in: + The dbdir default value is now relative to the cnf dir + +2006-09-06 09:50 +0000 dockes (e696d98fe7fe) + + * src/qtgui/uiprefs_w.cpp: + Used to reset the buildAbstract replaceAbstract options because of + setDown instead of setChecked + +2006-09-06 09:14 +0000 dockes (0dedd735c86e) + + * src/utils/mimeparse.cpp, src/utils/mimeparse.h: + implement rfc2231 decoding for mime parameter values + +2006-09-05 17:09 +0000 dockes (95fd6b3a5b9a) + + * src/internfile/mh_mail.cpp: + let mimeparse handle decoding or param values + +2006-09-05 09:52 +0000 dockes (44182523e711) + + * src/filters/rclppt, src/filters/rclxls: new file. + * src/filters/rclppt, src/filters/rclxls, src/sampleconf/mimeconf, + src/sampleconf/mimemap: + added support for ppt and xls via catdoc + +2006-09-05 08:05 +0000 dockes (587719349228) + + * src/internfile/mh_mail.cpp, src/internfile/mh_mail.h: + index and display attachment file names + +2006-09-05 08:04 +0000 dockes (6f8b09a74d14) + + * src/utils/mimeparse.cpp, src/utils/mimeparse.h: + comments only + +2006-09-04 15:13 +0000 dockes (0f11e18480b2) + + * src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h, + src/qtgui/preview.ui, src/qtgui/preview.ui.h, + src/qtgui/preview_w.cpp, src/qtgui/preview_w.h, + src/qtgui/sort_w.cpp, src/qtgui/sort_w.h, src/qtgui/ssearch_w.cpp, + src/qtgui/ssearch_w.h, src/qtgui/uiprefs_w.cpp, + src/qtgui/uiprefs_w.h: new file. + * src/qtgui/preview/preview.pro, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/preview/pvmain.cpp: + deleted file. + * src/qtgui/advsearch.ui, src/qtgui/advsearch.ui.h, + src/qtgui/advsearch_w.cpp, src/qtgui/advsearch_w.h, + src/qtgui/guiutils.cpp, src/qtgui/main.cpp, src/qtgui/preview.ui, + src/qtgui/preview.ui.h, src/qtgui/preview/preview.pro, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/preview/pvmain.cpp, src/qtgui/preview_w.cpp, + src/qtgui/preview_w.h, src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, + src/qtgui/recoll.pro.in, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/qtgui/sort.ui, src/qtgui/sort.ui.h, + src/qtgui/sort_w.cpp, src/qtgui/sort_w.h, src/qtgui/ssearch_w.cpp, + src/qtgui/ssearch_w.h, src/qtgui/ssearchb.ui, + src/qtgui/ssearchb.ui.h, src/qtgui/uiprefs.ui, + src/qtgui/uiprefs.ui.h, src/qtgui/uiprefs_w.cpp, + src/qtgui/uiprefs_w.h: + mostly cosmetic changes to prepare for a future qt4 port: better + separate form design from code + +2006-06-29 11:05 +0000 dockes (8f28af2cb548) + + * src/qt4gui/recollmain.ui: + *** empty log message *** + +2006-06-24 09:56 +0000 dockes (fb2180e4d577) + + * src/qt4gui/recollmain.ui: + qt4 cleanup: merged back rclmainbase and rclmain + +2006-06-24 07:40 +0000 dockes (e1b5ffd88b25) + + * src/Makefile.in, src/VERSION, src/configure, src/configure.ac, + src/doc/user/usermanual.sgml, src/qt4gui/recoll.pro.in, + src/qt4gui/recollmain.ui, src/recollinstall.in: + more qt4, unfinished + +2006-06-23 08:07 +0000 dockes (46a46e406504) + + * src/qt4gui/recoll.pro.in, src/qt4gui/recollmain.ui: new file. + * src/qt4gui/recoll.pro.in, src/qt4gui/recollmain.ui: + added qt4gui code from Gennadi Sushko + +2006-05-22 07:04 +0000 dockes (2663a50d4760) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo: + 1.4.3 + +2006-05-09 10:15 +0000 dockes (c9a62f0cb289) + + * src/rcldb/rcldb.cpp: + perform stem expansion using all active dbs + +2006-05-09 07:56 +0000 dockes (29feec461985) + + * src/qtgui/preview/preview.ui.h, src/qtgui/rclreslist.cpp: + esc quits preview + prev/next links + +2006-05-08 07:08 +0000 dockes (185da0be6900) + + * src/recollinstall.in: + install icon + +2006-05-08 07:08 +0000 dockes (7dbebc260389) + + * src/qtgui/rclreslist.cpp: + *** empty log message *** + +2006-05-07 14:18 +0000 dockes (2f273f645a91) + + * packaging/rpm/recoll.spec: + 1.4.3 + +2006-05-07 14:18 +0000 dockes (16b38a704d8e) + + * packaging/rpm/recoll.spec, packaging/rpm/recollmdk.spec: + 1.3.3 + +2006-05-07 14:10 +0000 dockes (4ab20caea142 [RECOLL-1_4_3]) + + * src/VERSION: + Release 1.4.3 + +2006-05-06 17:25 +0000 dockes (e7b4fd0f97fa) + + * src/recoll.png, src/recoll.xcf: new file. + * src/qtgui/recoll.pro.in, src/recoll.png, src/recoll.xcf: + *** empty log message *** + +2006-05-06 17:24 +0000 dockes (aae37ad598a9) + + * src/qtgui/recoll_ru.ts, src/qtgui/recoll_uk.ts: + new from michael + +2006-05-02 09:49 +0000 dockes (fb5bb4665925 [RECOLL-1_4_2]) + + * src/qtgui/guiutils.cpp, src/rcldb/stemdb.cpp, src/unac/unac.c: + more fbsd4 tweaks: Release 1.4.2 + +2006-04-30 07:44 +0000 dockes (d686e45d4b5e) + + * src/rcldb/rcldb.cpp: + fbsd4 tweaks + +2006-04-30 07:39 +0000 dockes (b889e57b87d6) + + * src/VERSION, src/index/indexer.cpp, src/index/indexer.h, + src/lib/Makefile, src/lib/mkMake: + fbsd4 tweaks + +2006-04-30 07:26 +0000 dockes (72f2881955d1 [RECOLL-1_4_1]) + + * src/Makefile.in, src/README: + *** empty log message *** + +2006-04-30 07:23 +0000 dockes (172a9e09b77c) + + * src/Makefile.in: + *** empty log message *** + +2006-04-30 07:20 +0000 dockes (7be76a62e017) + + * src/qtgui/recoll_fr.ts, src/qtgui/recoll_ru.ts, + src/qtgui/recoll_uk.ts: + lupdate+french + +2006-04-28 07:54 +0000 dockes (5b44017502c3) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/index/indexer.cpp, src/index/recollindex.cpp, + src/kde/kioslave/recoll/kio_recoll.cpp, src/qtgui/main.cpp, + src/query/qtry.cpp: + centralize dbdir computation in rclconfig+cat with conffdir if not + absolute + +2006-04-28 07:23 +0000 dockes (436f58f83459) + + * src/utils/transcode.cpp: + change debug log trace + +2006-04-27 09:23 +0000 dockes (3df68e37cdd9) + + * src/doc/user/usermanual.sgml, src/qtgui/guiutils.cpp, + src/qtgui/guiutils.h, src/qtgui/rclmain.cpp, src/qtgui/ssearchb.ui, + src/qtgui/ssearchb.ui.h: + make ssearch a combobox + +2006-04-27 06:12 +0000 dockes (e7c0f6cd73f0) + + * src/configure, src/configure.ac, src/lib/Makefile, src/lib/mkMake: + fix pb with .deps not existing + +2006-04-27 06:12 +0000 dockes (83e1c6a16ca6) + + * src/qtgui/preview/preview.ui.h, src/qtgui/rclmain.cpp, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + use getmatchingterms instead of getqueryterms for highlighting etc. + in preview + +2006-04-26 11:51 +0000 dockes (fa1cc55f05e9) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-04-26 11:29 +0000 dockes (d92273eb3274) + + * src/qtgui/rclmain.cpp, src/qtgui/rclreslist.cpp, + src/qtgui/rclreslist.h: + dblclck in reslist adds to search lineedit + +2006-04-25 09:59 +0000 dockes (16f32a4eda4c) + + * src/index/indexer.cpp, src/rcldb/rcldb.cpp: + new way for doc unique terms: only path for monodoc, only path+ipath + for doc inside multidoc, add pseudo-doc for file itself + +2006-04-25 08:17 +0000 dockes (4c947b29c23c) + + * src/common/textsplit.cpp, src/rcldb/rcldb.cpp: + fixed small glitch in abstract text splitting + +2006-04-23 13:37 +0000 dockes (ea8caddeb344) + + * src/lib/mkMake: new file. + * src/lib/mkMake: + *** empty log message *** + +2006-04-22 06:27 +0000 dockes (1b0dd24cad31) + + * src/qtgui/main.cpp, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/rclmain.cpp, + src/qtgui/rclmain.h, src/qtgui/rclreslist.cpp, + src/qtgui/rclreslist.h, src/qtgui/ssearchb.ui, + src/qtgui/ssearchb.ui.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/rcldb/searchdata.h: + turn-off abst. build for fname search (no terms) + prototype query + expansion (xapian e-set on chosen doc) + dbl-click in preview adds + term to ssearch + +2006-04-20 09:20 +0000 dockes (4b9c3c7bcb49) + + * src/common/rclconfig.cpp, src/lib/Makefile, src/qtgui/rclmain.cpp, + src/qtgui/rclmain.h, src/qtgui/rclreslist.cpp, + src/qtgui/rclreslist.h, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/qtgui/sort.ui, src/qtgui/sort.ui.h, + src/qtgui/ssearchb.ui.h, src/query/sortseq.cpp, src/query/sortseq.h: + mode 700 on .recoll. move showquerydetails to rclreslist + +2006-04-19 08:26 +0000 dockes (9ec7ff1d0d53) + + * src/rcldb/searchdata.h: new file. + * src/qtgui/advsearch.ui, src/qtgui/advsearch.ui.h, + src/qtgui/main.cpp, src/qtgui/rclmain.h, src/qtgui/rclreslist.cpp, + src/qtgui/ssearchb.ui, src/qtgui/ssearchb.ui.h, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h, src/rcldb/searchdata.h: + compacted res list + completions in ssearch + additional or field + +2006-04-18 08:53 +0000 dockes (7c4352949f19) + + * src/index/recollindex.cpp, src/lib/Makefile, src/qtgui/advsearch.ui, + src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/rclmain.cpp, + src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h, + src/qtgui/recollmain.ui, src/qtgui/ssearchb.ui, + src/qtgui/ssearchb.ui.h, src/qtgui/uiprefs.ui, + src/qtgui/uiprefs.ui.h: + new libs Makefile+autoSearchOnWS + +2006-04-15 17:15 +0000 dockes (cc178f316e64) + + * src/qtgui/main.cpp, src/query/Makefile: + small aix tweaks + +2006-04-15 16:51 +0000 dockes (356148054ef1) + + * src/mk/AIX: new file. + * src/mk/AIX: + *** empty log message *** + +2006-04-13 09:50 +0000 dockes (fe982a2684e4) + + * src/rcldb/stemdb.cpp, src/rcldb/stemdb.h: new file. + * src/lib/Makefile, src/rcldb/rcldb.cpp, src/rcldb/stemdb.cpp, + src/rcldb/stemdb.h: + extracted stem database from rcldb to make it smaller + +2006-04-12 10:41 +0000 dockes (6892025a5c8e) + + * src/index/indexer.cpp, src/index/indexer.h, src/qtgui/idxthread.cpp, + src/qtgui/idxthread.h, src/qtgui/rclmain.cpp, + src/qtgui/recollmain.ui, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + improve indexing status reporting + +2006-04-12 07:26 +0000 dockes (44ac63815611) + + * src/qtgui/rclmain.cpp, src/rcldb/rcldb.cpp: + Fix history not working after thread index run + +2006-04-11 07:14 +0000 dockes (bd453ed96f6a) + + * src/rcldb/rcldb.cpp: + fix rare case where stem itself was forgotten in list of possible + derivatives + +2006-04-11 06:49 +0000 dockes (dd7f793fdf8e) + + * src/common/textsplit.cpp, src/rcldb/rcldb.cpp, + src/utils/smallut.cpp, src/utils/smallut.h: + comments and moving some util routines out of rcldb.cpp + +2006-04-08 14:00 +0000 dockes (d60e656c348f) + + * src/VERSION, src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-04-07 13:10 +0000 dockes (dc4ff4178b85) + + * src/qtgui/advsearch.ui.h, src/rcldb/rcldb.cpp: + check for and forbid pure negative query + +2006-04-07 13:08 +0000 dockes (7da00eb0c7aa) + + * src/qtgui/guiutils.cpp: + RECOLL_EXTRA_DBS environment variable + +2006-04-07 13:07 +0000 dockes (f040ff3bf0aa) + + * src/doc/user/usermanual.sgml: + use indexing instead of indexation + +2006-04-07 08:51 +0000 dockes (52451e342e49) + + * src/internfile/mh_mail.cpp, src/internfile/mh_mail.h: + comments+conventions + +2006-04-06 17:39 +0000 dockes (7d2906a0371d) + + * packaging/FreeBSD/recoll/pkg-plist: + merge modif from committer + +2006-04-06 14:28 +0000 dockes (52d4a2c2a341) + + * src/sampleconf/recoll.conf.in: + stem only for english by default + +2006-04-06 13:09 +0000 dockes (fa565da09aa7 [RECOLL-1_4_0]) + + * src/VERSION: + 1.4.0 + +2006-04-06 13:08 +0000 dockes (1436c843e74e) + + * src/VERSION, src/rcldb/rcldb.h, src/recollinstall.in: + rpmlint wants 755 for execs + +2006-04-06 12:34 +0000 dockes (687369f6736c) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-04-05 15:41 +0000 dockes (359711d5fbe3) + + * src/recollinstall.in: + fix the installed file perms + +2006-04-05 13:39 +0000 dockes (fdd0d33d5c2e) + + * src/qtgui/guiutils.cpp, src/qtgui/uiprefs.ui, + src/qtgui/uiprefs.ui.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + small fixes for extra db selection + +2006-04-05 13:30 +0000 dockes (3277935457e9) + + * src/doc/user/usermanual.sgml: + small fixes + +2006-04-05 12:50 +0000 dockes (98d8d7d74aee) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/main.cpp, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs.ui.h, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h: + additional search databases + +2006-04-05 06:26 +0000 dockes (e8f1cc7c2bbf) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + simplified class structure + +2006-04-04 16:03 +0000 dockes (ddb66052e3e8 [RECOLL-1_4_0pre1]) + + * src/filters/rcldjvu, src/filters/rclmedia, src/filters/rclps, + src/filters/rclsoff: + handle paths with embedded spaces + +2006-04-04 15:44 +0000 dockes (933f89f10033) + + * src/filters/rcluncomp: + handle paths with embedded spaces + +2006-04-04 13:49 +0000 dockes (dec4932652ae) + + * src/index/indexer.cpp, src/index/indexer.h, + src/index/recollindex.cpp, src/qtgui/idxthread.cpp, + src/qtgui/idxthread.h, src/qtgui/rclmain.cpp: + make indexation more easily cancellable + +2006-04-04 12:37 +0000 dockes (17342a5b330b) + + * src/doc/user/usermanual.sgml, src/index/indexer.cpp, + src/index/indexer.h: + check for symlinks in the topdirs list. Generate diags in + confIndexer + +2006-04-04 10:38 +0000 dockes (ec632eb29364) + + * src/qtgui/guiutils.cpp, src/qtgui/rclreslist.cpp: + setup initial default window size smaller + +2006-04-04 09:36 +0000 dockes (d175998d9270) + + * src/common/unacpp.cpp, src/unac/unac.c: + clarify/clean up mem buffer handling + +2006-04-04 09:35 +0000 dockes (b14f9df37817) + + * src/utils/conftree.h: + fix potential minor memory leak when copying conftrees + +2006-04-04 09:34 +0000 dockes (aaddcbb06c7a) + + * src/index/indexer.cpp, src/index/indexer.h: + cosmetic: add m_ prefix to private vars + +2006-04-04 07:55 +0000 dockes (1bda0dcafd17) + + * src/qtgui/main.cpp, src/qtgui/preview/preview.ui.h, + src/qtgui/rclmain.cpp: + Get things to compile with QT_NO_STL + +2006-04-03 14:16 +0000 dockes (4957b439000e) + + * packaging/FreeBSD/recoll/Makefile: + add mods from port tree + +2006-04-03 12:59 +0000 dockes (62a51f626e46) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo: + *** empty log message *** + +2006-04-03 11:43 +0000 dockes (0449d2ba4099 [RECOLL-1_3_3]) + + * src/VERSION: + 1.3.3 + +2006-04-03 11:43 +0000 dockes (6b54e368d2d1) + + * src/common/rclconfig.cpp: + small port fixes for fbsd4 and solaris + +2006-04-03 09:42 +0000 dockes (cd9fe4976fae) + + * src/utils/execmd.cpp: + warning + +2006-04-01 21:02 +0000 dockes (eef792b97ce8 [RECOLL-1_3_2]) + + * src/VERSION, src/qtgui/rclmain.cpp: + limit max length of displayed query details. 1.3.2 + +2006-04-01 09:15 +0000 dockes (315da01fb1a5 [RECOLL-1_3_1]) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-04-01 09:15 +0000 dockes (e9f0a85fc18e) + + * src/INSTALL, src/README, src/qtgui/rclreslist.cpp, + src/qtgui/ssearchb.ui: + updated INSTALL+README. Fix tab focus in main window + +2006-04-01 08:07 +0000 dockes (916faf93fb66) + + * src/qtgui/rclmain.cpp: + urlencode file name before executing ext app with url param + +2006-04-01 07:48 +0000 dockes (adbde9cd60b9) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + plist: + 1.3.1 + +2006-04-01 07:34 +0000 dockes (4cd3e4e4074c) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap: + Allow ext edit for c/c++ files. 1.3.1 2? + +2006-03-31 17:19 +0000 dockes (35db6f17bdd8) + + * src/VERSION, src/qtgui/rclmain.cpp, src/qtgui/rclreslist.cpp, + src/qtgui/recoll_ru.ts, src/qtgui/recoll_uk.ts: + fixed reslist header charset issues. 1.3.1 first + +2006-03-31 09:02 +0000 dockes (ae3d9c9deb6d) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-03-31 07:51 +0000 dockes (0fccf51c6905 [RECOLL-1_3_1pre3]) + + * src/qtgui/recoll_uk.ts: new file. + * src/qtgui/recoll_uk.ts: + *** empty log message *** + +2006-03-30 13:00 +0000 dockes (b41828dda0ac) + + * src/common/Makefile: + cleanup rclconfig + +2006-03-30 10:31 +0000 dockes (afbdbc31ff1c) + + * src/sampleconf/recoll.conf.in: + dont set defaultcharset to 8859-1: will let nls info be used + +2006-03-30 10:31 +0000 dockes (582fa2a09db3) + + * src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-03-30 08:19 +0000 dockes (89efa1c78c3c [RECOLL-1_3_1pre2]) + + * src/qtgui/recoll_fr.ts, src/qtgui/recoll_ru.ts: + lupdate + +2006-03-30 07:54 +0000 dockes (0b236faa0b9d) + + * src/qtgui/advsearch.ui: + cleaned up layout + +2006-03-29 17:31 +0000 dockes (7cb115f5789c) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h, src/qtgui/main.cpp, + src/qtgui/ssearchb.ui, src/qtgui/ssearchb.ui.h: + gui: replaced checkboxes for all/filename in simple search with + droplist + +2006-03-29 13:08 +0000 dockes (ce199bb02759) + + * src/VERSION, src/common/Makefile, src/common/rclconfig.cpp, + src/common/rclconfig.h, src/internfile/mimehandler.cpp, + src/internfile/mimehandler.h, src/qtgui/rclreslist.cpp, + src/sampleconf/mimeconf, src/sampleconf/mimemap: + result list: show preview and edit links only when they can be used + +2006-03-29 11:18 +0000 dockes (5f22b93705b4) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/common/rclinit.cpp, src/index/indexer.cpp, + src/qtgui/preview/preview.ui.h, src/qtgui/rclreslist.cpp, + src/qtgui/rclreslist.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/utils/pathut.cpp, src/utils/pathut.h, src/utils/transcode.cpp, + src/utils/transcode.h: + try to better handle non-ascii file names + +2006-03-28 12:49 +0000 dockes (a081a1b65de1) + + * src/doc/man/recoll.conf.5, src/doc/user/usermanual.sgml, + src/qtgui/recoll.pro.in, src/recollinstall.in, + src/sampleconf/recoll.conf.in: + 1.3.1pre1 + +2006-03-28 12:18 +0000 dockes (7429c22d162b) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-03-28 09:38 +0000 dockes (25e1ed25acc5) + + * src/filters/rclmedia, src/qtgui/mtpics/sownd.png: new file. + * src/filters/rclmedia, src/qtgui/mtpics/sownd.png, + src/sampleconf/mimeconf, src/sampleconf/mimemap: + filter for indexing mp3 tags + +2006-03-28 09:36 +0000 dockes (fb852147db29) + + * src/internfile/mh_unknown.h: new file. + * src/internfile/mh_unknown.h: + added code to specifically index/search file names + +2006-03-22 16:24 +0000 dockes (4467274ce405) + + * src/index/indexer.cpp, src/index/indexer.h, src/qtgui/idxthread.cpp, + src/qtgui/idxthread.h, src/qtgui/rclmain.cpp, + src/qtgui/recollmain.ui: + show current filename as feedback during indexation + +2006-03-22 14:25 +0000 dockes (5dae5f8a140d) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/utils/conftree.cpp, src/utils/conftree.h: + Replace user config with central values + override + +2006-03-22 11:17 +0000 dockes (1f04e3bfeb4a) + + * src/qtgui/rclreslist.cpp: + fix size display + +2006-03-21 15:11 +0000 dockes (88d6359d2739) + + * src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h: + implement right click menu in result list + +2006-03-21 13:46 +0000 dockes (56610f5d03b3) + + * src/qtgui/rclmain.cpp, src/qtgui/rclreslist.cpp, + src/qtgui/rclreslist.h: + replaced (double)clicks in the result list with links + +2006-03-21 13:27 +0000 dockes (cc41e73a4f5a) + + * src/qtgui/rclreslist.cpp: + ckpt + +2006-03-21 11:04 +0000 dockes (b1dc67961a45) + + * src/index/mimetype.cpp: + sanity check on file -i return + +2006-03-21 09:15 +0000 dockes (8589c7c01f25) + + * src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h: new file. + * src/qtgui/reslistb.ui, src/qtgui/reslistb.ui.h: deleted file. + * src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, + src/qtgui/rclreslist.cpp, src/qtgui/rclreslist.h, + src/qtgui/recollmain.ui, src/qtgui/reslistb.ui, + src/qtgui/reslistb.ui.h: + reslistb form replaced by object derived from QTextBrowser + +2006-03-20 16:05 +0000 dockes (70c0ec0275a9) + + * src/VERSION, src/index/indexer.cpp, src/internfile/internfile.cpp, + src/internfile/mimehandler.cpp, src/qtgui/advsearch.ui, + src/qtgui/advsearch.ui.h, src/qtgui/ssearchb.ui, + src/qtgui/ssearchb.ui.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + added code to specifically index/search file names + +2006-03-20 15:14 +0000 dockes (86bb2d64fdd9) + + * src/internfile/mh_text.cpp: + get rid of unused temp + +2006-03-20 09:54 +0000 dockes (fea74448199d) + + * src/utils/pathut.h: + comments + +2006-03-20 09:54 +0000 dockes (bf4772fd96ff) + + * src/sampleconf/mimemap: + add # to ignd suffixes + +2006-03-20 09:51 +0000 dockes (218c67bcb769) + + * src/common/rclconfig.cpp, src/common/rclconfig.h: + try to get default charset from LANG if not in config + +2006-03-20 09:50 +0000 dockes (2d633e45c451) + + * src/makestaticdist.sh: + desktop file + +2006-03-16 14:00 +0000 dockes (b45dd89bb177) + + * src/recoll.desktop: new file. + * src/recoll.desktop: + initial version from Michael Shigorin + +2006-03-16 13:49 +0000 dockes (e3e216dfacb6) + + * src/qtgui/recoll_ru.ts: new file. + * src/qtgui/recoll_ru.ts: + initial version from Michael Shigorin + +2006-03-04 10:09 +0000 dockes (983d0984e972 [RECOLL-1_2_3]) + + * src/VERSION, src/doc/user/usermanual.sgml: + 1.2.3 + +2006-02-21 12:57 +0000 dockes (29500b27662b) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-02-21 12:56 +0000 dockes (0bc6bf836dfe) + + * src/Makefile.in, src/configure, src/configure.ac: + ensure Makefile uses same qmake as configure + +2006-02-21 12:52 +0000 dockes (9a69d49b1448) + + * src/query/docseq.h, src/query/sortseq.h: + sorted sequence title would never show + +2006-02-07 10:26 +0000 dockes (8881db16fe21) + + * src/qtgui/reslistb.ui.h, src/query/docseq.cpp, src/query/docseq.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + fix problems with doc fetch sequence (have to know where to stop) + +2006-02-07 09:44 +0000 dockes (fbfb30458fc2) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h: + replace computation of term positions in editor text with search for + 1st query term + +2006-02-03 11:47 +0000 dockes (1dbf9bcedfc0) + + * src/filters/rcldvi: + option to use catdvi + +2006-02-03 10:53 +0000 dockes (f219261a580b) + + * src/filters/rcldjvu, src/filters/rcldvi: new file. + * src/filters/rcldjvu, src/filters/rcldvi, src/filters/rclps, + src/sampleconf/mimeconf, src/sampleconf/mimemap: + added dvi and djvu support + +2006-02-02 09:45 +0000 dockes (71a4b9e391e0) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo: + 1.2.2 + +2006-02-02 08:58 +0000 dockes (c2f3b36a7169 [RECOLL-1_2_2]) + + * src/rcldb/rcldb.cpp, src/utils/pathut.cpp: + suppress 2 compilation warnings (one was actual 64bits bug but + inocuous + +2006-02-02 08:35 +0000 dockes (4d473bd0d9a8) + + * src/Makefile.in, src/VERSION, src/configure, src/configure.ac, + src/qtgui/main.cpp, src/qtgui/preview/preview.ui.h: + fix small cc glitches: qt3.1, xapian-config + +2006-02-01 14:34 +0000 dockes (a4deac6ede77 [RECOLL-1_2_1]) + + * src/qtgui/guiutils.cpp, src/qtgui/reslistb.ui.h: + fbsd4 cc + +2006-02-01 14:27 +0000 dockes (b005945089dc) + + * src/VERSION: + *** empty log message *** + +2006-02-01 14:18 +0000 dockes (1f6da4b2f946) + + * src/common/textsplit.cpp: + use string::erase() not clear() + +2006-02-01 09:00 +0000 dockes (09b3a24a6173 [RECOLL-1_2_0]) + + * src/recollinstall.in: + *** empty log message *** + +2006-02-01 08:19 +0000 dockes (bef8d87339d0) + + * packaging/rpm/recoll.spec: + *** empty log message *** + +2006-02-01 07:14 +0000 dockes (5c4deca7b177) + + * src/excludefile, src/utils/base64.cpp: + *** empty log message *** + +2006-02-01 07:12 +0000 dockes (77e021af3fa0) + + * src/INSTALL, src/README, src/doc/user/usermanual.sgml, + src/excludefile, src/makesrcdist.sh: + *** empty log message *** + +2006-01-31 11:39 +0000 dockes (73f22e91d844) + + * src/qtgui/reslistb.ui.h: + Clicking on "No results found" will also display the expanded query + +2006-01-31 11:39 +0000 dockes (c225bd05e9c1) + + * src/qtgui/recoll.h: + close/reopen db by default: let us see results of recollindex -i + +2006-01-30 12:51 +0000 dockes (cd40d5627d38) + + * src/qtgui/recoll_fr.ts: + *** empty log message *** + +2006-01-30 11:15 +0000 dockes (962649c706ef) + + * src/common/rclconfig.h, src/common/rclinit.h, + src/common/textsplit.h, src/common/unacpp.h, src/common/uproplist.h, + src/index/csguess.h, src/index/indexer.h, src/index/mimetype.h, + src/internfile/htmlparse.cpp, src/internfile/htmlparse.h, + src/internfile/indextext.h, src/internfile/internfile.h, + src/internfile/mh_exec.h, src/internfile/mh_html.h, + src/internfile/mh_mail.h, src/internfile/mh_text.h, + src/internfile/mimehandler.h, src/internfile/myhtmlparse.cpp, + src/internfile/myhtmlparse.h, src/qtgui/advsearch.ui.h, + src/qtgui/guiutils.h, src/qtgui/idxthread.h, + src/qtgui/plaintorich.h, src/qtgui/preview/preview.ui.h, + src/qtgui/rclmain.h, src/qtgui/recoll.h, src/qtgui/recollmain.ui.h, + src/qtgui/reslistb.ui.h, src/qtgui/sort.ui.h, + src/qtgui/ssearchb.ui.h, src/qtgui/uiprefs.ui.h, src/query/docseq.h, + src/query/history.h, src/query/sortseq.h, src/rcldb/pathhash.h, + src/rcldb/rcldb.h, src/utils/base64.h, src/utils/cancelcheck.h, + src/utils/conftree.h, src/utils/copyfile.h, src/utils/debuglog.h, + src/utils/execmd.h, src/utils/fstreewalk.h, src/utils/idfile.h, + src/utils/mimeparse.h, src/utils/pathut.h, src/utils/readfile.h, + src/utils/smallut.h, src/utils/transcode.h, src/utils/utf8iter.h, + src/utils/wipedir.h: + *** empty log message *** + +2006-01-30 10:01 +0000 dockes (f683194d38a4) + + * src/qtgui/preview/preview.ui.h: + dont highlight terms in very big docs: too slow + +2006-01-30 09:32 +0000 dockes (dc8cbf051f54) + + * src/mk/localdefs.in: + -O2 + +2006-01-30 09:28 +0000 dockes (af56f00261eb) + + * src/qtgui/guiutils.cpp, src/qtgui/main.cpp, src/qtgui/rclmain.cpp, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs.ui.h: + help browser selection in prefs + +2006-01-30 09:28 +0000 dockes (df275d18bee6) + + * src/utils/execmd.cpp: + *** empty log message *** + +2006-01-30 09:28 +0000 dockes (6d7b08c3bba0) + + * src/common/textsplit.cpp: + moved span cleanup where it belonged + +2006-01-28 15:36 +0000 dockes (b65e6344a9e4) + + * src/common/textsplit.cpp, src/common/textsplit.h: + *** empty log message *** + +2006-01-28 10:23 +0000 dockes (507b05e72779) + + * src/common/textsplit.cpp, src/common/textsplit.h, src/configure, + src/configure.ac, src/query/xadump.cpp, src/utils/utf8iter.h: + more textsplit tweaking + +2006-01-27 13:43 +0000 dockes (8ed38cba7965) + + * src/utils/cancelcheck.h: new file. + * src/utils/cancelcheck.h: + *** empty log message *** + +2006-01-27 13:43 +0000 dockes (fa13d8fe2fc9) + + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h: new file. + * src/qtgui/guiutils.cpp, src/qtgui/guiutils.h: + extracted code from main and others + +2006-01-27 13:42 +0000 dockes (96572eee9528) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/rclmain.cpp: + implement cancellation in preview loading + +2006-01-27 13:38 +0000 dockes (3ad2458e654a) + + * src/internfile/myhtmlparse.cpp: + strip whitespace and newlines (as the original version), except in + pre tags + +2006-01-27 13:37 +0000 dockes (80dbbac5b981) + + * src/filters/rcldoc, src/filters/rclpdf, src/filters/rclps, + src/filters/rclsoff: + fix to output
when needed + other misc pbs + +2006-01-27 13:34 +0000 dockes (538235c10cd7) + + * src/rcldb/rcldb.cpp: + define some constants and increase abstract context width + +2006-01-27 11:25 +0000 dockes (1d381cea9ec3) + + * src/internfile/htmlparse.cpp: + missing amp entity translation + +2006-01-26 17:59 +0000 dockes (15b82e0f9689) + + * src/internfile/mh_exec.cpp: + check for cancellation + +2006-01-26 17:59 +0000 dockes (81f5d1264b7d) + + * src/utils/execmd.cpp, src/utils/execmd.h: + also test cancel on select timeout + +2006-01-26 17:44 +0000 dockes (77efdf7b7e93) + + * src/utils/execmd.cpp, src/utils/execmd.h: + make execCmd exception-safe + +2006-01-26 14:02 +0000 dockes (ffd1ec38fb9f) + + * src/qtgui/main.cpp, src/qtgui/rclmain.cpp, src/qtgui/recoll.h, + src/qtgui/uiprefs.ui, src/qtgui/uiprefs.ui.h: + abstract params + +2006-01-26 14:01 +0000 dockes (c34965eaaa05) + + * src/qtgui/reslistb.ui, src/qtgui/reslistb.ui.h: + abstracts + doc sizes + +2006-01-26 12:30 +0000 dockes (c3718d2ceeae) + + * src/query/docseq.cpp: + let the db do whats needed to get a result count + +2006-01-26 12:29 +0000 dockes (bc0a233de310) + + * src/utils/smallut.cpp, src/utils/smallut.h: + chrono + +2006-01-26 12:28 +0000 dockes (69be9a0edd98) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + abstract building from position data + +2006-01-26 07:03 +0000 dockes (2c5403cbdbc1) + + * src/qtgui/recoll.pro: deleted file. + * src/qtgui/recoll.pro: + replaced by recoll.pro.in + +2006-01-26 07:03 +0000 dockes (7a03d26ad54d) + + * src/qtgui/recoll.pro, src/qtgui/recoll.pro.in, src/utils/smallut.h: + *** empty log message *** + +2006-01-26 07:02 +0000 dockes (de94ebf3cb51) + + * src/index/indexer.cpp: + pass size info to db.add + +2006-01-25 08:39 +0000 dockes (fc5ab7249caa) + + * src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h: + reenable stripping newlines + +2006-01-25 08:09 +0000 dockes (1ce613930379) + + * src/query/Makefile, src/query/xadump.cpp: + xadump improvements + +2006-01-24 12:22 +0000 dockes (6a16d14c076e) + + * src/qtgui/rclmain.cpp: + fix signal type + +2006-01-24 12:22 +0000 dockes (322a0f010b59) + + * src/utils/execmd.cpp, src/utils/execmd.h: + add feedback and possible cancellation + +2006-01-23 17:21 +0000 dockes (d16bcca9bc1e) + + * src/qtgui/images/d_nextpage.png, src/qtgui/images/d_prevpage.png: + new file. + * src/qtgui/images/d_nextpage.png, src/qtgui/images/d_prevpage.png, + src/qtgui/rclmain.cpp, src/qtgui/recoll.pro, + src/qtgui/recollmain.ui: + slightly improved the icon situation + +2006-01-23 16:52 +0000 dockes (a51e0cfa77db) + + * src/qtgui/images/asearch.png, src/qtgui/images/history.png, + src/qtgui/images/nextpage.png, src/qtgui/images/prevpage.png, + src/qtgui/images/sortparms.png: + *** empty log message *** + +2006-01-23 15:43 +0000 dockes (907a44f71ddc) + + * src/qtgui/images/editcopy, src/qtgui/images/editcut, + src/qtgui/images/editpaste, src/qtgui/images/filenew, + src/qtgui/images/fileopen, src/qtgui/images/filesave, + src/qtgui/images/print, src/qtgui/images/redo, + src/qtgui/images/searchfind, src/qtgui/images/undo: deleted file. + * src/qtgui/images/editcopy, src/qtgui/images/editcut, + src/qtgui/images/editpaste, src/qtgui/images/filenew, + src/qtgui/images/fileopen, src/qtgui/images/filesave, + src/qtgui/images/print, src/qtgui/images/redo, + src/qtgui/images/searchfind, src/qtgui/images/undo: + *** empty log message *** + +2006-01-23 13:32 +0000 dockes (b27df12a0147) + + * src/common/rclconfig.cpp, src/common/rclinit.cpp, + src/common/textsplit.cpp, src/common/unacpp.cpp, + src/index/csguess.cpp, src/index/indexer.cpp, + src/index/mimetype.cpp, src/index/recollindex.cpp, + src/internfile/internfile.cpp, src/internfile/mh_exec.cpp, + src/internfile/mh_mail.cpp, src/internfile/mh_text.cpp, + src/internfile/mimehandler.cpp, src/query/docseq.cpp, + src/query/history.cpp, src/query/qtry.cpp, src/query/qxtry.cpp, + src/query/sortseq.cpp, src/query/xadump.cpp, src/rcldb/pathhash.cpp, + src/rcldb/rcldb.cpp, src/utils/base64.cpp, src/utils/conftree.cpp, + src/utils/copyfile.cpp, src/utils/debuglog.cpp, + src/utils/execmd.cpp, src/utils/fstreewalk.cpp, + src/utils/idfile.cpp, src/utils/mimeparse.cpp, src/utils/pathut.cpp, + src/utils/readfile.cpp, src/utils/smallut.cpp, + src/utils/transcode.cpp, src/utils/utf8iter.cpp, + src/utils/wipedir.cpp: + reference to GPL in all .cpp files + +2006-01-23 13:32 +0000 dockes (c2c52e3c568f) + + * src/qtgui/idxthread.cpp, src/qtgui/main.cpp, + src/qtgui/plaintorich.cpp, src/qtgui/rclmain.cpp, + src/qtgui/recoll.h, src/qtgui/recoll.pro, src/qtgui/reslistb.ui.h, + src/qtgui/uiprefs.ui.h: + more refactoring + +2006-01-23 07:15 +0000 dockes (639d2208e231) + + * src/qtgui/rclmain.cpp: + *** empty log message *** + +2006-01-23 07:07 +0000 dockes (29cad268f7ba) + + * src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, src/qtgui/reslistb.ui, + src/qtgui/reslistb.ui.h, src/qtgui/ssearchb.ui.h: + more modularization + +2006-01-22 18:46 +0000 dockes (c329a0d633e1) + + * src/qtgui/recoll.pro.in: new file. + * src/qtgui/main.cpp, src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, + src/qtgui/recoll.pro, src/qtgui/recoll.pro.in, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/qtgui/reslistb.ui, src/qtgui/reslistb.ui.h, + src/qtgui/ssearchb.ui: + extract functionality from main window + +2006-01-22 15:16 +0000 dockes (f8f81a690e3d) + + * src/qtgui/reslistb.ui, src/qtgui/reslistb.ui.h: + *** empty log message *** + +2006-01-22 13:56 +0000 dockes (b62fca0983d3) + + * src/qtgui/reslistb.ui, src/qtgui/reslistb.ui.h, + src/qtgui/ssearchb.ui.h: new file. + * src/qtgui/reslistb.ui, src/qtgui/reslistb.ui.h, + src/qtgui/ssearchb.ui.h: + *** empty log message *** + +2006-01-22 07:41 +0000 dockes (50553b4f8d29 [T1_2]) + + * src/qtgui/ssearchb.ui: + *** empty log message *** + +2006-01-22 07:25 +0000 dockes (f5ecee171cca) + + * src/qtgui/ssearchb.ui: new file. + * src/qtgui/ssearchb.ui: + *** empty log message *** + +2006-01-21 15:36 +0000 dockes (283be80e303b) + + * src/configure: + *** empty log message *** + +2006-01-21 15:36 +0000 dockes (57061cf4c252) + + * src/Makefile.in, src/configure, src/configure.ac, + src/makesrcdist.sh, src/qtgui/recoll.pro: + enable building from inside qtgui/ + +2006-01-21 15:25 +0000 dockes (ce790ab8e905) + + * packaging/rpm/recollmdk.spec: new file. + * packaging/rpm/recollmdk.spec: + *** empty log message *** + +2006-01-21 10:47 +0000 dockes (47b92b35b369) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-01-20 14:58 +0000 dockes (9dfcca9b0073) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/qtgui/main.cpp, src/qtgui/preview/preview.ui.h, + src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, src/qtgui/recoll.h: + qt main program cleanup + +2006-01-20 12:46 +0000 dockes (04782d3c08bb) + + * src/qtgui/rclmain.cpp, src/qtgui/rclmain.h: new file. + * src/qtgui/main.cpp, src/qtgui/rclmain.cpp, src/qtgui/rclmain.h, + src/qtgui/recoll.pro, src/qtgui/recoll_fr.ts, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h: + separated code from design by subclassing recollmain + +2006-01-20 10:01 +0000 dockes (f1c90fc5dd19) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/kde/kioslave/recoll/00README.txt, src/mk/commondefs, + src/mk/localdefs.in, src/qtgui/idxthread.cpp, src/qtgui/idxthread.h, + src/qtgui/main.cpp, src/utils/conftree.h, src/utils/debuglog.h: + cleanup + +2006-01-19 17:11 +0000 dockes (b6465d0ee08c) + + * src/Makefile.in: new file. + * src/Makefile: deleted file. + * src/Makefile, src/Makefile.in, src/common/rclconfig.cpp, + src/common/rclconfig.h, src/configure, src/configure.ac, + src/internfile/internfile.cpp, src/internfile/mh_exec.cpp, + src/mk/localdefs.in, src/qtgui/main.cpp, src/qtgui/recoll.pro, + src/recollinstall.in: + slight config cleanup + +2006-01-19 15:08 +0000 dockes (211c1066ac8f) + + * src/kde/kioslave/recoll/00README.txt: new file. + * src/kde/kioslave/recoll/00README.txt: + end of test, doesnt look very useful + +2006-01-19 14:57 +0000 dockes (302ee688e96a) + + * src/kde/kioslave/recoll/kio_recoll.la: new file. + * src/kde/kioslave/recoll/Makefile, + src/kde/kioslave/recoll/kio_recoll.cpp, + src/kde/kioslave/recoll/kio_recoll.h, + src/kde/kioslave/recoll/kio_recoll.la: + end of initial experimentation + +2006-01-19 12:03 +0000 dockes (ffb549062074) + + * src/utils/Makefile: + *** empty log message *** + +2006-01-19 12:01 +0000 dockes (0e6b7d796f28) + + * packaging/FreeBSD/recoll/Makefile, src/Makefile, src/VERSION, + src/bincimapmime/Makefile, src/common/Makefile, + src/doc/user/usermanual.sgml, src/index/Makefile, + src/kde/kioslave/recoll/Makefile, + src/kde/kioslave/recoll/kio_recoll.cpp, + src/kde/kioslave/recoll/kio_recoll.h, src/lib/Makefile, + src/makestaticdist.sh, src/mk/Darwin, src/mk/FreeBSD, src/mk/Linux, + src/mk/SunOS, src/mk/commondefs, src/mk/localdefs.in, + src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/recollmain.ui.h, src/query/Makefile, src/utils/Makefile, + src/utils/smallut.cpp, src/utils/smallut.h: + misc small mods to help with building kio_recoll + +2006-01-18 13:41 +0000 dockes (ebf94c8fc21c) + + * src/kde/kioslave/recoll/Makefile, + src/kde/kioslave/recoll/kio_recoll.cpp, + src/kde/kioslave/recoll/kio_recoll.h, + src/kde/kioslave/recoll/recoll.protocol: new file. + * src/kde/kioslave/recoll/Makefile, + src/kde/kioslave/recoll/kio_recoll.cpp, + src/kde/kioslave/recoll/kio_recoll.h, + src/kde/kioslave/recoll/recoll.protocol: + *** empty log message *** + +2006-01-17 10:08 +0000 dockes (9784891fd0a7) + + * src/utils/mimeparse.h: + comments and clarification + +2006-01-17 09:31 +0000 dockes (08549e5e4a9e) + + * src/index/indexer.cpp, src/utils/fstreewalk.cpp, + src/utils/fstreewalk.h: + cleanup and comments + +2006-01-14 13:09 +0000 dockes (d7ac146b7dd5) + + * src/configure, src/configure.ac: + do a better search for qt configuration + +2006-01-14 11:48 +0000 dockes (d073ecc93317) + + * src/Makefile, src/configure, src/configure.ac: + do a better search for qt configuration + +2006-01-12 09:29 +0000 dockes (2dfd16f6a9a4 [RECOLL-1_1_0]) + + * src/qtgui/recoll_fr.ts: + *** empty log message *** + +2006-01-12 09:16 +0000 dockes (deb6607d43bf) + + * src/README: + *** empty log message *** + +2006-01-12 09:13 +0000 dockes (7635781b18c5) + + * src/qtgui/recollmain.ui.h, src/rcldb/rcldb.cpp: + handle removed docs in history + +2006-01-11 17:41 +0000 dockes (bd54a740def9) + + * src/qtgui/recollmain.ui.h: + *** empty log message *** + +2006-01-11 15:09 +0000 dockes (108917b10bf3) + + * src/qtgui/uiprefs.ui.h: new file. + * src/qtgui/uiprefs.ui.h: + *** empty log message *** + +2006-01-11 15:08 +0000 dockes (a03b6696412a) + + * src/doc/user/usermanual.sgml, src/index/Makefile, + src/qtgui/recoll_fr.ts, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/query/docseq.h, + src/query/sortseq.cpp, src/query/sortseq.h, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h: + translation of result list title. Show query details when clicking + on header + +2006-01-10 17:46 +0000 dockes (d4cc3428e381) + + * src/recollinstall.in: + *** empty log message *** + +2006-01-10 14:53 +0000 dockes (c873b3133cdd) + + * packaging/rpm/recoll.spec: + *** empty log message *** + +2006-01-10 13:52 +0000 dockes (ab4934e066f9) + + * src/recollinstall.in: + *** empty log message *** + +2006-01-10 13:41 +0000 dockes (23d6e8ae7155) + + * src/recollinstall.in: + *** empty log message *** + +2006-01-10 13:32 +0000 dockes (526cfe52f2e1) + + * src/recollinstall.in: + *** empty log message *** + +2006-01-10 13:27 +0000 dockes (a2f47b62ca03) + + * src/recollinstall.in: + *** empty log message *** + +2006-01-10 13:16 +0000 dockes (72d6ccffea15) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + plist, src/recollinstall.in: + install man pages + +2006-01-10 12:58 +0000 dockes (3a7d0fd4ceb7) + + * src/Makefile, src/common/rclconfig.cpp: + warning + +2006-01-10 12:55 +0000 dockes (aaeb49f89a98) + + * src/rcldb/rcldb.cpp: + include unistd + +2006-01-10 12:06 +0000 dockes (9b804748017f) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-01-10 11:07 +0000 dockes (01e4fe9772b0) + + * src/common/rclconfig.h, src/doc/user/usermanual.sgml, + src/index/recollindex.cpp, src/sampleconf/recoll.conf.in: + doc + got rid of unused defaultlanguage config param + +2006-01-10 09:10 +0000 dockes (34638d9bd009) + + * src/doc/man/recoll.conf.5: new file. + * src/doc/man/recoll.conf.5: + *** empty log message *** + +2006-01-10 08:14 +0000 dockes (a9b485ada811) + + * src/doc/man/recoll.1, src/doc/man/recollindex.1: new file. + * src/doc/man/recoll.1, src/doc/man/recollindex.1: + *** empty log message *** + +2006-01-09 16:53 +0000 dockes (29f37b7888d3) + + * src/excludefile, src/index/indexer.cpp, src/index/indexer.h, + src/index/recollindex.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/utils/Makefile, src/utils/pathut.cpp, src/utils/pathut.h: + allow independant creation / deletion of stem dbs + +2006-01-06 13:55 +0000 dockes (8831260252d9) + + * src/rcldb/rcldb.cpp: + do a better test for a capitalized query term (no stem expand) + +2006-01-06 13:20 +0000 dockes (82e02042773f) + + * src/qtgui/uiprefs.ui: new file. + * src/qtgui/uiprefs.ui: + *** empty log message *** + +2006-01-06 13:19 +0000 dockes (29cdbe2390e4) + + * src/utils/CaseFolding.txt, src/utils/caseconvert.cpp, + src/utils/caseconvert.h, src/utils/gencasefold.sh: deleted file. + * src/lib/Makefile, src/rcldb/rcldb.cpp, src/unac/unac.c, + src/unac/unac.h, src/utils/CaseFolding.txt, src/utils/Makefile, + src/utils/caseconvert.cpp, src/utils/caseconvert.h, + src/utils/gencasefold.sh: + integrated case-folding into unac for better performance + +2006-01-06 13:18 +0000 dockes (7840fc0ec48b) + + * src/common/Makefile, src/common/unacpp.cpp, src/common/unacpp.h, + src/rcldb/rcldb.cpp: + integrated case-folding into unac for better performance + +2006-01-06 13:10 +0000 dockes (15e715082e40) + + * unac/CaseFolding-3.2.0.txt: new file. + * unac/CaseFolding-3.2.0.txt, unac/builder.in, unac/unac.c, + unac/unac.h: + implemented additional case-folding + +2006-01-06 13:08 +0000 dockes (f27aa43e32ef [UNAC_1_7_0]) + + * unac/.version, unac/AUTHORS, unac/COPYING, unac/ChangeLog, + unac/INSTALL, unac/Makefile.am, unac/Makefile.in, unac/NEWS, + unac/README, unac/THANKS, unac/UnicodeData-3.2.0.txt, + unac/acinclude.m4, unac/aclocal.m4, unac/builder.in, + unac/config.guess, unac/config.h.in, unac/config.sub, + unac/configure, unac/configure.ac, unac/depcomp, unac/getopt.c, + unac/getopt.h, unac/install-sh, unac/ltconfig, unac/ltmain.sh, + unac/missing, unac/mkinstalldirs, unac/stamp-h.in, unac/t_unac.in, + unac/unac.3, unac/unac.c, unac/unac.h, unac/unac.pc.in, + unac/unac.spec.in, unac/unaccent.1, unac/unaccent.c, + unac/unactest.c, unac/unactest1.c: new file. + * unac/.version, unac/AUTHORS, unac/COPYING, unac/ChangeLog, + unac/INSTALL, unac/Makefile.am, unac/Makefile.in, unac/NEWS, + unac/README, unac/THANKS, unac/UnicodeData-3.2.0.txt, + unac/acinclude.m4, unac/aclocal.m4, unac/builder.in, + unac/config.guess, unac/config.h.in, unac/config.sub, + unac/configure, unac/configure.ac, unac/depcomp, unac/getopt.c, + unac/getopt.h, unac/install-sh, unac/ltconfig, unac/ltmain.sh, + unac/missing, unac/mkinstalldirs, unac/stamp-h.in, unac/t_unac.in, + unac/unac.3, unac/unac.c, unac/unac.h, unac/unac.pc.in, + unac/unac.spec.in, unac/unaccent.1, unac/unaccent.c, + unac/unactest.c, unac/unactest1.c: + initial import + +2006-01-06 07:59 +0000 dockes (52c86ee701fd) + + * src/index/Makefile, src/qtgui/recoll.pro: + ensure relink for changed lib + +2006-01-05 16:37 +0000 dockes (a2ef019b6308) + + * src/common/unacpp.cpp, src/common/unacpp.h, src/lib/Makefile, + src/rcldb/rcldb.cpp, src/utils/Makefile: + Use proper unicode lowercasing + +2006-01-05 16:16 +0000 dockes (158267ddbcb6) + + * src/utils/CaseFolding.txt, src/utils/caseconvert.cpp, + src/utils/caseconvert.h, src/utils/gencasefold.sh: new file. + * src/utils/CaseFolding.txt, src/utils/caseconvert.cpp, + src/utils/caseconvert.h, src/utils/gencasefold.sh: + *** empty log message *** + +2006-01-05 10:27 +0000 dockes (f1af15efef34) + + * packaging/rpm/recoll.spec: new file. + * packaging/rpm/recoll.spec: + *** empty log message *** + +2006-01-05 10:24 +0000 dockes (55284d2ed66e) + + * src/Makefile, src/recollinstall.in: + install tweaks for rpm compatibility + +2006-01-04 11:33 +0000 dockes (236c587eb180) + + * src/VERSION, src/common/rclconfig.h, src/makesrcdist.sh, + src/qtgui/main.cpp, src/qtgui/recoll.h, src/qtgui/recoll_fr.ts, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/recollinstall.in, src/utils/smallut.cpp, src/utils/smallut.h: + add menu entry to start browser on html doc + +2006-01-04 11:16 +0000 dockes (2075c2a6d71e) + + * src/INSTALL, src/README: + *** empty log message *** + +2006-01-04 11:09 +0000 dockes (9a4cceb219aa) + + * src/doc/user/Makefile, src/doc/user/docbook.css, + src/doc/user/usermanual.sgml: new file. + * src/doc/user/Makefile, src/doc/user/docbook.css, + src/doc/user/usermanual.sgml: + *** empty log message *** + +2006-01-03 11:35 +0000 dockes (188ffc87b7d3) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-12-16 10:08 +0000 dockes (789da9d2380c) + + * src/query/Makefile, src/query/xadump.cpp, src/unac/unac.c, + src/utils/mimeparse.cpp: + 64 bits fixes + +2005-12-16 10:06 +0000 dockes (cf18fa6d2a7b) + + * src/Makefile, src/mk/localdefs.in, src/qtgui/main.cpp, + src/qtgui/recoll.pro, src/recollinstall.in: + get prefix to really work + +2005-12-16 08:00 +0000 dockes (cca6b156e460) + + * src/excludefile: + dont copy localdefs + +2005-12-16 07:58 +0000 dockes (7b20df9408ce) + + * src/mk/localdefs: deleted file. + * src/mk/localdefs: + *** empty log message *** + +2005-12-15 14:39 +0000 dockes (959564d835fd) + + * src/qtgui/main.cpp, src/qtgui/recoll.h, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/sampleconf/recoll.conf.in: + user prefs tweaks. Allow switching stemlang from ui + +2005-12-15 13:41 +0000 dockes (bf3c45bf931d) + + * src/qtgui/main.cpp: + *** empty log message *** + +2005-12-14 16:15 +0000 dockes (229d1902798e) + + * src/qtgui/main.cpp, src/qtgui/recoll.h, src/qtgui/recoll.pro, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h: + user interface preferences settable from ui + +2005-12-14 11:00 +0000 dockes (3e5f6f1c000d) + + * src/index/indexer.cpp, src/index/indexer.h, + src/index/recollindex.cpp, src/internfile/mh_html.cpp, + src/internfile/mh_text.cpp, src/qtgui/preview/preview.ui.h, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/query/Makefile: + allow indexing individual files. Fix pb with preview and charsets + (local defcharset ignored) + +2005-12-13 17:20 +0000 dockes (0895be2b8196) + + * src/qtgui/main.cpp, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h: + add allTerms checkbutton, save state in settings + +2005-12-13 17:20 +0000 dockes (b522d74e613c) + + * src/qtgui/advsearch.ui: + avoid activating random buttons when typing CR... + +2005-12-13 12:43 +0000 dockes (0448daf8c23e) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + descr, packaging/FreeBSD/recoll/pkg-plist, src/common/rclconfig.cpp, + src/doc/prog/Doxyfile, src/doc/prog/Makefile, + src/doc/prog/filters.txt, src/qtgui/main.cpp, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/utils/fstreewalk.cpp, src/utils/pathut.cpp, + src/utils/pathut.h, src/utils/smallut.cpp, src/utils/wipedir.cpp: + pgup/down in result list + +2005-12-08 08:44 +0000 dockes (ec006d171797) + + * src/common/Makefile, src/internfile/htmlparse.cpp, + src/internfile/htmlparse.h, src/internfile/internfile.cpp, + src/internfile/mh_html.cpp, src/internfile/myhtmlparse.cpp, + src/internfile/myhtmlparse.h: + process text from html files without a tag + +2005-12-07 15:41 +0000 dockes (a44bf0c6a081 [RECOLL-1_0_14]) + + * src/VERSION, src/internfile/mh_mail.cpp, + src/qtgui/preview/preview.ui.h, src/qtgui/recollmain.ui.h, + src/query/docseq.cpp, src/utils/utf8iter.h: + freebsd 4 port + +2005-12-06 15:59 +0000 dockes (812bc8f9232b) + + * packaging/FreeBSD/recoll/distinfo: + 0.13 really now + +2005-12-06 15:41 +0000 dockes (3a7b74624ff4) + + * src/recollinstall.in: + strip execs + +2005-12-06 15:20 +0000 dockes (fa8c19799a41) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + plist: + recoll-0.13 + +2005-12-06 15:10 +0000 dockes (b6df28b0d0e3) + + * src/README: + *** empty log message *** + +2005-12-06 15:10 +0000 dockes (e66dba4d628c [RECOLL-1_0_13]) + + * src/Makefile, src/VERSION, src/recollinstall.in: + no recollinstall install + +2005-12-06 12:55 +0000 dockes (cbfcc5627111) + + * packaging/FreeBSD/recoll/pkg-descr: + *** empty log message *** + +2005-12-06 10:30 +0000 dockes (d132e05e40ac) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + descr, packaging/FreeBSD/recoll/pkg-plist: + *** empty log message *** + +2005-12-06 09:40 +0000 dockes (f93d6a9b2336) + + * src/internfile/mh_html.cpp, src/internfile/myhtmlparse.cpp: + previous html fix didnt work + +2005-12-06 08:35 +0000 dockes (a3eec94f6861) + + * src/VERSION, src/internfile/internfile.cpp, + src/internfile/mh_html.cpp, src/internfile/myhtmlparse.cpp: + fix nasty html parse bug introduced in 1.0.9 + +2005-12-06 07:16 +0000 dockes (c1ccf42bf359 [RECOLL-1_0_12, RECOLL-1_0_11]) + + * src/qtgui/recollmain.ui: + move search/clear buttons to the left side + +2005-12-05 17:47 +0000 dockes (37952b251aee) + + * src/VERSION: + 1.0.11? + +2005-12-05 16:45 +0000 dockes (eecd7a311e8f) + + * src/qtgui/recollmain.ui.h: + no %F on solaris8 + +2005-12-05 16:13 +0000 dockes (cd9899dcdec1) + + * src/utils/copyfile.cpp: + *** empty log message *** + +2005-12-05 16:13 +0000 dockes (7e7e675138b2) + + * src/query/docseq.cpp, src/query/docseq.h: + avoid unneeded getDoc(0) + normalize private var names + +2005-12-05 15:00 +0000 dockes (6aa562bb0180) + + * src/INSTALL, src/Makefile, src/README, src/qtgui/main.cpp: + *** empty log message *** + +2005-12-05 14:09 +0000 dockes (d3954ac2c5ec) + + * src/utils/copyfile.cpp, src/utils/copyfile.h: new file. + * src/common/rclconfig.cpp, src/lib/Makefile, src/mk/localdefs, + src/mk/localdefs.in, src/utils/copyfile.cpp, src/utils/copyfile.h: + create personal config if it does not exist + +2005-12-05 12:02 +0000 dockes (6d38fb24e3b1) + + * src/qtgui/images/asearch.png, src/qtgui/images/history.png, + src/qtgui/images/nextpage.png, src/qtgui/images/prevpage.png, + src/qtgui/images/sortparms.png: new file. + * src/qtgui/images/asearch.png, src/qtgui/images/history.png, + src/qtgui/images/nextpage.png, src/qtgui/images/prevpage.png, + src/qtgui/images/sortparms.png, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/qtgui/sort.ui.h, + src/query/docseq.cpp, src/query/sortseq.cpp: + use toolbar buttons for prev/next + misc cleanups + +2005-12-05 10:39 +0000 dockes (55a212b17808) + + * src/rcldb/rcldb.cpp: + also index file path as terms + +2005-12-04 17:10 +0000 dockes (a4005adeece9) + + * src/qtgui/recoll.pro: + more + +2005-12-04 17:10 +0000 dockes (15ce414ea700) + + * src/common/textsplit.cpp: + split stdin + +2005-12-04 14:58 +0000 dockes (369372321681) + + * src/qtgui/recollmain.ui: + *** empty log message *** + +2005-12-02 16:18 +0000 dockes (b8ea8500fe26) + + * src/qtgui/preview/preview.ui.h, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/qtgui/sort.ui, src/qtgui/sort.ui.h, + src/query/sortseq.cpp, src/query/sortseq.h, src/rcldb/rcldb.h: + 1st version of sorting interface. Needs polishing + +2005-12-02 16:17 +0000 dockes (fba2b55c4ba7) + + * src/filters/rclpdf: + new version of pdftotext broke us + +2005-12-02 16:17 +0000 dockes (a31234c89a73) + + * src/common/rclconfig.cpp, src/recollinstall.in, + src/sampleconf/recoll.conf.in: + install filters to /usr/local + +2005-12-02 14:18 +0000 dockes (7b585689ce4a) + + * src/query/sortseq.cpp: + *** empty log message *** + +2005-12-01 16:23 +0000 dockes (c7393c3bc8b5) + + * src/qtgui/sort.ui, src/qtgui/sort.ui.h, src/query/sortseq.cpp, + src/query/sortseq.h: new file. + * src/lib/Makefile, src/qtgui/recoll.pro, src/qtgui/recollmain.ui.h, + src/qtgui/sort.ui, src/qtgui/sort.ui.h, src/query/sortseq.cpp, + src/query/sortseq.h: + sorting 1st steps + +2005-11-30 18:37 +0000 dockes (ddba9ec4f65f) + + * src/configure: + make recollinstall executable + +2005-11-30 18:28 +0000 dockes (35f236d5ad1f) + + * src/configure.ac: + make recollinstall executable + +2005-11-30 18:26 +0000 dockes (580ae261b629) + + * src/sampleconf/recoll.conf.in: + keep log level at 4 for index feedback + +2005-11-30 18:20 +0000 dockes (2fb51c4552fb) + + * src/sampleconf/recoll.conf.in: + decrease log level + +2005-11-30 18:10 +0000 dockes (0ad46d9bcaa5) + + * src/query/history.cpp: + *** empty log message *** + +2005-11-30 18:05 +0000 dockes (653e0a145731) + + * src/qtgui/form1.ui.h: deleted file. + * src/excludefile, src/qtgui/form1.ui.h: + *** empty log message *** + +2005-11-30 18:04 +0000 dockes (dfff4ecb1918) + + * src/qtgui/form1.ui: deleted file. + * src/excludefile, src/qtgui/form1.ui: + *** empty log message *** + +2005-11-30 18:01 +0000 dockes (a63a8d7c49f3) + + * src/excludefile: + *** empty log message *** + +2005-11-30 17:58 +0000 dockes (7676c325de57) + + * src/excludefile: + *** empty log message *** + +2005-11-30 17:58 +0000 dockes (6ddc4c210c87) + + * src/utils/transcode.cpp: + try harder to convert bad encodings + +2005-11-30 10:36 +0000 dockes (7e0aab848f91 [RECOLL-1_0_10]) + + * src/README, src/qtgui/recollmain.ui: + *** empty log message *** + +2005-11-30 10:35 +0000 dockes (1f97b79ea735) + + * src/VERSION: + v1.0.10 + +2005-11-30 10:25 +0000 dockes (3c2bcb1ec527) + + * src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h: + disable/enable buttons dep. on state + +2005-11-30 09:46 +0000 dockes (a75b091acbae) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch.ui.h, + src/sampleconf/mimeconf: + *** empty log message *** + +2005-11-30 09:46 +0000 dockes (30a527e5014f) + + * src/index/indexer.cpp, src/index/indexer.h, + src/index/recollindex.cpp, src/rcldb/rcldb.cpp: + add option to rezero db before index + +2005-11-28 15:31 +0000 dockes (d9e31422258b) + + * src/qtgui/main.cpp, src/qtgui/recoll.h, src/qtgui/recollmain.ui.h, + src/query/docseq.cpp, src/query/docseq.h, src/query/history.cpp, + src/query/history.h: + store and display dates in history. Needs more work + +2005-11-25 14:36 +0000 dockes (18bc54d4e426) + + * src/qtgui/recollmain.ui.h, src/query/history.cpp, + src/utils/conftree.cpp, src/utils/smallut.cpp, src/utils/smallut.h: + show history newest first + prune duplicate entries + +2005-11-25 10:26 +0000 dockes (3ad346d3f29e) + + * src/qtgui/main.cpp, src/qtgui/recoll_fr.ts, src/recollinstall.in: + install translations to share/recoll/translations + +2005-11-25 10:02 +0000 dockes (6ed5669a337b) + + * src/query/docseq.cpp, src/query/docseq.h: new file. + * src/lib/Makefile, src/qtgui/main.cpp, src/qtgui/recoll.h, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/query/docseq.cpp, src/query/docseq.h: + 1st version of doc history + +2005-11-25 09:14 +0000 dockes (69bab5c09012) + + * src/index/indexer.cpp, src/index/mimetype.cpp, + src/sampleconf/mimeconf: + *** empty log message *** + +2005-11-25 09:13 +0000 dockes (55e99bcc0a46) + + * src/common/rclconfig.cpp, src/common/rclconfig.h: + get all mime list from mimeconf, not mimemap + +2005-11-25 09:12 +0000 dockes (87febfb9c3be) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + added method to retrieve doc from path/ipath + +2005-11-25 08:53 +0000 dockes (756168516697) + + * src/Makefile, src/internfile/mimehandler.cpp, src/rcldb/rcldb.h: + *** empty log message *** + +2005-11-25 08:50 +0000 dockes (6fda25d19678) + + * src/utils/conftree.cpp, src/utils/conftree.h, src/utils/smallut.cpp, + src/utils/smallut.h: + add methods useful for history. move stuff to smallut + +2005-11-25 08:49 +0000 dockes (bd6b75c162a5) + + * src/utils/base64.cpp: + Strip extra null byte that we were appending + +2005-11-24 18:21 +0000 dockes (ba604719481c) + + * src/query/history.cpp, src/query/history.h: new file. + * src/query/Makefile, src/query/history.cpp, src/query/history.h, + src/query/qtry.cpp, src/query/xadump.cpp: + *** empty log message *** + +2005-11-24 07:16 +0000 dockes (1fc7382994a5) + + * src/recollinstall.in, src/sampleconf/recoll.conf.in: new file. + * src/bincimapmime/address.cc, src/bincimapmime/convert.cc, + src/bincimapmime/iodevice.cc, src/bincimapmime/iofactory.cc, + src/bincimapmime/mime-getpart.cc, src/bincimapmime/mime- + parsefull.cc, src/bincimapmime/mime-parseonlyheader.cc, + src/bincimapmime/mime-printbody.cc, src/bincimapmime/mime- + printdoc.cc, src/bincimapmime/mime-printheader.cc, src/bincimapmime + /mime-utils.h, src/bincimapmime/mime.cc, src/bincimapmime/trbinc.cc, + src/common/rclconfig.cpp, src/common/textsplit.cpp, + src/common/unacpp.cpp, src/configure, src/configure.ac, + src/index/csguess.cpp, src/index/indexer.cpp, + src/index/mimetype.cpp, src/internfile/htmlparse.cpp, + src/internfile/htmlparse.h, src/internfile/internfile.cpp, + src/internfile/mh_exec.cpp, src/internfile/mh_html.cpp, + src/internfile/mh_mail.cpp, src/internfile/mh_text.cpp, + src/internfile/mimehandler.cpp, src/makestaticdist.sh, + src/qtgui/advsearch.ui.h, src/qtgui/main.cpp, + src/qtgui/plaintorich.cpp, src/qtgui/preview/preview.ui.h, + src/qtgui/preview/pvmain.cpp, src/qtgui/recollmain.ui.h, + src/query/qtry.cpp, src/query/qxtry.cpp, src/query/xadump.cpp, + src/rcldb/pathhash.cpp, src/rcldb/rcldb.cpp, src/recollinstall.in, + src/sampleconf/recoll.conf.in, src/utils/base64.cpp, + src/utils/execmd.cpp, src/utils/fstreewalk.cpp, + src/utils/idfile.cpp, src/utils/mimeparse.cpp, src/utils/pathut.cpp, + src/utils/readfile.cpp, src/utils/smallut.cpp, src/utils/smallut.h, + src/utils/transcode.cpp, src/utils/utf8iter.cpp, + src/utils/wipedir.cpp: + *** empty log message *** + +2005-11-23 13:12 +0000 dockes (a8ff464ec720) + + * src/recollinstall, src/sampleconf/recoll.conf: deleted file. + * src/recollinstall, src/sampleconf/recoll.conf: + *** empty log message *** + +2005-11-23 11:11 +0000 dockes (4ba2ad248537) + + * src/utils/execmd.cpp: + *** empty log message *** + +2005-11-23 11:00 +0000 dockes (66cac25635e1) + + * src/INSTALL, src/README, src/rcldb/rcldb.cpp: + *** empty log message *** + +2005-11-23 10:57 +0000 dockes (45f106d04652 [RECOLL-1_0_9]) + + * src/Makefile: + use prefix instead of PREFIX + +2005-11-23 10:19 +0000 dockes (e7a6edd38c56) + + * src/Makefile, src/VERSION, src/filters/rclrtf, src/index/Makefile, + src/index/mimetype.cpp, src/utils/debuglog.cpp, + src/utils/mimeparse.cpp: + *** empty log message *** + +2005-11-23 10:18 +0000 dockes (4e530d6556d2) + + * src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/recollmain.ui.h: + document already shown test was wrong, wouldnt show more docs from + same file + +2005-11-23 10:17 +0000 dockes (9944ac86338d) + + * src/utils/execmd.cpp: + need to do _exit not exit after exec failure + +2005-11-23 10:16 +0000 dockes (085c66533884) + + * src/internfile/mh_html.cpp, src/utils/smallut.cpp, + src/utils/smallut.h: + improve charset name comparison + +2005-11-21 17:18 +0000 dockes (9c398b7ee69e [RECOLL-1_0_8]) + + * src/configure, src/configure.ac, src/index/mimetype.cpp, + src/internfile/myhtmlparse.cpp, src/mk/Linux, src/mk/SunOS, + src/recollinstall, src/utils/execmd.cpp: + glitches in linux/solaris compil. + install + +2005-11-21 16:16 +0000 dockes (7594b3dd0dc5) + + * src/README: + *** empty log message *** + +2005-11-21 16:06 +0000 dockes (8a82b3826a4a) + + * src/VERSION: + *** empty log message *** + +2005-11-21 16:05 +0000 dockes (9cc42706006d) + + * src/filters/rclrtf: new file. + * src/filters/rclrtf, src/sampleconf/mimeconf, src/sampleconf/mimemap, + src/sampleconf/recoll.conf: + add support for rtf + +2005-11-21 16:04 +0000 dockes (8169ca3ae210) + + * src/Makefile, src/makestaticdist.sh, src/recollinstall: + install pics and samples to $PREFIX/local/recoll + +2005-11-21 14:32 +0000 dockes (f0aaac1df843) + + * src/filters/rclgaim: + just needs awk + +2005-11-21 14:31 +0000 dockes (88649af9a0ac [RECOLL-1_0_7]) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/index/indexer.cpp, src/index/mimetype.cpp, src/index/mimetype.h, + src/internfile/internfile.cpp, src/internfile/mh_html.cpp, + src/internfile/mimehandler.cpp, src/internfile/mimehandler.h, + src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h, + src/lib/Makefile, src/qtgui/recollmain.ui.h, + src/sampleconf/mimeconf, src/sampleconf/mimemap, + src/sampleconf/recoll.conf: + mimemap processing recentered in rclconfig. Handle directory-local + suffix to mime-type definitions. Implement gaim log handling + +2005-11-18 17:03 +0000 dockes (ae7d483398d2) + + * src/filters/rclgaim: new file. + * src/filters/rclgaim: + *** empty log message *** + +2005-11-18 15:19 +0000 dockes (9c8cb27e5749) + + * src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/mh_exec.cpp, src/internfile/mimehandler.h, + src/utils/execmd.h: + misc cleanup + tell filters if working for preview or index + +2005-11-18 13:52 +0000 dockes (9d83fd6a7d8c) + + * src/utils/execmd.cpp, src/utils/execmd.h: + add putenv interface + +2005-11-18 13:23 +0000 dockes (c3d0cfc77a9f) + + * src/internfile/mh_exec.cpp, src/internfile/mh_exec.h, + src/internfile/mh_text.cpp, src/internfile/mh_text.h: new file. + * src/internfile/mh_exec.cpp, src/internfile/mh_exec.h, + src/internfile/mh_html.cpp, src/internfile/mh_html.h, + src/internfile/mh_mail.cpp, src/internfile/mh_mail.h, + src/internfile/mh_text.cpp, src/internfile/mh_text.h, + src/internfile/mimehandler.cpp, src/lib/Makefile: + restructuring on mimehandler files + +2005-11-17 17:39 +0000 dockes (e530dcacaf42) + + * src/VERSION: + *** empty log message *** + +2005-11-17 17:36 +0000 dockes (64437283f61f) + + * src/rcldb/rcldb.cpp: + use OP_FILTER instead of OP_AND to filter on file types + +2005-11-17 12:47 +0000 dockes (e9efe66d79c0) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/qtgui/main.cpp, src/qtgui/recollmain.ui, + src/sampleconf/recoll.conf, src/utils/conftree.cpp, + src/utils/conftree.h: + allow tilde expansion for section names in config file + +2005-11-16 18:31 +0000 dockes (e319e6fa047d) + + * src/qtgui/recollmain.ui.h: + *** empty log message *** + +2005-11-16 17:30 +0000 dockes (70dbf29f84e0) + + * src/excludefile: + *** empty log message *** + +2005-11-16 17:29 +0000 dockes (4c957598f6fd [RECOLL-1_0_6]) + + * src/mk/localdefs, src/rcldb/rcldb.cpp: + use and_maybe in adv search + +2005-11-16 15:07 +0000 dockes (a19870cd6761) + + * src/internfile/mimehandler.cpp, src/internfile/mimehandler.h, + src/qtgui/main.cpp, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/recoll.h, + src/qtgui/recollmain.ui.h, src/sampleconf/mimeconf, + src/sampleconf/recoll.conf: + Optionnally show mime type icons in result list + +2005-11-16 15:05 +0000 dockes (6464421540ca) + + * src/qtgui/mtpics/README, src/qtgui/mtpics/document.png, + src/qtgui/mtpics/drawing.png, src/qtgui/mtpics/html.png, + src/qtgui/mtpics/message.png, src/qtgui/mtpics/mozilla_doc.png, + src/qtgui/mtpics/pdf.png, src/qtgui/mtpics/postscript.png, + src/qtgui/mtpics/presentation.png, src/qtgui/mtpics/soffice.png, + src/qtgui/mtpics/spreadsheet.png, src/qtgui/mtpics/txt.png, + src/qtgui/mtpics/wordprocessing.png: new file. + * src/qtgui/mtpics/README, src/qtgui/mtpics/document.png, + src/qtgui/mtpics/drawing.png, src/qtgui/mtpics/html.png, + src/qtgui/mtpics/message.png, src/qtgui/mtpics/mozilla_doc.png, + src/qtgui/mtpics/pdf.png, src/qtgui/mtpics/postscript.png, + src/qtgui/mtpics/presentation.png, src/qtgui/mtpics/soffice.png, + src/qtgui/mtpics/spreadsheet.png, src/qtgui/mtpics/txt.png, + src/qtgui/mtpics/wordprocessing.png: + *** empty log message *** + +2005-11-16 11:22 +0000 dockes (f29236269564) + + * src/qtgui/plaintorich.cpp, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/recollmain.ui.h: + Implemented better feedback during preview loading + +2005-11-16 08:17 +0000 dockes (44b8c2233623) + + * src/Makefile, src/VERSION, src/qtgui/main.cpp, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/recoll_fr.ts, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h: + about dialog, remember previous mainwin geometry + +2005-11-14 09:59 +0000 dockes (f196f00bd521) + + * src/internfile/internfile.cpp, src/internfile/internfile.h, + src/qtgui/recollmain.ui.h: + fix rare case where indexed file could not be previewed because of + change in file identification config param + +2005-11-14 09:57 +0000 dockes (5610887cf602) + + * src/index/indexer.cpp: + comment + +2005-11-14 09:56 +0000 dockes (b6c7dd9504b9) + + * src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + stem expansion was never done for adv search + +2005-11-12 14:36 +0000 dockes (87b02b667eef) + + * src/README, src/mk/Linux: + *** empty log message *** + +2005-11-12 14:33 +0000 dockes (5743f1558790) + + * src/mk/localdefs.in: + typo + +2005-11-12 14:31 +0000 dockes (0dd4948b5c2f) + + * src/Makefile, src/configure, src/configure.ac: + more config tweaks + +2005-11-12 14:24 +0000 dockes (6d47a227c1b2) + + * src/utils/conftree.cpp, src/utils/conftree.h, + src/utils/debuglog.cpp, src/utils/debuglog.h: new file. + * src/utils/conftree.cpp, src/utils/conftree.h, + src/utils/debuglog.cpp, src/utils/debuglog.h: + local versions of utility files + +2005-11-12 14:23 +0000 dockes (c77e47fdc6fb) + + * src/Makefile: + *** empty log message *** + +2005-11-12 14:19 +0000 dockes (49499e32e341) + + * src/configure.ac, src/mk/localdefs, src/mk/localdefs.in: new file. + * src/Makefile, src/configure, src/configure.ac, src/mk/Darwin, + src/mk/FreeBSD, src/mk/Linux, src/mk/SunOS, src/mk/commondefs, + src/mk/localdefs, src/mk/localdefs.in: + introduced some autoconf + +2005-11-12 11:26 +0000 dockes (b13e733c2796) + + * src/Makefile, src/bincimapmime/Makefile, src/common/Makefile, + src/index/Makefile, src/lib/Makefile, src/mk/commondefs, + src/qtgui/recoll.pro, src/query/Makefile, src/sampleconf/mimemap, + src/utils/Makefile: + cleaned-up makes + +2005-11-10 08:47 +0000 dockes (06490e6e7dc1) + + * src/index/Makefile, src/index/indexer.cpp, src/index/indexer.h, + src/index/mimetype.cpp, src/index/mimetype.h, + src/internfile/internfile.cpp, src/sampleconf/recoll.conf: + add config parameter to decide if we use the file command as a final + step of mimetype identification + +2005-11-10 08:46 +0000 dockes (d9a64999d22d) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap: + add .Z compressed files + +2005-11-09 21:40 +0000 dockes (1dd753a59d1c) + + * src/sampleconf/mimemap: + add .odt -> openoffice. Add .php and others to ignored types + +2005-11-09 21:39 +0000 dockes (a8b54cf24c83) + + * src/common/rclinit.cpp: + test cleanup and sigcleanup not zero for small uts that dont need + this + +2005-11-08 21:02 +0000 dockes (344fc56239c8) + + * src/internfile/internfile.cpp, src/internfile/mh_html.cpp, + src/internfile/mh_html.h, src/internfile/mh_mail.cpp, + src/internfile/mh_mail.h, src/internfile/mimehandler.cpp, + src/internfile/mimehandler.h: + renamed MimeHandler::worker to mkDoc + comments for doxygen + +2005-11-08 21:02 +0000 dockes (1ac76bfea47d) + + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + descr, packaging/FreeBSD/recoll/pkg-plist, src/doc/prog/filters.txt, + src/doc/prog/top.txt: new file. + * packaging/FreeBSD/recoll/Makefile, + packaging/FreeBSD/recoll/distinfo, packaging/FreeBSD/recoll/pkg- + descr, packaging/FreeBSD/recoll/pkg-plist, src/doc/prog/Doxyfile, + src/doc/prog/Makefile, src/doc/prog/filters.txt, + src/doc/prog/top.txt: + *** empty log message *** + +2005-11-08 21:00 +0000 dockes (54bcdfd186f1) + + * src/doc/prog/Doxyfile, src/doc/prog/Makefile: new file. + * src/doc/prog/Doxyfile, src/doc/prog/Makefile: + *** empty log message *** + +2005-11-07 15:52 +0000 dockes (a0bde5fbc55b [RECOLL-1_0_5]) + + * src/INSTALL, src/Makefile, src/README, src/excludefile, + src/makesrcdist.sh, src/makestaticdist.sh: + *** empty log message *** + +2005-11-07 15:37 +0000 dockes (c6a8f5375981) + + * src/README: + *** empty log message *** + +2005-11-07 15:36 +0000 dockes (5ca00f4db306) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-11-07 15:11 +0000 dockes (8ae633ae4194) + + * src/VERSION: + *** empty log message *** + +2005-11-07 15:06 +0000 dockes (6be191f54656) + + * src/Makefile, src/mk/commondefs, src/recollinstall: + fixed installation script + +2005-11-07 11:21 +0000 dockes (e48ddf065716) + + * src/VERSION: + *** empty log message *** + +2005-11-06 15:07 +0000 dockes (fef6e5d66e29 [RECOLL-1_05]) + + * src/qtgui/idxthread.cpp, src/qtgui/main.cpp, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/utils/base64.cpp: + slightly better status printing while loading preview + +2005-11-06 11:16 +0000 dockes (0fa0ac2c3e5b) + + * src/rcldb/pathhash.cpp, src/rcldb/pathhash.h, src/utils/base64.cpp, + src/utils/base64.h, src/utils/md5.cpp, src/utils/md5.h: new file. + * src/lib/Makefile, src/rcldb/pathhash.cpp, src/rcldb/pathhash.h, + src/rcldb/rcldb.cpp, src/utils/base64.cpp, src/utils/base64.h, + src/utils/md5.cpp, src/utils/md5.h, src/utils/mimeparse.cpp: + limit path therm length through hashing + +2005-11-05 15:30 +0000 dockes (eea6ede9ce9a) + + * src/INSTALL, src/README, src/VERSION: + *** empty log message *** + +2005-11-05 15:29 +0000 dockes (c99e6c9d50df) + + * src/rcldb/rcldb.cpp: + debug message + +2005-11-05 15:17 +0000 dockes (a3463f8f8c63) + + * src/mk/commondefs: + unused def + +2005-11-05 14:40 +0000 dockes (47c04f4507d0 [RECOLL-1_04]) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/common/rclinit.cpp, src/common/rclinit.h, src/index/indexer.cpp, + src/index/recollindex.cpp, src/internfile/mh_mail.cpp, src/mk/SunOS, + src/qtgui/main.cpp, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + separate file and document dates (mainly for email folders). Better + check configuration at startup + +2005-11-02 12:36 +0000 dockes (e0d52b43cd5c) + + * src/lib/Makefile, src/mk/commondefs: + add def for RANLIB + +2005-11-01 10:55 +0000 dockes (2b858432af00) + + * src/mk/Darwin: new file. + * src/mk/Darwin: + *** empty log message *** + +2005-10-31 08:59 +0000 dockes (65fd4f89de80) + + * src/internfile/mh_mail.cpp, src/utils/mimeparse.cpp: + fixed base64 decoding of email parts: str[x] = ch does not adjust + length! and be more lenient with encoding errors + +2005-10-22 13:10 +0000 dockes (9a5b142d31f3) + + * src/README: + *** empty log message *** + +2005-10-22 13:10 +0000 dockes (d5ccf5480db1 [RECOLL-1_03]) + + * src/VERSION, src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h: + update status line when starting lengthy operations + +2005-10-22 07:29 +0000 dockes (df8ad947685b) + + * src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h: + get clicks in res list to behave: drag->no click. dblclick->no + single click + +2005-10-22 05:35 +0000 dockes (c566d157cfd3) + + * src/qtgui/recoll_fr.ts: new file. + * src/qtgui/main.cpp, src/qtgui/recoll.pro, src/qtgui/recoll_fr.ts: + i8n + +2005-10-21 15:45 +0000 dockes (34b797e01868) + + * src/mk/commondefs: new file. + * src/mk/commondefs: + *** empty log message *** + +2005-10-21 15:41 +0000 dockes (08f9ad818cb3 [RECOLL-1_02]) + + * src/makestaticdist.sh, src/recollinstall: + more verbosity in install + +2005-10-21 15:22 +0000 dockes (aa642ead5a8e) + + * src/INSTALL: + *** empty log message *** + +2005-10-21 15:11 +0000 dockes (1c74d6d926b7) + + * src/INSTALL: + *** empty log message *** + +2005-10-21 14:14 +0000 dockes (662fe9bab837) + + * src/excludefile: + *** empty log message *** + +2005-10-21 14:11 +0000 dockes (1856de4bf3f6) + + * src/makestaticdist.sh: new file. + * src/Makefile, src/makestaticdist.sh: + static bin dists + +2005-10-21 13:34 +0000 dockes (0c861c8b6029) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-21 13:33 +0000 dockes (7256b6e4e2ff) + + * src/Makefile, src/excludefile, src/index/Makefile, + src/makesrcdist.sh, src/mk/FreeBSD, src/mk/Linux, src/mk/SunOS, + src/qtgui/recoll.pro: + rearrange make includes+prepare bin static distrib + +2005-10-21 12:15 +0000 dockes (a9773a1a4715) + + * src/unac/unac.c: + fix args to iconv to get rid of warnings + +2005-10-21 08:14 +0000 dockes (f50d252ec29b) + + * src/Makefile, src/VERSION, src/excludefile, src/mk/FreeBSD, + src/mk/Linux, src/qtgui/preview/pvmain.cpp, src/utils/smallut.cpp: + more small build tweaks. use mkdtemp if available + +2005-10-20 16:20 +0000 dockes (b5fe53035720 [RECOLL-1_01]) + + * src/qtgui/advsearch.ui, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h: + CR->search in advanced dialog. ^W close tab in preview + +2005-10-20 15:42 +0000 dockes (a9e9ecfba2d2) + + * src/filters/rcldoc, src/filters/rclpdf, src/filters/rclps, + src/filters/rclsoff, src/mk/SunOS: + small fixes for SunOS + +2005-10-20 12:17 +0000 dockes (bc70bba2564c) + + * src/README, src/makesrcdist.sh: + *** empty log message *** + +2005-10-20 12:17 +0000 dockes (4e8de2aee40d) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-20 12:17 +0000 dockes (39b33b1f4e36) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-20 12:16 +0000 dockes (45a324ad4baa) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-20 12:16 +0000 dockes (73b1f99aef21) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-20 12:12 +0000 dockes (b3a8d1bceb51) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-20 11:38 +0000 dockes (5966cd48c62c) + + * src/sampleconf/recoll.conf: + defaultlanguage->english + +2005-10-20 11:33 +0000 dockes (4ba3bd42973e) + + * src/recollinstall: new file. + * src/bincimapmime/Makefile, src/filters/rcldoc, src/filters/rclpdf, + src/filters/rclps, src/filters/rclsoff, + src/qtgui/preview/preview.ui.h, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/recollinstall: + small installation tweaks + +2005-10-20 08:34 +0000 dockes (8ce6cff4ca9c) + + * src/Makefile, src/VERSION, src/bincimapmime/Makefile, + src/excludefile, src/lib/Makefile, src/mk/FreeBSD, + src/qtgui/plaintorich.cpp, src/qtgui/preview/preview.ui.h, + src/qtgui/recoll.pro: + small warning and compilation adjustments + +2005-10-20 07:51 +0000 dockes (b6f58b26d846 [RECOLL-1_0]) + + * src/configure: new file. + * src/README, src/configure: + *** empty log message *** + +2005-10-19 16:29 +0000 dockes (46a91fdb7a8e) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-10-19 16:27 +0000 dockes (92e16891b11d) + + * src/INSTALL: + *** empty log message *** + +2005-10-19 16:09 +0000 dockes (0dda1bd16921) + + * src/README, src/VERSION: + *** empty log message *** + +2005-10-19 15:22 +0000 dockes (88cadb2e703e) + + * src/qtgui/recollmain.ui: + *** empty log message *** + +2005-10-19 14:14 +0000 dockes (61cd7c267dec) + + * src/common/rclconfig.cpp, src/qtgui/advsearch.ui.h, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/utils/idfile.cpp, + src/utils/idfile.h: + implemented filtering on file subtree + +2005-10-19 10:21 +0000 dockes (598116a30bfb) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/filters/rcldoc, src/filters/rclpdf, src/filters/rclps, + src/filters/rclsoff, src/qtgui/advsearch.ui, + src/qtgui/advsearch.ui.h, src/qtgui/main.cpp, + src/qtgui/plaintorich.cpp, src/qtgui/recoll.h, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + most of adv search working. Still need subtree/filename filters + +2005-10-17 13:36 +0000 dockes (6ce40ecb81f6) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/qtgui/advsearch.ui, src/qtgui/advsearch.ui.h, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/preview/pvmain.cpp, src/qtgui/recoll.h, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/utils/Makefile: + implemented dialog/glue for advanced search + +2005-10-15 12:18 +0000 dockes (b57626e188f9) + + * src/index/indexer.cpp, src/internfile/mh_mail.cpp, + src/utils/mimeparse.cpp, src/utils/mimeparse.h: + decode encoded mail headers, plus use message date instead of file + mtime + +2005-10-10 13:25 +0000 dockes (3797f12a0832) + + * src/common/textsplit.h: + comments + +2005-10-10 13:24 +0000 dockes (a339c123dcb9) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h: + ckpt + +2005-10-10 12:29 +0000 dockes (e88bad1f996b) + + * src/qtgui/advsearch.ui, src/qtgui/main.cpp, + src/qtgui/preview/preview.ui, src/qtgui/preview/preview.ui.h, + src/qtgui/preview/pvmain.cpp, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h: + ckpt + +2005-09-27 06:20 +0000 dockes (8b147a42b660) + + * src/qtgui/preview/preview.pro, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/preview/pvmain.cpp: new + file. + * src/qtgui/preview/preview.pro, src/qtgui/preview/preview.ui, + src/qtgui/preview/preview.ui.h, src/qtgui/preview/pvmain.cpp: + *** empty log message *** + +2005-09-26 16:17 +0000 dockes (783900fcd3e7) + + * src/qtgui/recoll.pro: + *** empty log message *** + +2005-09-22 16:22 +0000 dockes (1e6ccf2c2fdc) + + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h: new file. + * src/qtgui/plaintorich.cpp, src/qtgui/plaintorich.h: + *** empty log message *** + +2005-09-22 15:00 +0000 dockes (db2d876f2a2b) + + * src/qtgui/recollmain.ui.h: + *** empty log message *** + +2005-09-22 14:09 +0000 dockes (4455c0eeffd4) + + * src/common/textsplit.cpp: + adjust start/end of word when trimming + +2005-09-22 11:10 +0000 dockes (3b9d4fc5b507) + + * src/common/textsplit.cpp: + fix problems with word followed by . + +2005-05-18 08:42 +0000 dockes (03bc1f1290cd) + + * src/qtgui/recoll.pro: + *** empty log message *** + +2005-05-17 11:46 +0000 dockes (cff6e901fde8) + + * src/qtgui/advsearch.ui, src/qtgui/advsearch.ui.h: new file. + * src/qtgui/advsearch.ui, src/qtgui/advsearch.ui.h, + src/qtgui/recoll.pro: + *** empty log message *** + +2005-05-17 06:30 +0000 dockes (9a44703bd049 [RECOLL-0_7]) + + * src/README: + *** empty log message *** + +2005-05-17 06:30 +0000 dockes (d2265051082d) + + * src/qtgui/recollmain.ui.h: + escape < to < in rich text + +2005-04-08 07:32 +0000 dockes (3917ab1cc937) + + * src/README: + *** empty log message *** + +2005-04-08 07:32 +0000 dockes (2f2439c9590a) + + * src/mk/SunOS: new file. + * src/Makefile, src/mk/SunOS, src/utils/Makefile: + works on solaris8 + +2005-04-07 09:05 +0000 dockes (0264f1839b92) + + * src/utils/idfile.cpp, src/utils/idfile.h: new file. + * src/index/mimetype.cpp, src/lib/Makefile, src/sampleconf/mimemap, + src/utils/Makefile, src/utils/idfile.cpp, src/utils/idfile.h: + replaced /usr/bin/file exec with internal code + +2005-04-06 10:20 +0000 dockes (ba9162debe5a) + + * src/bincimapmime/AUTHORS, src/bincimapmime/COPYING: new file. + * src/INSTALL, src/VERSION, src/bincimapmime/AUTHORS, + src/bincimapmime/COPYING, src/bincimapmime/mime-inputsource.h, + src/index/indexer.cpp, src/internfile/mh_mail.cpp, + src/makesrcdist.sh, src/mk/FreeBSD, src/mk/Linux, + src/qtgui/main.cpp, src/rcldb/rcldb.cpp, src/sampleconf/recoll.conf, + src/utils/smallut.h, src/utils/wipedir.cpp: + re-port to linux + +2005-04-06 09:18 +0000 dockes (d8add828aa6b) + + * src/README: + *** empty log message *** + +2005-04-06 09:13 +0000 dockes (7d5759a43255) + + * src/README: + *** empty log message *** + +2005-04-05 09:35 +0000 dockes (6232ca052972) + + * src/common/rclinit.cpp, src/common/rclinit.h: new file. + * src/common/rclinit.cpp, src/common/rclinit.h, + src/index/mimetype.cpp, src/index/recollindex.cpp, + src/internfile/internfile.cpp, src/internfile/mh_mail.cpp, + src/lib/Makefile, src/qtgui/main.cpp, src/rcldb/rcldb.cpp, + src/sampleconf/mimemap: + *** empty log message *** + +2005-04-04 13:18 +0000 dockes (e69c810eb5b1) + + * src/index/indexer.cpp, src/index/mimetype.cpp, + src/internfile/mh_html.cpp, src/internfile/mh_mail.cpp, + src/rcldb/rcldb.cpp, src/sampleconf/mimeconf, + src/utils/fstreewalk.cpp, src/utils/fstreewalk.h: + *** empty log message *** + +2005-03-31 10:04 +0000 dockes (9428bb11ff77) + + * src/bincimapmime/mime-inputsource.h, src/bincimapmime/mime- + parsefull.cc, src/bincimapmime/mime-parseonlyheader.cc, + src/bincimapmime/mime-printbody.cc, src/bincimapmime/mime.h, + src/bincimapmime/trbinc.cc, src/common/rclconfig.cpp, + src/internfile/mh_html.cpp, src/internfile/mh_html.h, + src/internfile/mh_mail.cpp, src/internfile/mh_mail.h, + src/rcldb/rcldb.cpp: + mail handling 1st working version + +2005-03-25 09:40 +0000 dockes (408a2650e963 [RECOLL-0_6]) + + * src/bincimapmime/00README.recoll, src/bincimapmime/trbinc.cc, + src/internfile/mh_mail.cpp, src/internfile/mh_mail.h: new file. + * src/bincimapmime/00README.recoll, src/bincimapmime/mime- + printbody.cc, src/bincimapmime/mime.h, src/bincimapmime/trbinc.cc, + src/common/Makefile, src/index/Makefile, src/index/indexer.cpp, + src/index/mimetype.cpp, src/internfile/internfile.cpp, + src/internfile/internfile.h, src/internfile/mh_html.cpp, + src/internfile/mh_html.h, src/internfile/mh_mail.cpp, + src/internfile/mh_mail.h, src/internfile/mimehandler.cpp, + src/internfile/mimehandler.h, src/internfile/myhtmlparse.cpp, + src/lib/Makefile, src/mk/FreeBSD, src/qtgui/recoll.pro, + src/qtgui/recollmain.ui.h, src/rcldb/rcldb.h, + src/sampleconf/mimeconf, src/utils/mimeparse.cpp, + src/utils/mimeparse.h: + mail ckpt + +2005-03-17 15:35 +0000 dockes (55a0c15039bf) + + * src/index/indexer.cpp, src/index/indexer.h, + src/internfile/internfile.cpp, src/internfile/mh_html.h: + only comments. Before multidoc files + +2005-03-17 14:02 +0000 dockes (b1f57902f3c1) + + * src/bincimapmime/Makefile, src/bincimapmime/iodevice.cc, + src/index/indexer.cpp, src/qtgui/recollmain.ui.h, + src/sampleconf/mimeconf, src/utils/execmd.cpp, src/utils/execmd.h, + src/utils/mimeparse.cpp, src/utils/smallut.cpp, src/utils/smallut.h, + src/utils/utf8iter.h: + checkpoint after long pause + +2005-03-16 07:35 +0000 dockes (4d4d71cd89ea) + + * src/bincimapmime/Makefile, src/bincimapmime/address.cc, + src/bincimapmime/address.h, src/bincimapmime/config.h, + src/bincimapmime/convert.cc, src/bincimapmime/convert.h, + src/bincimapmime/depot.h, src/bincimapmime/iodevice.cc, + src/bincimapmime/iodevice.h, src/bincimapmime/iofactory.cc, + src/bincimapmime/iofactory.h, src/bincimapmime/mime-getpart.cc, + src/bincimapmime/mime-inputsource.h, src/bincimapmime/mime- + parsefull.cc, src/bincimapmime/mime-parseonlyheader.cc, + src/bincimapmime/mime-printbody.cc, src/bincimapmime/mime- + printdoc.cc, src/bincimapmime/mime-printheader.cc, src/bincimapmime + /mime-utils.h, src/bincimapmime/mime.cc, src/bincimapmime/mime.h, + src/bincimapmime/session.h: new file. + * src/bincimapmime/Makefile, src/bincimapmime/address.cc, + src/bincimapmime/address.h, src/bincimapmime/config.h, + src/bincimapmime/convert.cc, src/bincimapmime/convert.h, + src/bincimapmime/depot.h, src/bincimapmime/iodevice.cc, + src/bincimapmime/iodevice.h, src/bincimapmime/iofactory.cc, + src/bincimapmime/iofactory.h, src/bincimapmime/mime-getpart.cc, + src/bincimapmime/mime-inputsource.h, src/bincimapmime/mime- + parsefull.cc, src/bincimapmime/mime-parseonlyheader.cc, + src/bincimapmime/mime-printbody.cc, src/bincimapmime/mime- + printdoc.cc, src/bincimapmime/mime-printheader.cc, src/bincimapmime + /mime-utils.h, src/bincimapmime/mime.cc, src/bincimapmime/mime.h, + src/bincimapmime/session.h: + initial import from bincimap-1.3.3 + +2005-02-11 11:48 +0000 dockes (7b2bdc5c6ed9) + + * src/README, src/makesrcdist.sh: + *** empty log message *** + +2005-02-11 11:48 +0000 dockes (ffca521040c2) + + * src/README: + *** empty log message *** + +2005-02-11 11:20 +0000 dockes (7c54c58f0fd1) + + * src/common/uproplist.h, src/utils/utf8testin.txt: new file. + * src/common/textsplit.cpp, src/common/uproplist.h, + src/utils/Makefile, src/utils/utf8iter.cpp, src/utils/utf8iter.h, + src/utils/utf8testin.txt: + improved word extraction a bit (unicode punctuation) + +2005-02-10 19:52 +0000 dockes (ba4dd19f41c4) + + * src/utils/utf8iter.cpp, src/utils/utf8iter.h: new file. + * src/common/textsplit.cpp, src/utils/Makefile, + src/utils/utf8iter.cpp, src/utils/utf8iter.h: + *** empty log message *** + +2005-02-10 15:21 +0000 dockes (44892bfc8d49) + + * src/index/indexer.cpp, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/utils/execmd.cpp, + src/utils/fstreewalk.cpp, src/utils/fstreewalk.h, + src/utils/smallut.cpp, src/utils/smallut.h: + implemented stem databases + +2005-02-09 13:34 +0000 dockes (7517469a76b5) + + * src/index/Makefile, src/index/mimetype.cpp: + *** empty log message *** + +2005-02-09 12:07 +0000 dockes (e5d0612227af) + + * src/filters/rcldoc, src/filters/rclsoff, src/utils/wipedir.cpp, + src/utils/wipedir.h: new file. + * src/VERSION, src/filters/rcldoc, src/filters/rclsoff, + src/index/indexer.cpp, src/index/mimetype.cpp, + src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/myhtmlparse.cpp, src/lib/Makefile, + src/qtgui/main.cpp, src/qtgui/recoll.h, src/qtgui/recollmain.ui.h, + src/sampleconf/mimeconf, src/sampleconf/mimemap, src/utils/Makefile, + src/utils/smallut.cpp, src/utils/smallut.h, src/utils/wipedir.cpp, + src/utils/wipedir.h: + added support for openoffice and word + optimized decomp temp dir + usage + +2005-02-08 17:35 +0000 dockes (e5a6d4a27e1f) + + * src/INSTALL, src/README: + *** empty log message *** + +2005-02-08 15:08 +0000 dockes (f89783d5d828) + + * src/excludefile, src/makesrcdist.sh: new file. + * src/README, src/excludefile, src/makesrcdist.sh: + *** empty log message *** + +2005-02-08 15:03 +0000 dockes (4ec10decb898) + + * src/README: + *** empty log message *** + +2005-02-08 14:55 +0000 dockes (07541712859f) + + * src/README: + *** empty log message *** + +2005-02-08 14:54 +0000 dockes (fa3ad0590138 [RECOLL-0_5]) + + * src/Makefile, src/README, src/qtgui/recoll.pro, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/sampleconf/recoll.conf: + *** empty log message *** + +2005-02-08 14:45 +0000 dockes (d04d78bb1af4) + + * src/INSTALL, src/internfile/myhtmlparse.cpp, src/qtgui/recoll.pro: + *** empty log message *** + +2005-02-08 11:59 +0000 dockes (b5f33d8a83cb) + + * src/common/textsplit.cpp, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + fixed next/prev screen pb + pb with accents when matching in preview + +2005-02-08 10:56 +0000 dockes (ea8c32a3b71e) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/rcldb/rcldb.cpp: + phrases ok except for preview position + +2005-02-08 09:34 +0000 dockes (8f72bd8ca147) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/qtgui/recoll.pro, src/qtgui/recollmain.ui.h, + src/query/xadump.cpp, src/rcldb/rcldb.cpp, src/utils/execmd.cpp: + fixes in textsplit + +2005-02-07 13:17 +0000 dockes (3e10d31a55a9) + + * src/common/textsplit.cpp, src/common/textsplit.h, + src/qtgui/recollmain.ui.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + simple term highlighting in query preview + +2005-02-04 14:21 +0000 dockes (77a59732f8aa) + + * src/COPYING, src/INSTALL, src/README, src/VERSION, + src/filters/rcluncomp, src/internfile/internfile.cpp, + src/internfile/internfile.h, src/mk/Linux, + src/qtgui/images/editcopy, src/qtgui/images/editcut, + src/qtgui/images/editpaste, src/qtgui/images/filenew, + src/qtgui/images/fileopen, src/qtgui/images/filesave, + src/qtgui/images/print, src/qtgui/images/redo, + src/qtgui/images/searchfind, src/qtgui/images/undo: new file. + * src/COPYING, src/INSTALL, src/Makefile, src/README, src/VERSION, + src/common/Makefile, src/common/unacpp.cpp, src/filters/rcluncomp, + src/index/Makefile, src/index/csguess.cpp, src/index/indexer.cpp, + src/internfile/internfile.cpp, src/internfile/internfile.h, + src/internfile/mimehandler.cpp, src/lib/Makefile, src/mk/FreeBSD, + src/mk/Linux, src/qtgui/idxthread.cpp, src/qtgui/images/editcopy, + src/qtgui/images/editcut, src/qtgui/images/editpaste, + src/qtgui/images/filenew, src/qtgui/images/fileopen, + src/qtgui/images/filesave, src/qtgui/images/print, + src/qtgui/images/redo, src/qtgui/images/searchfind, + src/qtgui/images/undo, src/qtgui/recoll.pro, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/query/Makefile, src/rcldb/rcldb.cpp, src/utils/Makefile, + src/utils/pathut.cpp, src/utils/transcode.cpp: + uncompression+linux port + +2005-02-04 09:39 +0000 dockes (482687ce34da) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/index/indexer.cpp, src/internfile/mh_html.cpp, + src/internfile/mimehandler.cpp, src/internfile/mimehandler.h, + src/lib/Makefile, src/qtgui/recollmain.ui.h, src/utils/smallut.cpp, + src/utils/smallut.h: + *** empty log message *** + +2005-02-04 09:30 +0000 dockes (5fac5dd8a1c4) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap, + src/sampleconf/recoll.conf: + *** empty log message *** + +2005-02-04 09:21 +0000 dockes (2ad004ec5fd7) + + * src/sampleconf/mimeconf, src/sampleconf/mimemap, + src/sampleconf/recoll.conf: new file. + * src/sampleconf/mimeconf, src/sampleconf/mimemap, + src/sampleconf/recoll.conf: + *** empty log message *** + +2005-02-02 17:57 +0000 dockes (4819b0b410e7) + + * src/filters/rclps: new file. + * src/filters/rclps: + *** empty log message *** + +2005-02-01 17:52 +0000 dockes (023ac2c1c87f) + + * src/internfile/mimehandler.cpp, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/rcldb/rcldb.cpp: + *** empty log message *** + +2005-02-01 17:20 +0000 dockes (4eb8337baa03) + + * src/filters/rclpdf, src/internfile/mh_html.h, src/mk/FreeBSD, + src/qtgui/idxthread.h, src/qtgui/recoll.h: new file. + * src/filters/rclpdf, src/index/indexer.cpp, + src/internfile/mh_html.cpp, src/internfile/mh_html.h, + src/internfile/mimehandler.cpp, src/internfile/mimehandler.h, + src/lib/Makefile, src/mk/FreeBSD, src/qtgui/idxthread.h, + src/qtgui/recoll.h, src/qtgui/recollmain.ui.h, src/rcldb/rcldb.cpp, + src/utils/Makefile, src/utils/execmd.cpp: + added external filters and pdf handling + +2005-02-01 08:42 +0000 dockes (b82908e25c6b) + + * src/common/Makefile, src/index/Makefile, src/index/recollindex.cpp, + src/lib/Makefile, src/qtgui/idxthread.cpp, src/qtgui/main.cpp, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/query/Makefile, src/rcldb/rcldb.cpp, src/utils/Makefile: + *** empty log message *** + +2005-01-31 14:31 +0000 dockes (c8a32d0e0056) + + * src/index/indexer.cpp, src/qtgui/idxthread.cpp, + src/utils/smallut.cpp, src/utils/smallut.h: new file. + * src/common/rclconfig.cpp, src/index/indexer.cpp, + src/index/indexer.h, src/index/recollindex.cpp, src/lib/Makefile, + src/qtgui/idxthread.cpp, src/qtgui/main.cpp, src/qtgui/recoll.pro, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/query/qtry.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/utils/Makefile, src/utils/pathut.cpp, src/utils/pathut.h, + src/utils/smallut.cpp, src/utils/smallut.h: + first incarnation of indexing thread + +2005-01-29 15:41 +0000 dockes (3dd05c65d8ed) + + * src/index/recollindex.cpp, src/internfile/mimehandler.cpp, + src/internfile/mimehandler.h, src/lib/Makefile, src/qtgui/main.cpp, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/utils/Makefile: + external viewer+ deleted doc purging + +2005-01-28 15:25 +0000 dockes (8c6b04552a34) + + * src/Makefile, src/internfile/indextext.h: new file. + * src/Makefile, src/internfile/indextext.h, + src/internfile/myhtmlparse.cpp, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h: + ckpt + +2005-01-28 09:37 +0000 dockes (bf2c00ad72d0) + + * src/internfile/mh_html.cpp, src/internfile/myhtmlparse.cpp, + src/internfile/myhtmlparse.h, src/lib/Makefile, src/rcldb/rcldb.cpp: + merged modifs from xapian/omega 0.8.5 + +2005-01-28 08:56 +0000 dockes (a5e2a08ce1b8) + + * src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h: + import from xapian 0.8.5 + +2005-01-28 08:50 +0000 dockes (73f5b0ed50d8) + + * src/internfile/htmlparse.cpp, src/internfile/htmlparse.h: + Initial recoll modifs for utf8 + +2005-01-28 08:46 +0000 dockes (04f0053d01e4) + + * src/internfile/mh_html.cpp, src/rcldb/rcldb.cpp: + xapian 0.8.3 + +2005-01-28 08:45 +0000 dockes (ec7863976555) + + * src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h: new + file. + * src/internfile/myhtmlparse.cpp, src/internfile/myhtmlparse.h: + *** empty log message *** + +2005-01-28 08:41 +0000 dockes (c5c570040571) + + * src/internfile/htmlparse.cpp, src/internfile/htmlparse.h: new file. + * src/internfile/htmlparse.cpp, src/internfile/htmlparse.h: + xapian 0.8.3 + +2005-01-26 13:03 +0000 dockes (5a37e2aa9a53) + + * src/index/recollindex.cpp, src/internfile/mh_html.cpp, + src/internfile/mimehandler.cpp, src/rcldb/rcldb.cpp: + sort of indexes html + +2005-01-26 11:47 +0000 dockes (eec829a74f2d) + + * src/internfile/mh_html.cpp: new file. + * src/internfile/mh_html.cpp, src/internfile/mimehandler.cpp, + src/internfile/mimehandler.h, src/lib/Makefile, + src/qtgui/recollmain.ui, src/qtgui/recollmain.ui.h, + src/query/qtry.cpp, src/rcldb/rcldb.cpp, src/utils/Makefile: + ckpt + +2005-01-26 11:45 +0000 dockes (1c17d5d56a6b) + + * src/utils/mimeparse.cpp, src/utils/mimeparse.h: new file. + * src/utils/mimeparse.cpp, src/utils/mimeparse.h: + mime header parsing embryo + +2005-01-25 14:37 +0000 dockes (1d5b47c225bf) + + * src/internfile/mimehandler.cpp, src/internfile/mimehandler.h: new + file. + * src/internfile/mimehandler.cpp, src/internfile/mimehandler.h: + *** empty log message *** + +2005-01-25 14:37 +0000 dockes (46d42849ee3a) + + * src/lib/Makefile, src/qtgui/recoll.pro, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h: new file. + * src/common/Makefile, src/common/rclconfig.cpp, src/index/Makefile, + src/index/indexer.h, src/index/recollindex.cpp, src/lib/Makefile, + src/qtgui/main.cpp, src/qtgui/recoll.pro, src/qtgui/recollmain.ui, + src/qtgui/recollmain.ui.h, src/query/Makefile, src/query/qtry.cpp, + src/query/xadump.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/utils/Makefile, src/utils/transcode.h: + gui connected to rcldb (init) + +2005-01-24 13:17 +0000 dockes (e0104075bdd3) + + * src/common/Makefile, src/index/Makefile, src/qtgui/form1.ui, + src/qtgui/form1.ui.h, src/qtgui/main.cpp, src/query/qtry.cpp, + src/query/qxtry.cpp, src/utils/Makefile: new file. + * src/common/Makefile, src/common/rclconfig.cpp, + src/common/textsplit.h, src/common/unacpp.cpp, src/index/Makefile, + src/qtgui/form1.ui, src/qtgui/form1.ui.h, src/qtgui/main.cpp, + src/query/Makefile, src/query/qtry.cpp, src/query/qxtry.cpp, + src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, src/utils/Makefile: + *** empty log message *** + +2004-12-17 15:50 +0000 dockes (4f7a0a26f6d7) + + * src/query/xadump.cpp, src/rcldb/rcldb.cpp: + very basic indexing working + +2004-12-17 15:36 +0000 dockes (325aea11f893) + + * src/common/unacpp.cpp, src/common/unacpp.h: new file. + * src/common/unacpp.cpp, src/common/unacpp.h, src/rcldb/rcldb.cpp: + *** empty log message *** + +2004-12-17 15:04 +0000 dockes (930a5f50b45e) + + * src/unac/AUTHORS, src/unac/COPYING, src/unac/README, + src/unac/README.recoll, src/unac/unac.c, src/unac/unac.h: new file. + * src/unac/AUTHORS, src/unac/COPYING, src/unac/README, + src/unac/README.recoll, src/unac/unac.c, src/unac/unac.h: + unac 1.7.0 + +2004-12-17 13:01 +0000 dockes (70ded59ba246) + + * src/query/Makefile, src/query/xadump.cpp: new file. + * src/common/rclconfig.h, src/common/textsplit.cpp, + src/common/textsplit.h, src/index/recollindex.cpp, + src/query/Makefile, src/query/xadump.cpp, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h: + *** empty log message *** + +2004-12-15 15:00 +0000 dockes (1e3483587b45) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/common/textsplit.cpp, src/index/csguess.cpp, + src/index/csguess.h, src/index/indexer.h, src/index/mimetype.cpp, + src/index/recollindex.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/utils/transcode.cpp: + warnings cleanup + +2004-12-15 09:43 +0000 dockes (502752de59d5) + + * src/utils/transcode.cpp, src/utils/transcode.h: new file. + * src/utils/transcode.cpp, src/utils/transcode.h: + *** empty log message *** + +2004-12-15 08:21 +0000 dockes (520f5e294f10) + + * src/index/csguess.cpp, src/index/csguess.h: new file. + * src/index/csguess.cpp, src/index/csguess.h: + just converted (indent+comments) from estraier + +2004-12-14 17:54 +0000 dockes (12a23501eee8) + + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/common/textsplit.h, src/index/indexer.h, src/rcldb/rcldb.cpp, + src/rcldb/rcldb.h, src/utils/readfile.cpp, src/utils/readfile.h: new + file. + * src/common/rclconfig.cpp, src/common/rclconfig.h, + src/common/textsplit.cpp, src/common/textsplit.h, + src/index/indexer.h, src/index/mimetype.cpp, src/index/mimetype.h, + src/index/recollindex.cpp, src/rcldb/rcldb.cpp, src/rcldb/rcldb.h, + src/utils/execmd.cpp, src/utils/pathut.cpp, src/utils/pathut.h, + src/utils/readfile.cpp, src/utils/readfile.h: + *** empty log message *** + +2004-12-13 15:42 +0000 dockes (8c1fce132f19) + + * src/common/textsplit.cpp, src/index/mimetype.cpp, + src/index/mimetype.h, src/index/recollindex.cpp: new file. + * src/common/textsplit.cpp, src/index/mimetype.cpp, + src/index/mimetype.h, src/index/recollindex.cpp: + *** empty log message *** + +2004-12-12 08:58 +0000 dockes (17a132340425) + + * src/utils/execmd.cpp, src/utils/execmd.h: new file. + * src/utils/execmd.cpp, src/utils/execmd.h, src/utils/fstreewalk.cpp: + *** empty log message *** + +2004-12-10 18:13 +0000 dockes (1de12131e4a4) + + * src/utils/fstreewalk.cpp, src/utils/fstreewalk.h, + src/utils/pathut.cpp, src/utils/pathut.h: new file. + * src/utils/fstreewalk.cpp, src/utils/fstreewalk.h, + src/utils/pathut.cpp, src/utils/pathut.h: + *** empty log message *** + +2004-12-10 18:13 +0000 unknown (318176766db7) + + * Standard project directories initialized by cvs2svn. + diff --git a/src/INSTALL b/src/INSTALL new file mode 100644 index 00000000..e8ae6a49 --- /dev/null +++ b/src/INSTALL @@ -0,0 +1,1348 @@ + +More documentation can be found in the doc/ directory or at http://www.recoll.org + + + Link: home: Recoll user manual + Link: up: Recoll user manual + Link: prev: 4.3. API + Link: next: 5.2. Supporting packages + + Chapter 5. Installation and configuration + Prev Next + + ---------------------------------------------------------------------- + +Chapter 5. Installation and configuration + +5.1. Installing a binary copy + + Recoll binary copies are always distributed as regular packages for your + system. They can be obtained either through the system's normal software + distribution framework (e.g. Debian/Ubuntu apt, FreeBSD ports, etc.), or + from some type of "backports" repository providing versions newer than the + standard ones, or found on the Recoll WEB site in some cases. + + There used to exist another form of binary install, as pre-compiled source + trees, but these are just less convenient than the packages and don't + exist any more. + + The package management tools will usually automatically deal with hard + dependancies for packages obtained from a proper package repository. You + will have to deal with them by hand for downloaded packages (for example, + when dpkg complains about missing dependancies). + + In all cases, you will have to check or install supporting applications + for the file types that you want to index beyond those that are natively + processed by Recoll (text, HTML, email files, and a few others). + + You should also maybe have a look at the configuration section (but this + may not be necessary for a quick test with default parameters). Most + parameters can be more conveniently set from the GUI interface. + + ---------------------------------------------------------------------- + + Prev Next + 4.3. API Home 5.2. Supporting packages + Link: home: Recoll user manual + Link: up: Chapter 5. Installation and configuration + Link: prev: Chapter 5. Installation and configuration + Link: next: 5.3. Building from source + + 5.2. Supporting packages + Prev Chapter 5. Installation and configuration Next + + ---------------------------------------------------------------------- + +5.2. Supporting packages + + Recoll uses external applications to index some file types. You need to + install them for the file types that you wish to have indexed (these are + run-time optional dependencies. None is needed for building or running + Recoll except for indexing their specific file type). + + After an indexing pass, the commands that were found missing can be + displayed from the recoll File menu. The list is stored in the missing + text file inside the configuration directory. + + A list of common file types which need external commands follows. Many of + the handlers need the iconv command, which is not always listed as a + dependancy. + + Please note that, due to the relatively dynamic nature of this + information, the most up to date version is now kept on + http://www.recoll.org/features.html along with links to the home pages or + best source/patches pages, and misc tips. The list below is not updated + often and may be quite stale. + + For many Linux distributions, most of the commands listed can be installed + from the package repositories. However, the packages are sometimes + outdated, or not the best version for Recoll, so you should take a look at + http://www.recoll.org/features.html if a file type is important to you. + + As of Recoll release 1.14, a number of XML-based formats that were handled + by ad hoc handler code now use the xsltproc command, which usually comes + with libxslt. These are: abiword, fb2 (ebooks), kword, openoffice, svg. + + Now for the list: + + o Openoffice files need unzip and xsltproc. + + o PDF files need pdftotext which is part of Poppler (usually comes with + the poppler-utils package). Avoid the original one from Xpdf. + + o Postscript files need pstotext. The original version has an issue with + shell character in file names, which is corrected in recent packages. + See http://www.recoll.org/features.html for more detail. + + o MS Word needs antiword. It is also useful to have wvWare installed as + it may be be used as a fallback for some files which antiword does not + handle. + + o MS Excel and PowerPoint are processed by internal Python handlers. + + o MS Open XML (docx) needs xsltproc. + + o Wordperfect files need wpd2html from the libwpd (or libwpd-tools on + Ubuntu) package. + + o RTF files need unrtf, which, in its older versions, has much trouble + with non-western character sets. Many Linux distributions carry + outdated unrtf versions. Check http://www.recoll.org/features.html for + details. + + o TeX files need untex or detex. Check + http://www.recoll.org/features.html for sources if it's not packaged + for your distribution. + + o dvi files need dvips. + + o djvu files need djvutxt and djvused from the DjVuLibre package. + + o Audio files: Recoll releases 1.14 and later use a single Python + handler based on mutagen for all audio file types. + + o Pictures: Recoll uses the Exiftool Perl package to extract tag + information. Most image file formats are supported. Note that there + may not be much interest in indexing the technical tags (image size, + aperture, etc.). This is only of interest if you store personal tags + or textual descriptions inside the image files. + + o chm: files in Microsoft help format need Python and the pychm module + (which needs chmlib). + + o ICS: up to Recoll 1.13, iCalendar files need Python and the icalendar + module. icalendar is not needed for newer versions, which use internal + code. + + o Zip archives need Python (and the standard zipfile module). + + o Rar archives need Python, the rarfile Python module and the unrar + utility. + + o Midi karaoke files need Python and the Midi module + + o Konqueror webarchive format with Python (uses the Tarfile module). + + o Mimehtml web archive format (support based on the email handler, which + introduces some mild weirdness, but still usable). + + Text, HTML, email folders, and Scribus files are processed internally. Lyx + is used to index Lyx files. Many handlers need iconv and the standard sed + and awk. + + ---------------------------------------------------------------------- + + Prev Up Next + Chapter 5. Installation and configuration Home 5.3. Building from source + Link: home: Recoll user manual + Link: up: Chapter 5. Installation and configuration + Link: prev: 5.2. Supporting packages + Link: next: 5.4. Configuration overview + + 5.3. Building from source + Prev Chapter 5. Installation and configuration Next + + ---------------------------------------------------------------------- + +5.3. Building from source + + 5.3.1. Prerequisites + + If you can install any or all of the following through the package manager + for your system, all the better. Especially Qt is a very big piece of + software, but you will most probably be able to find a binary package. + + You may have to compile Xapian but this is easy. + + The shopping list: + + o C++ compiler. Up to Recoll version 1.13.04, its absence can manifest + itself by strange messages about a missing iconv_open. + + o Development files for Xapian core. + + Important + + If you are building Xapian for an older CPU (before Pentium 4 or + Athlon 64), you need to add the --disable-sse flag to the configure + command. Else all Xapian application will crash with an illegal + instruction error. + + o Development files for Qt 4 . Recoll has not been tested with Qt 5 yet. + Recoll 1.15.9 was the last version to support Qt 3. If you do not want + to install or build the Qt Webkit module, Recoll has a configuration + option to disable its use (see further). + + o Development files for X11 and zlib. + + o You may also need libiconv. On Linux systems, the iconv interface is + part of libc and you should not need to do anything special. + + Check the Recoll download page for up to date version information. + + 5.3.2. Building + + Recoll has been built on Linux, FreeBSD, Mac OS X, and Solaris, most + versions after 2005 should be ok, maybe some older ones too (Solaris 8 is + ok). If you build on another system, and need to modify things, I would + very much welcome patches. + + Configure options: + + o --without-aspell will disable the code for phonetic matching of search + terms. + + o --with-fam or --with-inotify will enable the code for real time + indexing. Inotify support is enabled by default on recent Linux + systems. + + o --with-qzeitgeist will enable sending Zeitgeist events about the + visited search results, and needs the qzeitgeist package. + + o --disable-webkit is available from version 1.17 to implement the + result list with a Qt QTextBrowser instead of a WebKit widget if you + do not or can't depend on the latter. + + o --disable-idxthreads is available from version 1.19 to suppress + multithreading inside the indexing process. You can also use the + run-time configuration to restrict recollindex to using a single + thread, but the compile-time option may disable a few more unused + locks. This only applies to the use of multithreading for the core + index processing (data input). The Recoll monitor mode always uses at + least two threads of execution. + + o --disable-python-module will avoid building the Python module. + + o --disable-xattr will prevent fetching data from file extended + attributes. Beyond a few standard attributes, fetching extended + attributes data can only be useful is some application stores data in + there, and also needs some simple configuration (see comments in the + fields configuration file). + + o --enable-camelcase will enable splitting camelCase words. This is not + enabled by default as it has the unfortunate side-effect of making + some phrase searches quite confusing: ie, "MySQL manual" would be + matched by "MySQL manual" and "my sql manual" but not "mysql manual" + (only inside phrase searches). + + o --with-file-command Specify the version of the 'file' command to use + (ie: --with-file-command=/usr/local/bin/file). Can be useful to enable + the gnu version on systems where the native one is bad. + + o --disable-qtgui Disable the Qt interface. Will allow building the + indexer and the command line search program in absence of a Qt + environment. + + o --disable-x11mon Disable X11 connection monitoring inside recollindex. + Together with --disable-qtgui, this allows building recoll without Qt + and X11. + + o --disable-pic will compile Recoll with position-dependant code. This + is incompatible with building the KIO or the Python or PHP extensions, + but might yield very marginally faster code. + + o Of course the usual autoconf configure options, like --prefix apply. + + Normal procedure: + + cd recoll-xxx + ./configure + make + (practices usual hardship-repelling invocations) + + + There is little auto-configuration. The configure script will mainly link + one of the system-specific files in the mk directory to mk/sysconf. If + your system is not known yet, it will tell you as much, and you may want + to manually copy and modify one of the existing files (the new file name + should be the output of uname -s). + + 5.3.2.1. Building on Solaris + + We did not test building the GUI on Solaris for recent versions. You will + need at least Qt 4.4. There are some hints on an old web site page, they + may still be valid. + + Someone did test the 1.19 indexer and Python module build, they do work, + with a few minor glitches. Be sure to use GNU make and install. + + 5.3.3. Installation + + Either type make install or execute recollinstall prefix, in the root of + the source tree. This will copy the commands to prefix/bin and the sample + configuration files, scripts and other shared data to prefix/share/recoll. + + If the installation prefix given to recollinstall is different from either + the system default or the value which was specified when executing + configure (as in configure --prefix /some/path), you will have to set the + RECOLL_DATADIR environment variable to indicate where the shared data is + to be found (ie for (ba)sh: export + RECOLL_DATADIR=/some/path/share/recoll). + + You can then proceed to configuration. + + ---------------------------------------------------------------------- + + Prev Up Next + 5.2. Supporting packages Home 5.4. Configuration overview + Link: home: Recoll user manual + Link: up: Chapter 5. Installation and configuration + Link: prev: 5.3. Building from source + + 5.4. Configuration overview + Prev Chapter 5. Installation and configuration + + ---------------------------------------------------------------------- + +5.4. Configuration overview + + Most of the parameters specific to the recoll GUI are set through the + Preferences menu and stored in the standard Qt place + ($HOME/.config/Recoll.org/recoll.conf). You probably do not want to edit + this by hand. + + Recoll indexing options are set inside text configuration files located in + a configuration directory. There can be several such directories, each of + which defines the parameters for one index. + + The configuration files can be edited by hand or through the Index + configuration dialog (Preferences menu). The GUI tool will try to respect + your formatting and comments as much as possible, so it is quite possible + to use both ways. + + The most accurate documentation for the configuration parameters is given + by comments inside the default files, and we will just give a general + overview here. + + By default, for each index, there are two sets of configuration files. + System-wide configuration files are kept in a directory named like + /usr/[local/]share/recoll/examples, and define default values, shared by + all indexes. For each index, a parallel set of files defines the + customized parameters. + + In addition (as of Recoll version 1.19.7), it is possible to specify two + additional configuration directories which will be stacked before and + after the user configuration directory. These are defined by the + RECOLL_CONFTOP and RECOLL_CONFMID environment variables. Values from + configuration files inside the top directory will override user ones, + values from configuration files inside the middle directory will override + system ones and be overriden by user ones. These two variables may be of + use to applications which augment Recoll functionality, and need to add + configuration data without disturbing the user's files. Please note that + the two, currently single, values will probably be interpreted as + colon-separated lists in the future: do not use colon characters inside + the directory paths. + + The default location of the configuration is the .recoll directory in your + home. Most people will only use this directory. + + This location can be changed, or others can be added with the + RECOLL_CONFDIR environment variable or the -c option parameter to recoll + and recollindex. + + If the .recoll directory does not exist when recoll or recollindex are + started, it will be created with a set of empty configuration files. + recoll will give you a chance to edit the configuration file before + starting indexing. recollindex will proceed immediately. To avoid + mistakes, the automatic directory creation will only occur for the default + location, not if -c or RECOLL_CONFDIR were used (in the latter cases, you + will have to create the directory). + + All configuration files share the same format. For example, a short + extract of the main configuration file might look as follows: + + # Space-separated list of directories to index. + topdirs = ~/docs /usr/share/doc + + [~/somedirectory-with-utf8-txt-files] + defaultcharset = utf-8 + + + There are three kinds of lines: + + o Comment (starts with #) or empty. + + o Parameter affectation (name = value). + + o Section definition ([somedirname]). + + Depending on the type of configuration file, section definitions either + separate groups of parameters or allow redefining some parameters for a + directory sub-tree. They stay in effect until another section definition, + or the end of file, is encountered. Some of the parameters used for + indexing are looked up hierarchically from the current directory location + upwards. Not all parameters can be meaningfully redefined, this is + specified for each in the next section. + + When found at the beginning of a file path, the tilde character (~) is + expanded to the name of the user's home directory, as a shell would do. + + White space is used for separation inside lists. List elements with + embedded spaces can be quoted using double-quotes. + + Encoding issues. Most of the configuration parameters are plain ASCII. Two + particular sets of values may cause encoding issues: + + o File path parameters may contain non-ascii characters and should use + the exact same byte values as found in the file system directory. + Usually, this means that the configuration file should use the system + default locale encoding. + + o The unac_except_trans parameter should be encoded in UTF-8. If your + system locale is not UTF-8, and you need to also specify non-ascii + file paths, this poses a difficulty because common text editors cannot + handle multiple encodings in a single file. In this relatively + unlikely case, you can edit the configuration file as two separate + text files with appropriate encodings, and concatenate them to create + the complete configuration. + + 5.4.1. Environment variables + + RECOLL_CONFDIR + + Defines the main configuration directory. + + RECOLL_TMPDIR, TMPDIR + + Locations for temporary files, in this order of priority. The + default if none of these is set is to use /tmp. Big temporary + files may be created during indexing, mostly for decompressing, + and also for processing, e.g. email attachments. + + RECOLL_CONFTOP, RECOLL_CONFMID + + Allow adding configuration directories with priorities below and + above the user directory (see above the Configuration overview + section for details). + + RECOLL_EXTRA_DBS, RECOLL_ACTIVE_EXTRA_DBS + + Help for setting up external indexes. See this paragraph for + explanations. + + RECOLL_DATADIR + + Defines replacement for the default location of Recoll data files, + normally found in, e.g., /usr/share/recoll). + + RECOLL_FILTERSDIR + + Defines replacement for the default location of Recoll filters, + normally found in, e.g., /usr/share/recoll/filters). + + ASPELL_PROG + + aspell program to use for creating the spelling dictionary. The + result has to be compatible with the libaspell which Recoll is + using. + + VARNAME + + Blabla + + 5.4.2. The main configuration file, recoll.conf + + recoll.conf is the main configuration file. It defines things like what to + index (top directories and things to ignore), and the default character + set to use for document types which do not specify it internally. + + The default configuration will index your home directory. If this is not + appropriate, start recoll to create a blank configuration, click Cancel, + and edit the configuration file before restarting the command. This will + start the initial indexing, which may take some time. + + Most of the following parameters can be changed from the Index + Configuration menu in the recoll interface. Some can only be set by + editing the configuration file. + + 5.4.2.1. Parameters affecting what documents we index: + + topdirs + + Specifies the list of directories or files to index (recursively + for directories). You can use symbolic links as elements of this + list. See the followLinks option about following symbolic links + found under the top elements (not followed by default). + + skippedNames + + A space-separated list of wilcard patterns for names of files or + directories that should be completely ignored. The list defined in + the default file is: + + skippedNames = #* bin CVS Cache cache* caughtspam tmp .thumbnails .svn \ + *~ .beagle .git .hg .bzr loop.ps .xsession-errors \ + .recoll* xapiandb recollrc recoll.conf + + The list can be redefined at any sub-directory in the indexed + area. + + The top-level directories are not affected by this list (that is, + a directory in topdirs might match and would still be indexed). + + The list in the default configuration does not exclude hidden + directories (names beginning with a dot), which means that it may + index quite a few things that you do not want. On the other hand, + email user agents like thunderbird usually store messages in + hidden directories, and you probably want this indexed. One + possible solution is to have .* in skippedNames, and add things + like ~/.thunderbird or ~/.evolution in topdirs. + + Not even the file names are indexed for patterns in this list. See + the noContentSuffixes variable for an alternative approach which + indexes the file names. + + noContentSuffixes + + This is a list of file name endings (not wildcard expressions, nor + dot-delimited suffixes). Only the names of matching files will be + indexed (no attempt at MIME type identification, no decompression, + no content indexing). This can be redefined for subdirectories, + and edited from the GUI. The default value is: + + noContentSuffixes = .md5 .map \ + .o .lib .dll .a .sys .exe .com \ + .mpp .mpt .vsd \ + .img .img.gz .img.bz2 .img.xz .image .image.gz .image.bz2 .image.xz \ + .dat .bak .rdf .log.gz .log .db .msf .pid \ + ,v ~ # + + skippedPaths and daemSkippedPaths + + A space-separated list of patterns for paths of files or + directories that should be skipped. There is no default in the + sample configuration file, but the code always adds the + configuration and database directories in there. + + skippedPaths is used both by batch and real time indexing. + daemSkippedPaths can be used to specify things that should be + indexed at startup, but not monitored. + + Example of use for skipping text files only in a specific + directory: + + skippedPaths = ~/somedir/*.txt + + + skippedPathsFnmPathname + + The values in the *skippedPaths variables are matched by default + with fnmatch(3), with the FNM_PATHNAME flag. This means that '/' + characters must be matched explicitely. You can set + skippedPathsFnmPathname to 0 to disable the use of FNM_PATHNAME + (meaning that /*/dir3 will match /dir1/dir2/dir3). + + zipSkippedNames + + A space-separated list of patterns for names of files or + directories that should be ignored inside zip archives. This is + used directly by the zip handler, and has a function similar to + skippedNames, but works independantly. Can be redefined for + filesystem subdirectories. For versions up to 1.19, you will need + to update the Zip handler and install a supplementary Python + module. The details are described on the Recoll wiki. + + followLinks + + Specifies if the indexer should follow symbolic links while + walking the file tree. The default is to ignore symbolic links to + avoid multiple indexing of linked files. No effort is made to + avoid duplication when this option is set to true. This option can + be set individually for each of the topdirs members by using + sections. It can not be changed below the topdirs level. + + indexedmimetypes + + Recoll normally indexes any file which it knows how to read. This + list lets you restrict the indexed MIME types to what you specify. + If the variable is unspecified or the list empty (the default), + all supported types are processed. Can be redefined for + subdirectories. + + excludedmimetypes + + This list lets you exclude some MIME types from indexing. Can be + redefined for subdirectories. + + compressedfilemaxkbs + + Size limit for compressed (.gz or .bz2) files. These need to be + decompressed in a temporary directory for identification, which + can be very wasteful if 'uninteresting' big compressed files are + present. Negative means no limit, 0 means no processing of any + compressed file. Defaults to -1. + + textfilemaxmbs + + Maximum size for text files. Very big text files are often + uninteresting logs. Set to -1 to disable (default 20MB). + + textfilepagekbs + + If set to other than -1, text files will be indexed as multiple + documents of the given page size. This may be useful if you do + want to index very big text files as it will both reduce memory + usage at index time and help with loading data to the preview + window. A size of a few megabytes would seem reasonable (default: + 1MB). + + membermaxkbs + + This defines the maximum size in kilobytes for an archive member + (zip, tar or rar at the moment). Bigger entries will be skipped. + + indexallfilenames + + Recoll indexes file names in a special section of the database to + allow specific file names searches using wild cards. This + parameter decides if file name indexing is performed only for + files with MIME types that would qualify them for full text + indexing, or for all files inside the selected subtrees, + independently of MIME type. + + usesystemfilecommand + + Decide if we execute a system command (file -i by default) as a + final step for determining the MIME type for a file (the main + procedure uses suffix associations as defined in the mimemap + file). This can be useful for files with suffix-less names, but it + will also cause the indexing of many bogus "text" files. + + systemfilecommand + + Command to use for mime for mime type determination if + usesystefilecommand is set. Recent versions of xdg-mime sometimes + work better than file. + + processwebqueue + + If this is set, process the directory where Web browser plugins + copy visited pages for indexing. + + webqueuedir + + The path to the web indexing queue. This is hard-coded in the + Firefox plugin as ~/.recollweb/ToIndex so there should be no need + to change it. + + 5.4.2.2. Parameters affecting how we generate terms: + + Changing some of these parameters will imply a full reindex. Also, when + using multiple indexes, it may not make sense to search indexes that don't + share the values for these parameters, because they usually affect both + search and index operations. + + indexStripChars + + Decide if we strip characters of diacritics and convert them to + lower-case before terms are indexed. If we don't, searches + sensitive to case and diacritics can be performed, but the index + will be bigger, and some marginal weirdness may sometimes occur. + The default is a stripped index (indexStripChars = 1) for now. + When using multiple indexes for a search, this parameter must be + defined identically for all. Changing the value implies an index + reset. + + maxTermExpand + + Maximum expansion count for a single term (e.g.: when using + wildcards). The default of 10000 is reasonable and will avoid + queries that appear frozen while the engine is walking the term + list. + + maxXapianClauses + + Maximum number of elementary clauses we can add to a single Xapian + query. In some cases, the result of term expansion can be + multiplicative, and we want to avoid using excessive memory. The + default of 100 000 should be both high enough in most cases and + compatible with current typical hardware configurations. + + nonumbers + + If this set to true, no terms will be generated for numbers. For + example "123", "1.5e6", 192.168.1.4, would not be indexed + ("value123" would still be). Numbers are often quite interesting + to search for, and this should probably not be set except for + special situations, ie, scientific documents with huge amounts of + numbers in them. This can only be set for a whole index, not for a + subtree. + + nocjk + + If this set to true, specific east asian (Chinese Korean Japanese) + characters/word splitting is turned off. This will save a small + amount of cpu if you have no CJK documents. If your document base + does include such text but you are not interested in searching it, + setting nocjk may be a significant time and space saver. + + cjkngramlen + + This lets you adjust the size of n-grams used for indexing CJK + text. The default value of 2 is probably appropriate in most + cases. A value of 3 would allow more precision and efficiency on + longer words, but the index will be approximately twice as large. + + indexstemminglanguages + + A list of languages for which the stem expansion databases will be + built. See recollindex(1) or use the recollindex -l command for + possible values. You can add a stem expansion database for a + different language by using recollindex -s, but it will be deleted + during the next indexing. Only languages listed in the + configuration file are permanent. + + defaultcharset + + The name of the character set used for files that do not contain a + character set definition (ie: plain text files). This can be + redefined for any sub-directory. If it is not set at all, the + character set used is the one defined by the nls environment ( + LC_ALL, LC_CTYPE, LANG), or iso8859-1 if nothing is set. + + unac_except_trans + + This is a list of characters, encoded in UTF-8, which should be + handled specially when converting text to unaccented lowercase. + For example, in Swedish, the letter a with diaeresis has full + alphabet citizenship and should not be turned into an a. Each + element in the space-separated list has the special character as + first element and the translation following. The handling of both + the lowercase and upper-case versions of a character should be + specified, as appartenance to the list will turn-off both standard + accent and case processing. Example for Swedish: + + unac_except_trans = aaaa AAaa a:a: A:a: o:o: O:o: + + + Note that the translation is not limited to a single character, + you could very well have something like u:ue in the list. + + The default value set for unac_except_trans can't be listed here + because I have trouble with SGML and UTF-8, but it only contains + ligature decompositions: german ss, oe, ae, fi, fl. + + This parameter can't be defined for subdirectories, it is global, + because there is no way to do otherwise when querying. If you have + document sets which would need different values, you will have to + index and query them separately. + + maildefcharset + + This can be used to define the default character set specifically + for email messages which don't specify it. This is mainly useful + for readpst (libpst) dumps, which are utf-8 but do not say so. + + localfields + + This allows setting fields for all documents under a given + directory. Typical usage would be to set an "rclaptg" field, to be + used in mimeview to select a specific viewer. If several fields + are to be set, they should be separated with a semi-colon (';') + character, which there is currently no way to escape. Also note + the initial semi-colon. Example: localfields= ;rclaptg=gnus;other + = val, then select specifier viewer with mimetype|tag=... in + mimeview. + + testmodifusemtime + + If true, use mtime instead of default ctime to determine if a file + has been modified (in addition to size, which is always used). + Setting this can reduce re-indexing on systems where extended + attributes are modified (by some other application), but not + indexed (changing extended attributes only affects ctime). Notes: + + o This may prevent detection of change in some marginal file + rename cases (the target would need to have the same size and + mtime). + + o You should probably also set noxattrfields to 1 in this case, + except if you still prefer to perform xattr indexing, for + example if the local file update pattern makes it of value + (as in general, there is a risk for pure extended attributes + updates without file modification to go undetected). + + Perform a full index reset after changing the value of this + parameter. + + noxattrfields + + Recoll versions 1.19 and later automatically translate file + extended attributes into document fields (to be processed + according to the parameters from the fields file). Setting this + variable to 1 will disable the behaviour. + + metadatacmds + + This allows executing external commands for each file and storing + the output in Recoll document fields. This could be used for + example to index external tag data. The value is a list of field + names and commands, don't forget an initial semi-colon. Example: + + [/some/area/of/the/fs] + metadatacmds = ; tags = tmsu tags %f; otherfield = somecmd -xx %f + + + As a specially disgusting hack brought by Recoll 1.19.7, if a + "field name" begins with rclmulti, the data returned by the + command is expected to contain multiple field values, in + configuration file format. This allows setting several fields by + executing a single command. Example: + + metadatacmds = ; rclmulti1 = somecmd %f + + + If somecmd returns data in the form of: + + field1 = value1 + field2 = value for field2 + + + field1 and field2 will be set inside the document metadata. + + 5.4.2.3. Parameters affecting where and how we store things: + + dbdir + + The name of the Xapian data directory. It will be created if + needed when the index is initialized. If this is not an absolute + path, it will be interpreted relative to the configuration + directory. The value can have embedded spaces but starting or + trailing spaces will be trimmed. You cannot use quotes here. + + idxstatusfile + + The name of the scratch file where the indexer process updates its + status. Default: idxstatus.txt inside the configuration directory. + + maxfsoccuppc + + Maximum file system occupation before we stop indexing. The value + is a percentage, corresponding to what the "Capacity" df output + column shows. The default value is 0, meaning no checking. + + mboxcachedir + + The directory where mbox message offsets cache files are held. + This is normally $RECOLL_CONFDIR/mboxcache, but it may be useful + to share a directory between different configurations. + + mboxcacheminmbs + + The minimum mbox file size over which we cache the offsets. There + is really no sense in caching offsets for small files. The default + is 5 MB. + + webcachedir + + This is only used by the web browser plugin indexing code, and + defines where the cache for visited pages will live. Default: + $RECOLL_CONFDIR/webcache + + webcachemaxmbs + + This is only used by the web browser plugin indexing code, and + defines the maximum size for the web page cache. Default: 40 MB. + Quite unfortunately, this is only taken into account when creating + the cache file. You need to delete the file for a change to be + taken into account. + + idxflushmb + + Threshold (megabytes of new text data) where we flush from memory + to disk index. Setting this can help control memory usage. A value + of 0 means no explicit flushing, letting Xapian use its own + default, which is flushing every 10000 (or XAPIAN_FLUSH_THRESHOLD) + documents, which gives little memory usage control, as memory + usage also depends on average document size. The default value is + 10, and it is probably a bit low. If your system usually has free + memory, you can try higher values between 20 and 80. In my + experience, values beyond 100 are always counterproductive. + + 5.4.2.4. Parameters affecting multithread processing + + The Recoll indexing process recollindex can use multiple threads to speed + up indexing on multiprocessor systems. The work done to index files is + divided in several stages and some of the stages can be executed by + multiple threads. The stages are: + + 1. File system walking: this is always performed by the main thread. + 2. File conversion and data extraction. + 3. Text processing (splitting, stemming, etc.) + 4. Xapian index update. + + You can also read a longer document about the transformation of Recoll + indexing to multithreading. + + The threads configuration is controlled by two configuration file + parameters. + + thrQSizes + + This variable defines the job input queues configuration. There + are three possible queues for stages 2, 3 and 4, and this + parameter should give the queue depth for each stage (three + integer values). If a value of -1 is used for a given stage, no + queue is used, and the thread will go on performing the next + stage. In practise, deep queues have not been shown to increase + performance. A value of 0 for the first queue tells Recoll to + perform autoconfiguration (no need for the two other values in + this case) - this is the default configuration. + + thrTCounts + + This defines the number of threads used for each stage. If a value + of -1 is used for one of the queue depths, the corresponding + thread count is ignored. It makes no sense to use a value other + than 1 for the last stage because updating the Xapian index is + necessarily single-threaded (and protected by a mutex). + + The following example would use three queues (of depth 2), and 4 threads + for converting source documents, 2 for processing their text, and one to + update the index. This was tested to be the best configuration on the test + system (quadri-processor with multiple disks). + + thrQSizes = 2 2 2 + thrTCounts = 4 2 1 + + The following example would use a single queue, and the complete + processing for each document would be performed by a single thread + (several documents will still be processed in parallel in most cases). The + threads will use mutual exclusion when entering the index update stage. In + practise the performance would be close to the precedent case in general, + but worse in certain cases (e.g. a Zip archive would be performed purely + sequentially), so the previous approach is preferred. YMMV... The 2 last + values for thrTCounts are ignored. + + thrQSizes = 2 -1 -1 + thrTCounts = 6 1 1 + + The following example would disable multithreading. Indexing will be + performed by a single thread. + + thrQSizes = -1 -1 -1 + + 5.4.2.5. Miscellaneous parameters: + + autodiacsens + + IF the index is not stripped, decide if we automatically trigger + diacritics sensitivity if the search term has accented characters + (not in unac_except_trans). Else you need to use the query + language and the D modifier to specify diacritics sensitivity. + Default is no. + + autocasesens + + IF the index is not stripped, decide if we automatically trigger + character case sensitivity if the search term has upper-case + characters in any but the first position. Else you need to use the + query language and the C modifier to specify character-case + sensitivity. Default is yes. + + loglevel,daemloglevel + + Verbosity level for recoll and recollindex. A value of 4 lists + quite a lot of debug/information messages. 2 only lists errors. + The daemversion is specific to the indexing monitor daemon. + + logfilename, daemlogfilename + + Where the messages should go. 'stderr' can be used as a special + value, and is the default. The daemversion is specific to the + indexing monitor daemon. + + checkneedretryindexscript + + This defines the name for a command executed by recollindex when + starting indexing. If the exit status of the command is 0, + recollindex retries to index all files which previously could not + be indexed because of data extraction errors. The default value is + a script which checks if any of the common bin directories have + changed (indicating that a helper program may have been + installed). + + mondelaypatterns + + This allows specify wildcard path patterns (processed with + fnmatch(3) with 0 flag), to match files which change too often and + for which a delay should be observed before re-indexing. This is a + space-separated list, each entry being a pattern and a time in + seconds, separated by a colon. You can use double quotes if a path + entry contains white space. Example: + + mondelaypatterns = *.log:20 "this one has spaces*:10" + + + monixinterval + + Minimum interval (seconds) for processing the indexing queue. The + real time monitor does not process each event when it comes in, + but will wait this time for the queue to accumulate to diminish + overhead and in order to aggregate multiple events to the same + file. Default 30 S. + + monauxinterval + + Period (in seconds) at which the real time monitor will regenerate + the auxiliary databases (spelling, stemming) if needed. The + default is one hour. + + monioniceclass, monioniceclassdata + + These allow defining the ionice class and data used by the indexer + (default class 3, no data). + + filtermaxseconds + + Maximum handler execution time, after which it is aborted. Some + postscript programs just loop... + + filtermaxmbytes + + Recoll 1.20.7 and later. Maximum handler memory utilisation. This + uses setrlimit(RLIMIT_AS) on most systems (total virtual memory + space size limit). Some programs may start with 500 MBytes of + mapped shared libraries, so take this into account when choosing a + value. The default is a liberal 2000MB. + + filtersdir + + A directory to search for the external input handler scripts used + to index some types of files. The value should not be changed, + except if you want to modify one of the default scripts. The value + can be redefined for any sub-directory. + + iconsdir + + The name of the directory where recoll result list icons are + stored. You can change this if you want different images. + + idxabsmlen + + Recoll stores an abstract for each indexed file inside the + database. The text can come from an actual 'abstract' section in + the document or will just be the beginning of the document. It is + stored in the index so that it can be displayed inside the result + lists without decoding the original file. The idxabsmlen parameter + defines the size of the stored abstract. The default value is 250 + bytes. The search interface gives you the choice to display this + stored text or a synthetic abstract built by extracting text + around the search terms. If you always prefer the synthetic + abstract, you can reduce this value and save a little space. + + idxmetastoredlen + + Maximum stored length for metadata fields. This does not affect + indexing (the whole field is processed anyway), just the amount of + data stored in the index for the purpose of displaying fields + inside result lists or previews. The default value is 150 bytes + which may be too low if you have custom fields. + + aspellLanguage + + Language definitions to use when creating the aspell dictionary. + The value must match a set of aspell language definition files. + You can type "aspell config" to see where these are installed + (look for data-dir). The default if the variable is not set is to + use your desktop national language environment to guess the value. + + noaspell + + If this is set, the aspell dictionary generation is turned off. + Useful for cases where you don't need the functionality or when it + is unusable because aspell crashes during dictionary generation. + + mhmboxquirks + + This allows definining location-related quirks for the mailbox + handler. Currently only the tbird flag is defined, and it should + be set for directories which hold Thunderbird data, as their + folder format is weird. + + 5.4.3. The fields file + + This file contains information about dynamic fields handling in Recoll. + Some very basic fields have hard-wired behaviour, and, mostly, you should + not change the original data inside the fields file. But you can create + custom fields fitting your data and handle them just like they were native + ones. + + The fields file has several sections, which each define an aspect of + fields processing. Quite often, you'll have to modify several sections to + obtain the desired behaviour. + + We will only give a short description here, you should refer to the + comments inside the default file for more detailed information. + + Field names should be lowercase alphabetic ASCII. + + [prefixes] + + A field becomes indexed (searchable) by having a prefix defined in + this section. + + [stored] + + A field becomes stored (displayable inside results) by having its + name listed in this section (typically with an empty value). + + [aliases] + + This section defines lists of synonyms for the canonical names + used inside the [prefixes] and [stored] sections + + [queryaliases] + + This section also defines aliases for the canonic field names, + with the difference that the substitution will only be used at + query time, avoiding any possibility that the value would pick-up + random metadata from documents. + + handler-specific sections + + Some input handlers may need specific configuration for handling + fields. Only the email message handler currently has such a + section (named [mail]). It allows indexing arbitrary email headers + in addition to the ones indexed by default. Other such sections + may appear in the future. + + Here follows a small example of a personal fields file. This would extract + a specific email header and use it as a searchable field, with data + displayable inside result lists. (Side note: as the email handler does no + decoding on the values, only plain ascii headers can be indexed, and only + the first occurrence will be used for headers that occur several times). + + [prefixes] + # Index mailmytag contents (with the given prefix) + mailmytag = XMTAG + + [stored] + # Store mailmytag inside the document data record (so that it can be + # displayed - as %(mailmytag) - in result lists). + mailmytag = + + [queryaliases] + filename = fn + containerfilename = cfn + + [mail] + # Extract the X-My-Tag mail header, and use it internally with the + # mailmytag field name + x-my-tag = mailmytag + + 5.4.3.1. Extended attributes in the fields file + + Recoll versions 1.19 and later process user extended file attributes as + documents fields by default. + + Attributes are processed as fields of the same name, after removing the + user prefix on Linux. + + The [xattrtofields] section of the fields file allows specifying + translations from extended attributes names to Recoll field names. An + empty translation disables use of the corresponding attribute data. + + 5.4.4. The mimemap file + + mimemap specifies the file name extension to MIME type mappings. + + For file names without an extension, or with an unknown one, the system's + file -i command will be executed to determine the MIME type (this can be + switched off inside the main configuration file). + + The mappings can be specified on a per-subtree basis, which may be useful + in some cases. Example: gaim logs have a .txt extension but should be + handled specially, which is possible because they are usually all located + in one place. + + The recoll_noindex mimemap variable has been moved to recoll.conf and + renamed to noContentSuffixes, while keeping the same function, as of + Recoll version 1.21. For older Recoll versions, see the documentation for + noContentSuffixes but use recoll_noindex in mimemap. + + 5.4.5. The mimeconf file + + mimeconf specifies how the different MIME types are handled for indexing, + and which icons are displayed in the recoll result lists. + + Changing the parameters in the [index] section is probably not a good idea + except if you are a Recoll developer. + + The [icons] section allows you to change the icons which are displayed by + recoll in the result lists (the values are the basenames of the png images + inside the iconsdir directory (specified in recoll.conf). + + 5.4.6. The mimeview file + + mimeview specifies which programs are started when you click on an Open + link in a result list. Ie: HTML is normally displayed using firefox, but + you may prefer Konqueror, your openoffice.org program might be named + oofice instead of openoffice etc. + + Changes to this file can be done by direct editing, or through the recoll + GUI preferences dialog. + + If Use desktop preferences to choose document editor is checked in the + Recoll GUI preferences, all mimeview entries will be ignored except the + one labelled application/x-all (which is set to use xdg-open by default). + + In this case, the xallexcepts top level variable defines a list of MIME + type exceptions which will be processed according to the local entries + instead of being passed to the desktop. This is so that specific Recoll + options such as a page number or a search string can be passed to + applications that support them, such as the evince viewer. + + As for the other configuration files, the normal usage is to have a + mimeview inside your own configuration directory, with just the + non-default entries, which will override those from the central + configuration file. + + All viewer definition entries must be placed under a [view] section. + + The keys in the file are normally MIME types. You can add an application + tag to specialize the choice for an area of the filesystem (using a + localfields specification in mimeconf). The syntax for the key is + mimetype|tag + + The nouncompforviewmts entry, (placed at the top level, outside of the + [view] section), holds a list of MIME types that should not be + uncompressed before starting the viewer (if they are found compressed, ie: + mydoc.doc.gz). + + The right side of each assignment holds a command to be executed for + opening the file. The following substitutions are performed: + + o %D. Document date + + o %f. File name. This may be the name of a temporary file if it was + necessary to create one (ie: to extract a subdocument from a + container). + + o %i. Internal path, for subdocuments of containers. The format depends + on the container type. If this appears in the command line, Recoll + will not create a temporary file to extract the subdocument, expecting + the called application (possibly a script) to be able to handle it. + + o %M. MIME type + + o %p. Page index. Only significant for a subset of document types, + currently only PDF, Postscript and DVI files. Can be used to start the + editor at the right page for a match or snippet. + + o %s. Search term. The value will only be set for documents with indexed + page numbers (ie: PDF). The value will be one of the matched search + terms. It would allow pre-setting the value in the "Find" entry inside + Evince for example, for easy highlighting of the term. + + o %u. Url. + + In addition to the predefined values above, all strings like %(fieldname) + will be replaced by the value of the field named fieldname for the + document. This could be used in combination with field customisation to + help with opening the document. + + 5.4.7. The ptrans file + + ptrans specifies query-time path translations. These can be useful in + multiple cases. + + The file has a section for any index which needs translations, either the + main one or additional query indexes. The sections are named with the + Xapian index directory names. No slash character should exist at the end + of the paths (all comparisons are textual). An exemple should make things + sufficiently clear + + [/home/me/.recoll/xapiandb] + /this/directory/moved = /to/this/place + + [/path/to/additional/xapiandb] + /server/volume1/docdir = /net/server/volume1/docdir + /server/volume2/docdir = /net/server/volume2/docdir + + + 5.4.8. Examples of configuration adjustments + + 5.4.8.1. Adding an external viewer for an non-indexed type + + Imagine that you have some kind of file which does not have indexable + content, but for which you would like to have a functional Open link in + the result list (when found by file name). The file names end in .blob and + can be displayed by application blobviewer. + + You need two entries in the configuration files for this to work: + + o In $RECOLL_CONFDIR/mimemap (typically ~/.recoll/mimemap), add the + following line: + + .blob = application/x-blobapp + + Note that the MIME type is made up here, and you could call it + diesel/oil just the same. + + o In $RECOLL_CONFDIR/mimeview under the [view] section, add: + + application/x-blobapp = blobviewer %f + + We are supposing that blobviewer wants a file name parameter here, you + would use %u if it liked URLs better. + + If you just wanted to change the application used by Recoll to display a + MIME type which it already knows, you would just need to edit mimeview. + The entries you add in your personal file override those in the central + configuration, which you do not need to alter. mimeview can also be + modified from the Gui. + + 5.4.8.2. Adding indexing support for a new file type + + Let us now imagine that the above .blob files actually contain indexable + text and that you know how to extract it with a command line program. + Getting Recoll to index the files is easy. You need to perform the above + alteration, and also to add data to the mimeconf file (typically in + ~/.recoll/mimeconf): + + o Under the [index] section, add the following line (more about the + rclblob indexing script later): + + application/x-blobapp = exec rclblob + + o Under the [icons] section, you should choose an icon to be displayed + for the files inside the result lists. Icons are normally 64x64 pixels + PNG files which live in /usr/[local/]share/recoll/images. + + o Under the [categories] section, you should add the MIME type where it + makes sense (you can also create a category). Categories may be used + for filtering in advanced search. + + The rclblob handler should be an executable program or script which exists + inside /usr/[local/]share/recoll/filters. It will be given a file name as + argument and should output the text or html contents on the standard + output. + + The filter programming section describes in more detail how to write an + input handler. + + ---------------------------------------------------------------------- + + Prev Up + 5.3. Building from source Home diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 00000000..a3d7c577 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,638 @@ + +CXXFLAGS ?= @CXXFLAGS@ +LIBXAPIAN=@LIBXAPIAN@ +XAPIANCXXFLAGS=@XAPIANCXXFLAGS@ +LIBICONV=@LIBICONV@ +INCICONV=@INCICONV@ +LIBFAM = @LIBFAM@ +RCLLIBVERSION=@RCLLIBVERSION@ +X_CFLAGS=@X_CFLAGS@ +X_PRE_LIBS=@X_PRE_LIBS@ +X_LIBS=@X_LIBS@ +X_EXTRA_LIBS=@X_EXTRA_LIBS@ +X_LIBX11=@X_LIBX11@ +DEFS=@DEFS@ + +COMMONCPPFLAGS = -I. \ + -I$(top_srcdir)/aspell \ + -I$(top_srcdir)/bincimapmime \ + -I$(top_srcdir)/common \ + -I$(top_srcdir)/index \ + -I$(top_srcdir)/internfile \ + -I$(top_srcdir)/rcldb \ + -I$(top_srcdir)/unac \ + -I$(top_srcdir)/utils \ + -I$(top_srcdir)/xaposix \ + -DBUILDING_RECOLL + +AM_CPPFLAGS = -Wall -Wno-unused \ + $(COMMONCPPFLAGS) \ + $(INCICONV) \ + $(XAPIANCXXFLAGS) \ + $(X_CFLAGS) \ + -DRECOLL_DATADIR=\"${pkgdatadir}\" \ + -D_GNU_SOURCE \ + $(DEFS) + +ACLOCAL_AMFLAGS = -I m4 + +if NOTHREADS + LIBTHREADS= +else + LIBTHREADS= $(LIBSYSTHREADS) +endif + +librcldir = $(libdir)/recoll +librcl_LTLIBRARIES = librecoll.la + +librecoll_la_SOURCES = \ +aspell/aspell-local.h \ +aspell/rclaspell.cpp \ +aspell/rclaspell.h \ +bincimapmime/config.h \ +bincimapmime/convert.cc \ +bincimapmime/convert.h \ +bincimapmime/mime-inputsource.h \ +bincimapmime/mime-parsefull.cc \ +bincimapmime/mime-parseonlyheader.cc \ +bincimapmime/mime-printbody.cc \ +bincimapmime/mime-utils.h \ +bincimapmime/mime.cc \ +bincimapmime/mime.h \ +common/beaglequeuecache.cpp \ +common/beaglequeuecache.h \ +common/conf_post.h \ +common/cstr.cpp \ +common/cstr.h \ +common/rclconfig.cpp \ +common/rclconfig.h \ +common/rclinit.cpp \ +common/rclinit.h \ +common/syngroups.cpp \ +common/syngroups.h \ +common/textsplit.cpp \ +common/textsplit.h \ +common/unacpp.cpp \ +common/unacpp.h \ +common/uproplist.h \ +index/beaglequeue.cpp \ +index/beaglequeue.h \ +index/bglfetcher.cpp \ +index/bglfetcher.h \ +index/checkretryfailed.cpp \ +index/checkretryfailed.h \ +index/fetcher.cpp \ +index/fetcher.h \ +index/fsfetcher.cpp \ +index/fsfetcher.h \ +index/fsindexer.cpp \ +index/fsindexer.h \ +index/indexer.cpp \ +index/indexer.h \ +index/mimetype.cpp \ +index/mimetype.h \ +index/rclmon.h \ +index/recollindex.h \ +index/subtreelist.cpp \ +index/subtreelist.h \ +internfile/Filter.h \ +internfile/extrameta.cpp \ +internfile/extrameta.h \ +internfile/htmlparse.cpp \ +internfile/htmlparse.h \ +internfile/indextext.h \ +internfile/internfile.cpp \ +internfile/internfile.h \ +internfile/mh_exec.cpp \ +internfile/mh_exec.h \ +internfile/mh_execm.cpp \ +internfile/mh_execm.h \ +internfile/mh_html.cpp \ +internfile/mh_html.h \ +internfile/mh_mail.cpp \ +internfile/mh_mail.h \ +internfile/mh_mbox.cpp \ +internfile/mh_mbox.h \ +internfile/mh_null.h \ +internfile/mh_symlink.h \ +internfile/mh_text.cpp \ +internfile/mh_text.h \ +internfile/mh_unknown.h \ +internfile/mimehandler.cpp \ +internfile/mimehandler.h \ +internfile/myhtmlparse.cpp \ +internfile/myhtmlparse.h \ +internfile/txtdcode.cpp \ +internfile/uncomp.cpp \ +internfile/uncomp.h \ +query/docseq.cpp \ +query/docseq.h \ +query/docseqdb.cpp \ +query/docseqdb.h \ +query/docseqdocs.h \ +query/docseqhist.cpp \ +query/docseqhist.h \ +query/dynconf.cpp \ +query/dynconf.h \ +query/filtseq.cpp \ +query/filtseq.h \ +query/plaintorich.cpp \ +query/plaintorich.h \ +query/recollq.cpp \ +query/recollq.h \ +query/reslistpager.cpp \ +query/reslistpager.h \ +query/sortseq.cpp \ +query/sortseq.h \ +query/wasaparse.ypp \ +query/wasaparseaux.cpp \ +query/wasaparserdriver.h \ +query/wasatorcl.h \ +rcldb/daterange.cpp \ +rcldb/daterange.h \ +rcldb/expansiondbs.cpp \ +rcldb/expansiondbs.h \ +rcldb/rclabstract.cpp \ +rcldb/rcldb.cpp \ +rcldb/rcldb.h \ +rcldb/rcldb_p.h \ +rcldb/rcldoc.cpp \ +rcldb/rcldoc.h \ +rcldb/rcldups.cpp \ +rcldb/rclquery.cpp \ +rcldb/rclquery.h \ +rcldb/rclquery_p.h \ +rcldb/rclterms.cpp \ +rcldb/searchdata.cpp \ +rcldb/searchdata.h \ +rcldb/searchdatatox.cpp \ +rcldb/searchdataxml.cpp \ +rcldb/stemdb.cpp \ +rcldb/stemdb.h \ +rcldb/stoplist.cpp \ +rcldb/stoplist.h \ +rcldb/synfamily.cpp \ +rcldb/synfamily.h \ +rcldb/termproc.h \ +rcldb/xmacros.h \ +unac/unac.cpp \ +unac/unac.h \ +unac/unac_version.h \ +utils/appformime.cpp \ +utils/appformime.h \ +utils/base64.cpp \ +utils/base64.h \ +utils/cancelcheck.cpp \ +utils/cancelcheck.h \ +utils/chrono.h \ +utils/chrono.cpp \ +utils/circache.cpp \ +utils/circache.h \ +utils/closefrom.cpp \ +utils/closefrom.h \ +utils/conftree.cpp \ +utils/conftree.h \ +utils/copyfile.cpp \ +utils/copyfile.h \ +utils/cpuconf.cpp \ +utils/cpuconf.h \ +utils/debuglog.cpp \ +utils/debuglog.h \ +utils/ecrontab.cpp \ +utils/ecrontab.h \ +utils/execmd.cpp \ +utils/execmd.h \ +utils/fileudi.cpp \ +utils/fileudi.h \ +utils/fstreewalk.cpp \ +utils/fstreewalk.h \ +utils/hldata.h \ +utils/idfile.cpp \ +utils/idfile.h \ +utils/md5.cpp \ +utils/md5.h \ +utils/md5ut.cpp \ +utils/md5ut.h \ +utils/mimeparse.cpp \ +utils/mimeparse.h \ +utils/netcon.cpp \ +utils/netcon.h \ +utils/pathut.cpp \ +utils/pathut.h \ +utils/ptmutex.h \ +utils/pxattr.cpp \ +utils/pxattr.h \ +utils/rclionice.cpp \ +utils/rclionice.h \ +utils/readfile.cpp \ +utils/readfile.h \ +utils/refcntr.h \ +utils/smallut.cpp \ +utils/smallut.h \ +utils/strmatcher.cpp \ +utils/strmatcher.h \ +utils/transcode.cpp \ +utils/transcode.h \ +utils/utf8iter.h \ +utils/wipedir.cpp \ +utils/wipedir.h \ +utils/workqueue.h \ +utils/x11mon.cpp \ +utils/x11mon.h \ +xaposix/safefcntl.h \ +xaposix/safesysstat.h \ +xaposix/safesyswait.h \ +xaposix/safeunistd.h + +BUILT_SOURCES = query/wasaparse.cpp +AM_YFLAGS = -d + +# We use -release: the lib is only shared +# between recoll programs from the same release. +# -version-info $(VERSION_INFO) +librecoll_la_LDFLAGS = -release $(VERSION) \ + -Wl,--no-undefined -Wl,--warn-unresolved-symbols + +librecoll_la_LIBADD = $(LIBXAPIAN) $(LIBICONV) $(X_LIBX11) $(LIBTHREADS) + +# There is probably a better way to do this. The KIO needs to be linked +# with librecoll, but librecoll is installed into a non-standard place +# (/usr/lib/recoll). Debian packaging has something against setting an +# rpath on the kio (cause it's not the same package as the lib), so I don't +# know how to link it dynamically. The other thing I don't know is how to +# force automake to build a static lib with the PIC objects. So the +# following target, which is only used from the KIO build, deletes any .a +# and .so and rebuilds the .a with the pic objs (the kio build calls +# configured --disable-static). +# Of course this is very uncomfortably close to automake/libtool internals +# and may not work on all systems. +PicStatic: $(librecoll_la_OBJECTS) + rm -f .libs/librecoll.a + rm -f .libs/librecoll.so + libtool --mode=link gcc -g -O -o librecoll.la \ + $(librecoll_la_OBJECTS) + +bin_PROGRAMS = recollindex +if MAKECMDLINE + bin_PROGRAMS += recollq +endif + +if MAKEXADUMP + bin_PROGRAMS += xadump +endif + +recollindex_SOURCES = \ + index/recollindex.cpp \ + index/rclmonprc.cpp \ + index/rclmonrcv.cpp +recollindex_LDADD = librecoll.la + +recollq_SOURCES = query/recollqmain.cpp +recollq_LDADD = librecoll.la + +xadump_SOURCES = query/xadump.cpp +xadump_LDADD = librecoll.la $(LIBXAPIAN) $(LIBICONV) + +# Note: I'd prefer the generated query parser files not to be distributed +# at all, but failed to achieve this +EXTRA_DIST = \ +bincimapmime/00README.recoll bincimapmime/AUTHORS bincimapmime/COPYING \ +\ +desktop/hotrecoll.py \ +desktop/recoll.appdata.xml \ +desktop/recollindex.desktop \ +desktop/recoll_index_on_ac.sh \ +desktop/recoll-searchgui.desktop \ +desktop/recoll.png desktop/recoll.svg desktop/recoll.xcf \ +\ +doc/man \ +doc/prog \ +doc/user/*.html doc/user/*.css doc/user/*.txt doc/user/*.xml doc/user/Makefile \ +\ +filters \ +\ +index/rclmon.sh \ +\ +kde/kioslave/kio_recoll/00README.txt \ +kde/kioslave/kio_recoll/CMakeLists.txt \ +kde/kioslave/kio_recoll/data/help.html \ +kde/kioslave/kio_recoll/data/searchable.html \ +kde/kioslave/kio_recoll/data/welcome.html \ +kde/kioslave/kio_recoll/dirif.cpp \ +kde/kioslave/kio_recoll/htmlif.cpp \ +kde/kioslave/kio_recoll/kio_recoll.cpp \ +kde/kioslave/kio_recoll/kio_recoll.h \ +kde/kioslave/kio_recoll/recollf.protocol \ +kde/kioslave/kio_recoll/recollnolist.protocol \ +kde/kioslave/kio_recoll/recoll.protocol \ +\ +query/location.hh query/position.hh query/stack.hh \ +\ +qtgui/advsearch.ui \ +qtgui/advsearch_w.cpp \ +qtgui/advsearch_w.h \ +qtgui/advshist.cpp \ +qtgui/advshist.h \ +qtgui/confgui/confgui.cpp \ +qtgui/confgui/confgui.h \ +qtgui/confgui/confguiindex.cpp \ +qtgui/confgui/confguiindex.h \ +qtgui/confgui/conflinkrcl.h \ +qtgui/confgui/main.cpp \ +qtgui/crontool.cpp \ +qtgui/crontool.h \ +qtgui/crontool.ui \ +qtgui/editdialog.h \ +qtgui/editdialog.ui \ +qtgui/firstidx.h \ +qtgui/firstidx.ui \ +qtgui/fragbuts.cpp \ +qtgui/fragbuts.h \ +qtgui/guiutils.cpp \ +qtgui/guiutils.h \ +qtgui/i18n/recoll_cs.qm qtgui/i18n/recoll_cs.ts \ +qtgui/i18n/recoll_da.qm qtgui/i18n/recoll_da.ts \ +qtgui/i18n/recoll_de.qm qtgui/i18n/recoll_de.ts \ +qtgui/i18n/recoll_el.qm qtgui/i18n/recoll_el.ts \ +qtgui/i18n/recoll_es.qm qtgui/i18n/recoll_es.ts \ +qtgui/i18n/recoll_fr.qm qtgui/i18n/recoll_fr.ts \ +qtgui/i18n/recoll_it.qm qtgui/i18n/recoll_it.ts \ +qtgui/i18n/recoll_lt.qm qtgui/i18n/recoll_lt.ts \ +qtgui/i18n/recoll_pl.qm qtgui/i18n/recoll_pl.ts \ +qtgui/i18n/recoll_ru.qm qtgui/i18n/recoll_ru.ts \ +qtgui/i18n/recoll_tr.qm qtgui/i18n/recoll_tr.ts \ +qtgui/i18n/recoll_uk.qm qtgui/i18n/recoll_uk.ts \ +qtgui/i18n/recoll_xx.qm qtgui/i18n/recoll_xx.ts \ +qtgui/i18n/recoll_zh.qm qtgui/i18n/recoll_zh.ts \ +qtgui/i18n/recoll_zh_CN.qm qtgui/i18n/recoll_zh_CN.ts \ +qtgui/idxsched.h \ +qtgui/idxsched.ui \ +qtgui/images/asearch.png \ +qtgui/images/cancel.png \ +qtgui/images/close.png \ +qtgui/images/code-block.png \ +qtgui/images/down.png \ +qtgui/images/firstpage.png \ +qtgui/images/history.png \ +qtgui/images/nextpage.png \ +qtgui/images/prevpage.png \ +qtgui/images/recoll.icns \ +qtgui/images/recoll.png \ +qtgui/images/sortparms.png \ +qtgui/images/spell.png \ +qtgui/images/table.png \ +qtgui/images/up.png \ +qtgui/listdialog.h \ +qtgui/listdialog.ui \ +qtgui/main.cpp \ +qtgui/mtpics/License_sidux.txt \ +qtgui/mtpics/README \ +qtgui/mtpics/aptosid-book.png \ +qtgui/mtpics/aptosid-manual-copyright.txt \ +qtgui/mtpics/aptosid-manual.png \ +qtgui/mtpics/archive.png \ +qtgui/mtpics/book.png \ +qtgui/mtpics/bookchap.png \ +qtgui/mtpics/document.png \ +qtgui/mtpics/drawing.png \ +qtgui/mtpics/emblem-symbolic-link.png \ +qtgui/mtpics/folder.png \ +qtgui/mtpics/html.png \ +qtgui/mtpics/image.png \ +qtgui/mtpics/message.png \ +qtgui/mtpics/mozilla_doc.png \ +qtgui/mtpics/pdf.png \ +qtgui/mtpics/pidgin.png \ +qtgui/mtpics/postscript.png \ +qtgui/mtpics/presentation.png \ +qtgui/mtpics/sidux-book.png \ +qtgui/mtpics/soffice.png \ +qtgui/mtpics/source.png \ +qtgui/mtpics/sownd.png \ +qtgui/mtpics/spreadsheet.png \ +qtgui/mtpics/text-x-python.png \ +qtgui/mtpics/txt.png \ +qtgui/mtpics/video.png \ +qtgui/mtpics/wordprocessing.png \ +qtgui/multisave.cpp \ +qtgui/multisave.h \ +qtgui/preview_load.cpp \ +qtgui/preview_load.h \ +qtgui/preview_plaintorich.cpp \ +qtgui/preview_plaintorich.h \ +qtgui/preview_w.cpp \ +qtgui/preview_w.h \ +qtgui/ptrans.ui \ +qtgui/ptrans_w.cpp \ +qtgui/ptrans_w.h \ +qtgui/rclhelp.cpp \ +qtgui/rclhelp.h \ +qtgui/rclm_idx.cpp \ +qtgui/rclm_preview.cpp \ +qtgui/rclm_saveload.cpp \ +qtgui/rclm_view.cpp \ +qtgui/rclm_wins.cpp \ +qtgui/rclmain.ui \ +qtgui/rclmain_w.cpp \ +qtgui/rclmain_w.h \ +qtgui/rclzg.cpp \ +qtgui/rclzg.h \ +qtgui/recoll.h \ +qtgui/recoll.pro.in \ +qtgui/recoll.qrc \ +qtgui/reslist.cpp \ +qtgui/reslist.h \ +qtgui/respopup.cpp \ +qtgui/respopup.h \ +qtgui/restable.cpp \ +qtgui/restable.h \ +qtgui/restable.ui \ +qtgui/rtitool.cpp \ +qtgui/rtitool.h \ +qtgui/rtitool.ui \ +qtgui/searchclause_w.cpp \ +qtgui/searchclause_w.h \ +qtgui/snippets.ui \ +qtgui/snippets_w.cpp \ +qtgui/snippets_w.h \ +qtgui/specialindex.h \ +qtgui/specialindex.ui \ +qtgui/spell.ui \ +qtgui/spell_w.cpp \ +qtgui/spell_w.h \ +qtgui/ssearchb.ui \ +qtgui/ssearch_w.cpp \ +qtgui/ssearch_w.h \ +qtgui/systray.cpp \ +qtgui/systray.h \ +qtgui/uiprefs.ui \ +qtgui/uiprefs_w.cpp \ +qtgui/uiprefs_w.h \ +qtgui/ui_rclmain.h-4.5 \ +qtgui/viewaction.ui \ +qtgui/viewaction_w.cpp \ +qtgui/viewaction_w.h \ +qtgui/xmltosd.cpp \ +qtgui/xmltosd.h \ +\ +python/README.txt \ +python/recoll/Makefile \ +python/recoll/pyrclextract.cpp \ +python/recoll/pyrecoll.cpp \ +python/recoll/pyrecoll.h \ +python/recoll/recoll/__init__.py \ +python/recoll/recoll/rclconfig.py \ +python/recoll/setup.py.in \ +python/samples/docdups.py \ +python/samples/mutt-recoll.py \ +python/samples/rcldlkp.py \ +python/samples/rclmbox.py \ +python/samples/recollgui/Makefile \ +python/samples/recollgui/qrecoll.py \ +python/samples/recollgui/rclmain.ui \ +python/samples/recollq.py \ +python/samples/recollqsd.py \ +\ + \ +sampleconf/fields sampleconf/fragbuts.xml sampleconf/mimeconf \ +sampleconf/mimemap sampleconf/mimeview sampleconf/mimeview.mac \ +sampleconf/recoll.conf sampleconf/recoll.qss \ +\ +unac/AUTHORS unac/COPYING unac/README unac/README.recoll unac/unac.c \ +\ +VERSION + +# EXTRA_DIST: The Php Code does not build anymore. No need to ship it until +# someone fixes it: +# php/00README.txt php/recoll/config.m4 php/recoll/make.sh +# php/recoll/php_recoll.h php/recoll/recoll.cpp php/sample/shell.php + +if MAKEPYTHON +all-local: recollpython +recollpython: librecoll.la + ${MAKE} -C python/recoll libdir=$(libdir) +install-exec-local: recollpython-install +recollpython-install: + (cd python/recoll; \ + if test -f /etc/debian_version ; then \ + OPTSFORPYTHON=--install-layout=deb; \ + fi; \ + set -x; \ + python setup.py install \ + --prefix=${prefix} --root=$${DESTDIR:-/} $${OPTSFORPYTHON}) +clean-local: recollpython-clean +recollpython-clean: + rm -rf python/recoll/build +endif + +if MAKEQT +all-local: recollqt +recollqt: librecoll.la + (cd $(QTGUI); ${QMAKE} PREFIX=${prefix} recoll.pro) + $(MAKE) -C $(QTGUI) LFLAGS="$(LDFLAGS)" prefix=$(prefix) \ + exec_prefix=$(exec_prefix) libdir=$(libdir) +clean-local: recollqt-clean +recollqt-clean: + -$(MAKE) -C $(QTGUI) clean +install-exec-local: recollqt-install +recollqt-install: + $(MAKE) -C $(QTGUI) LFLAGS="$(LDFLAGS)" prefix=$(prefix) \ + exec_prefix=$(exec_prefix) libdir=$(libdir) install +endif + +defconfdir = $(pkgdatadir)/examples +defconf_DATA = \ +desktop/recollindex.desktop \ +index/rclmon.sh \ +sampleconf/fragbuts.xml \ +sampleconf/fields \ +sampleconf/recoll.conf \ +sampleconf/mimeconf \ +sampleconf/recoll.qss \ +sampleconf/mimemap \ +sampleconf/mimeview + +filterdir = $(pkgdatadir)/filters +filter_DATA = \ +desktop/hotrecoll.py \ +filters/rcl7z \ +filters/rclabw \ +filters/rclaptosidman \ +filters/rclaudio \ +filters/rclcheckneedretry.sh \ +filters/rclchm \ +filters/rclconfig.py \ +filters/rcldia \ +filters/rcldjvu \ +filters/rcldoc.py \ +filters/rcldvi \ +filters/rclepub \ +filters/rclexec1.py \ +filters/rclexecm.py \ +filters/rclfb2 \ +filters/rclgaim \ +filters/rclgnm \ +filters/rclics \ +filters/rclimg \ +filters/rclimg.py \ +filters/rclinfo \ +filters/rclkar \ +filters/rclkwd \ +filters/rcllatinclass.py \ +filters/rcllatinstops.zip \ +filters/rcllyx \ +filters/rclman \ +filters/rclmpdf.py \ +filters/rclokulnote \ +filters/rclopxml.py \ +filters/rclppt.py \ +filters/rclps \ +filters/rclpurple \ +filters/rclpython \ +filters/rclrar \ +filters/rclrtf.py \ +filters/rclscribus \ +filters/rclshowinfo \ +filters/rclsiduxman \ +filters/rclsoff.py \ +filters/rclsvg.py \ +filters/rcltar \ +filters/rcltex \ +filters/rcltext.py \ +filters/rcluncomp \ +filters/rcluncomp.py \ +filters/rclwar \ +filters/rclwpd \ +filters/rclxls.py \ +filters/rclxml.py \ +filters/rclxslt.py \ +filters/rclzip \ +filters/ppt-dump.py \ +filters/xls-dump.py \ +filters/xlsxmltocsv.py \ +filters/msodump.zip \ +python/recoll/recoll/rclconfig.py + +install-data-hook: + (cd $(DESTDIR)/$(filterdir); \ + chmod a+x rcl* ppt-dump.py xls-dump.py xlsxmltocsv.py hotrecoll.py; \ + chmod 0644 msodump.zip rclexecm.py rcllatinstops.zip rclconfig.py) + +if MAKEUSERDOC +rdocdir = $(pkgdatadir)/doc +rdoc_DATA = doc/user/usermanual.html doc/user/docbook-xsl.css +doc/user/usermanual.html: doc/user/usermanual.xml + mkdir -p doc/user + test -f doc/user/Makefile || \ + cp -p $(top_srcdir)/doc/user/Makefile doc/user + $(MAKE) -C doc/user VPATH=../../$(VPATH)/doc/user usermanual.html +endif + +dist_man1_MANS = doc/man/recoll.1 doc/man/recollq.1 doc/man/recollindex.1 +dist_man5_MANS = doc/man/recoll.conf.5 + +dist-hook: + modified=`hg status | grep -v /$(distdir)/`; \ + if test ! -z "$$modified"; then \ + echo Local directory is modified: $$modified ; exit 1; fi + hg tag -f -m "Release $(VERSION) tagged" RECOLL-$(VERSION) diff --git a/src/README b/src/README new file mode 100644 index 00000000..b99332a5 --- /dev/null +++ b/src/README @@ -0,0 +1,4612 @@ + +More documentation can be found in the doc/ directory or at http://www.recoll.org + + + Recoll user manual + + Jean-Francois Dockes + + + + Copyright (c) 2005-2015 Jean-Francois Dockes + + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 or any + later version published by the Free Software Foundation; with no Invariant + Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the + license can be found at the following location: GNU web site. + + This document introduces full text search notions and describes the + installation and use of the Recoll application. This version describes + Recoll 1.21. + + ---------------------------------------------------------------------- + + Table of Contents + + 1. Introduction + + 1.1. Giving it a try + + 1.2. Full text search + + 1.3. Recoll overview + + 2. Indexing + + 2.1. Introduction + + 2.1.1. Indexing modes + + 2.1.2. Configurations, multiple indexes + + 2.1.3. Document types + + 2.1.4. Indexing failures + + 2.1.5. Recovery + + 2.2. Index storage + + 2.2.1. Xapian index formats + + 2.2.2. Security aspects + + 2.3. Index configuration + + 2.3.1. Multiple indexes + + 2.3.2. Index case and diacritics sensitivity + + 2.3.3. The index configuration GUI + + 2.4. Indexing WEB pages you wisit + + 2.5. Extended attributes data + + 2.6. Importing external tags + + 2.7. Periodic indexing + + 2.7.1. Running indexing + + 2.7.2. Using cron to automate indexing + + 2.8. Real time indexing + + 2.8.1. Slowing down the reindexing rate for fast + changing files + + 3. Searching + + 3.1. Searching with the Qt graphical user interface + + 3.1.1. Simple search + + 3.1.2. The default result list + + 3.1.3. The result table + + 3.1.4. Running arbitrary commands on result + files (1.20 and later) + + 3.1.5. Displaying thumbnails + + 3.1.6. The preview window + + 3.1.7. The Query Fragments window + + 3.1.8. Complex/advanced search + + 3.1.9. The term explorer tool + + 3.1.10. Multiple indexes + + 3.1.11. Document history + + 3.1.12. Sorting search results and collapsing + duplicates + + 3.1.13. Search tips, shortcuts + + 3.1.14. Saving and restoring queries (1.21 and + later) + + 3.1.15. Customizing the search interface + + 3.2. Searching with the KDE KIO slave + + 3.2.1. What's this + + 3.2.2. Searchable documents + + 3.3. Searching on the command line + + 3.4. Path translations + + 3.5. The query language + + 3.5.1. Modifiers + + 3.6. Search case and diacritics sensitivity + + 3.7. Anchored searches and wildcards + + 3.7.1. More about wildcards + + 3.7.2. Anchored searches + + 3.8. Desktop integration + + 3.8.1. Hotkeying recoll + + 3.8.2. The KDE Kicker Recoll applet + + 4. Programming interface + + 4.1. Writing a document input handler + + 4.1.1. Simple input handlers + + 4.1.2. "Multiple" handlers + + 4.1.3. Telling Recoll about the handler + + 4.1.4. Input handler HTML output + + 4.1.5. Page numbers + + 4.2. Field data processing + + 4.3. API + + 4.3.1. Interface elements + + 4.3.2. Python interface + + 5. Installation and configuration + + 5.1. Installing a binary copy + + 5.2. Supporting packages + + 5.3. Building from source + + 5.3.1. Prerequisites + + 5.3.2. Building + + 5.3.3. Installation + + 5.4. Configuration overview + + 5.4.1. Environment variables + + 5.4.2. The main configuration file, recoll.conf + + 5.4.3. The fields file + + 5.4.4. The mimemap file + + 5.4.5. The mimeconf file + + 5.4.6. The mimeview file + + 5.4.7. The ptrans file + + 5.4.8. Examples of configuration adjustments + +Chapter 1. Introduction + +1.1. Giving it a try + + If you do not like reading manuals (who does?) but wish to give Recoll a + try, just install the application and start the recoll graphical user + interface (GUI), which will ask permission to index your home directory by + default, allowing you to search immediately after indexing completes. + + Do not do this if your home directory contains a huge number of documents + and you do not want to wait or are very short on disk space. In this case, + you may first want to customize the configuration to restrict the indexed + area (for the very impatient with a completed package install, from the + recoll GUI: Preferences -> Indexing configuration, then adjust the Top + directories section). + + Also be aware that you may need to install the appropriate supporting + applications for document types that need them (for example antiword for + Microsoft Word files). + +1.2. Full text search + + Recoll is a full text search application. Full text search finds your data + by content rather than by external attributes (like a file name). You + specify words (terms) which should or should not appear in the text you + are looking for, and receive in return a list of matching documents, + ordered so that the most relevant documents will appear first. + + You do not need to remember in what file or email message you stored a + given piece of information. You just ask for related terms, and the tool + will return a list of documents where these terms are prominent, in a + similar way to Internet search engines. + + Full text search applications try to determine which documents are most + relevant to the search terms you provide. Computer algorithms for + determining relevance can be very complex, and in general are inferior to + the power of the human mind to rapidly determine relevance. The quality of + relevance guessing is probably the most important aspect when evaluating a + search application. + + In many cases, you are looking for all the forms of a word, including + plurals, different tenses for a verb, or terms derived from the same root + or stem (example: floor, floors, floored, flooring...). Queries are + usually automatically expanded to all such related terms (words that + reduce to the same stem). This can be prevented for searching for a + specific form. + + Stemming, by itself, does not accommodate for misspellings or phonetic + searches. A full text search application may also support this form of + approximation. For example, a search for aliterattion returning no result + may propose, depending on index contents, alliteration alteration + alterations altercation as possible replacement terms. + +1.3. Recoll overview + + Recoll uses the Xapian information retrieval library as its storage and + retrieval engine. Xapian is a very mature package using a sophisticated + probabilistic ranking model. + + The Xapian library manages an index database which describes where terms + appear in your document files. It efficiently processes the complex + queries which are produced by the Recoll query expansion mechanism, and is + in charge of the all-important relevance computation task. + + Recoll provides the mechanisms and interface to get data into and out of + the index. This includes translating the many possible document formats + into pure text, handling term variations (using Xapian stemmers), and + spelling approximations (using the aspell speller), interpreting user + queries and presenting results. + + In a shorter way, Recoll does the dirty footwork, Xapian deals with the + intelligent parts of the process. + + The Xapian index can be big (roughly the size of the original document + set), but it is not a document archive. Recoll can only display documents + that still exist at the place from which they were indexed. (Actually, + there is a way to reconstruct a document from the information in the + index, but the result is not nice, as all formatting, punctuation and + capitalization are lost). + + Recoll stores all internal data in Unicode UTF-8 format, and it can index + files of many types with different character sets, encodings, and + languages into the same index. It can process documents embedded inside + other documents (for example a pdf document stored inside a Zip archive + sent as an email attachment...), down to an arbitrary depth. + + Stemming is the process by which Recoll reduces words to their radicals so + that searching does not depend, for example, on a word being singular or + plural (floor, floors), or on a verb tense (flooring, floored). Because + the mechanisms used for stemming depend on the specific grammatical rules + for each language, there is a separate Xapian stemmer module for most + common languages where stemming makes sense. + + Recoll stores the unstemmed versions of terms in the main index and uses + auxiliary databases for term expansion (one for each stemming language), + which means that you can switch stemming languages between searches, or + add a language without needing a full reindex. + + Storing documents written in different languages in the same index is + possible, and commonly done. In this situation, you can specify several + stemming languages for the index. + + Recoll currently makes no attempt at automatic language recognition, which + means that the stemmer will sometimes be applied to terms from other + languages with potentially strange results. In practise, even if this + introduces possibilities of confusion, this approach has been proven quite + useful, and it is much less cumbersome than separating your documents + according to what language they are written in. + + Before version 1.18, Recoll stripped most accents and diacritics from + terms, and converted them to lower case before either storing them in the + index or searching for them. As a consequence, it was impossible to search + for a particular capitalization of a term (US / us), or to discriminate + two terms based on diacritics (sake / sake, mate / mate). + + As of version 1.18, Recoll can optionally store the raw terms, without + accent stripping or case conversion. In this configuration, it is still + possible (and most common) for a query to be insensitive to case and/or + diacritics. Appropriate term expansions are performed before actually + accessing the main index. This is described in more detail in the section + about index case and diacritics sensitivity. + + Recoll has many parameters which define exactly what to index, and how to + classify and decode the source documents. These are kept in configuration + files. A default configuration is copied into a standard location (usually + something like /usr/[local/]share/recoll/examples) during installation. + The default values set by the configuration files in this directory may be + overridden by values that you set inside your personal configuration, + found by default in the .recoll sub-directory of your home directory. The + default configuration will index your home directory with default + parameters and should be sufficient for giving Recoll a try, but you may + want to adjust it later, which can be done either by editing the text + files or by using configuration menus in the recoll GUI. Some other + parameters affecting only the recoll GUI are stored in the standard + location defined by Qt. + + The indexing process is started automatically the first time you execute + the recoll GUI. Indexing can also be performed by executing the + recollindex command. Recoll indexing is multithreaded by default when + appropriate hardware resources are available, and can perform in parallel + multiple tasks among text extraction, segmentation and index updates. + + Searches are usually performed inside the recoll GUI, which has many + options to help you find what you are looking for. However, there are + other ways to perform Recoll searches: mostly a command line interface, a + Python programming interface, a KDE KIO slave module, and Ubuntu Unity + Lens (for older versions) or Scope (for current versions) modules. + +Chapter 2. Indexing + +2.1. Introduction + + Indexing is the process by which the set of documents is analyzed and the + data entered into the database. Recoll indexing is normally incremental: + documents will only be processed if they have been modified since the last + run. On the first execution, all documents will need processing. A full + index build can be forced later by specifying an option to the indexing + command (recollindex -z or -Z). + + recollindex skips files which caused an error during a previous pass. This + is a performance optimization, and a new behaviour in version 1.21 (failed + files were always retried by previous versions). The command line option + -k can be set to retry failed files, for example after updating a filter. + + The following sections give an overview of different aspects of the + indexing processes and configuration, with links to detailed sections. + + Depending on your data, temporary files may be needed during indexing, + some of them possibly quite big. You can use the RECOLL_TMPDIR or TMPDIR + environment variables to determine where they are created (the default is + to use /tmp). Using TMPDIR has the nice property that it may also be taken + into account by auxiliary commands executed by recollindex. + + 2.1.1. Indexing modes + + Recoll indexing can be performed along two different modes: + + o Periodic (or batch) indexing: indexing takes place at discrete times, + by executing the recollindex command. The typical usage is to have a + nightly indexing run programmed into your cron file. + + o Real time indexing: indexing takes place as soon as a file is created + or changed. recollindex runs as a daemon and uses a file system + alteration monitor such as inotify, Fam or Gamin to detect file + changes. + + The choice between the two methods is mostly a matter of preference, and + they can be combined by setting up multiple indexes (ie: use periodic + indexing on a big documentation directory, and real time indexing on a + small home directory). Monitoring a big file system tree can consume + significant system resources. + + The choice of method and the parameters used can be configured from the + recoll GUI: Preferences -> Indexing schedule + + 2.1.2. Configurations, multiple indexes + + The parameters describing what is to be indexed and local preferences are + defined in text files contained in a configuration directory. + + All parameters have defaults, defined in system-wide files. + + Without further configuration, Recoll will index all appropriate files + from your home directory, with a reasonable set of defaults. + + A default personal configuration directory ($HOME/.recoll/) is created + when a Recoll program is first executed. It is possible to create other + configuration directories, and use them by setting the RECOLL_CONFDIR + environment variable, or giving the -c option to any of the Recoll + commands. + + In some cases, it may be interesting to index different areas of the file + system to separate databases. You can do this by using multiple + configuration directories, each indexing a file system area to a specific + database. Typically, this would be done to separate personal and shared + indexes, or to take advantage of the organization of your data to improve + search precision. + + The generated indexes can be queried concurrently in a transparent manner. + + For index generation, multiple configurations are totally independant from + each other. When multiple indexes need to be used for a single search, + some parameters should be consistent among the configurations. + + 2.1.3. Document types + + Recoll knows about quite a few different document types. The parameters + for document types recognition and processing are set in configuration + files. + + Most file types, like HTML or word processing files, only hold one + document. Some file types, like email folders or zip archives, can hold + many individually indexed documents, which may themselves be compound + ones. Such hierarchies can go quite deep, and Recoll can process, for + example, a LibreOffice document stored as an attachment to an email + message inside an email folder archived in a zip file... + + Recoll indexing processes plain text, HTML, OpenDocument + (Open/LibreOffice), email formats, and a few others internally. + + Other file types (ie: postscript, pdf, ms-word, rtf ...) need external + applications for preprocessing. The list is in the installation section. + After every indexing operation, Recoll updates a list of commands that + would be needed for indexing existing files types. This list can be + displayed by selecting the menu option File -> Show Missing Helpers in the + recoll GUI. It is stored in the missing text file inside the configuration + directory. + + By default, Recoll will try to index any file type that it has a way to + read. This is sometimes not desirable, and there are ways to either + exclude some types, or on the contrary to define a positive list of types + to be indexed. In the latter case, any type not in the list will be + ignored. + + Excluding types can be done by adding wildcard name patterns to the + skippedNames list, which can be done from the GUI Index configuration + menu. For versions 1.20 and later, you can alternatively set the + excludedmimetypes list in the configuration file. This can be redefined + for subdirectories. + + You can also define an exclusive list of MIME types to be indexed (no + others will be indexed), by settting the indexedmimetypes configuration + variable. Example: + + indexedmimetypes = text/html application/pdf + + + It is possible to redefine this parameter for subdirectories. Example: + + [/path/to/my/dir] + indexedmimetypes = application/pdf + + + (When using sections like this, don't forget that they remain in effect + until the end of the file or another section indicator). + + excludedmimetypes or indexedmimetypes, can be set either by editing the + main configuration file (recoll.conf), or from the GUI index configuration + tool. + + 2.1.4. Indexing failures + + Indexing may fail for some documents, for a number of reasons: a helper + program may be missing, the document may be corrupt, we may fail to + uncompress a file because no file system space is available, etc. + + Recoll versions prior to 1.21 always retried to index files which had + previously caused an error. This guaranteed that anything that may have + become indexable (for example because a helper had been installed) would + be indexed. However this was bad for performance because some indexing + failures may be quite costly (for example failing to uncompress a big file + because of insufficient disk space). + + The indexer in Recoll versions 1.21 and later do not retry failed file by + default. Retrying will only occur if an explicit option (-k) is set on the + recollindex command line, or if a script executed when recollindex starts + up says so. The script is defined by a configuration variable + (checkneedretryindexscript), and makes a rather lame attempt at deciding + if a helper command may have been installed, by checking if any of the + common bin directories have changed. + + 2.1.5. Recovery + + In the rare case where the index becomes corrupted (which can signal + itself by weird search results or crashes), the index files need to be + erased before restarting a clean indexing pass. Just delete the xapiandb + directory (see next section), or, alternatively, start the next + recollindex with the -z option, which will reset the database before + indexing. + +2.2. Index storage + + The default location for the index data is the xapiandb subdirectory of + the Recoll configuration directory, typically $HOME/.recoll/xapiandb/. + This can be changed via two different methods (with different purposes): + + o You can specify a different configuration directory by setting the + RECOLL_CONFDIR environment variable, or using the -c option to the + Recoll commands. This method would typically be used to index + different areas of the file system to different indexes. For example, + if you were to issue the following commands: + + export RECOLL_CONFDIR=~/.indexes-email + recoll + + + Then Recoll would use configuration files stored in ~/.indexes-email/ + and, (unless specified otherwise in recoll.conf) would look for the + index in ~/.indexes-email/xapiandb/. + + Using multiple configuration directories and configuration options + allows you to tailor multiple configurations and indexes to handle + whatever subset of the available data you wish to make searchable. + + o For a given configuration directory, you can specify a non-default + storage location for the index by setting the dbdir parameter in the + configuration file (see the configuration section). This method would + mainly be of use if you wanted to keep the configuration directory in + its default location, but desired another location for the index, + typically out of disk occupation concerns. + + The size of the index is determined by the size of the set of documents, + but the ratio can vary a lot. For a typical mixed set of documents, the + index size will often be close to the data set size. In specific cases (a + set of compressed mbox files for example), the index can become much + bigger than the documents. It may also be much smaller if the documents + contain a lot of images or other non-indexed data (an extreme example + being a set of mp3 files where only the tags would be indexed). + + Of course, images, sound and video do not increase the index size, which + means that nowadays (2012), typically, even a big index will be negligible + against the total amount of data on the computer. + + The index data directory (xapiandb) only contains data that can be + completely rebuilt by an index run (as long as the original documents + exist), and it can always be destroyed safely. + + 2.2.1. Xapian index formats + + Xapian versions usually support several formats for index storage. A given + major Xapian version will have a current format, used to create new + indexes, and will also support the format from the previous major version. + + Xapian will not convert automatically an existing index from the older + format to the newer one. If you want to upgrade to the new format, or if a + very old index needs to be converted because its format is not supported + any more, you will have to explicitly delete the old index, then run a + normal indexing process. + + Using the -z option to recollindex is not sufficient to change the format, + you will have to delete all files inside the index directory (typically + ~/.recoll/xapiandb) before starting the indexing. + + 2.2.2. Security aspects + + The Recoll index does not hold copies of the indexed documents. But it + does hold enough data to allow for an almost complete reconstruction. If + confidential data is indexed, access to the database directory should be + restricted. + + Recoll (since version 1.4) will create the configuration directory with a + mode of 0700 (access by owner only). As the index data directory is by + default a sub-directory of the configuration directory, this should result + in appropriate protection. + + If you use another setup, you should think of the kind of protection you + need for your index, set the directory and files access modes + appropriately, and also maybe adjust the umask used during index updates. + +2.3. Index configuration + + Variables set inside the Recoll configuration files control which areas of + the file system are indexed, and how files are processed. These variables + can be set either by editing the text files or by using the dialogs in the + recoll GUI. + + The first time you start recoll, you will be asked whether or not you + would like it to build the index. If you want to adjust the configuration + before indexing, just click Cancel at this point, which will get you into + the configuration interface. If you exit at this point, recoll will have + created a ~/.recoll directory containing empty configuration files, which + you can edit by hand. + + The configuration is documented inside the installation chapter of this + document, or in the recoll.conf(5) man page, but the most current + information will most likely be the comments inside the sample file. The + most immediately useful variable you may interested in is probably + topdirs, which determines what subtrees get indexed. + + The applications needed to index file types other than text, HTML or email + (ie: pdf, postscript, ms-word...) are described in the external packages + section. + + As of Recoll 1.18 there are two incompatible types of Recoll indexes, + depending on the treatment of character case and diacritics. The next + section describes the two types in more detail. + + 2.3.1. Multiple indexes + + Multiple Recoll indexes can be created by using several configuration + directories which are usually set to index different areas of the file + system. A specific index can be selected for updating or searching, using + the RECOLL_CONFDIR environment variable or the -c option to recoll and + recollindex. + + A typical usage scenario for the multiple index feature would be for a + system administrator to set up a central index for shared data, that you + choose to search or not in addition to your personal data. Of course, + there are other possibilities. There are many cases where you know the + subset of files that should be searched, and where narrowing the search + can improve the results. You can achieve approximately the same effect + with the directory filter in advanced search, but multiple indexes will + have much better performance and may be worth the trouble. + + A recollindex program instance can only update one specific index. + + The main index (defined by RECOLL_CONFDIR or -c) is always active. If this + is undesirable, you can set up your base configuration to index an empty + directory. + + The different search interfaces (GUI, command line, ...) have different + methods to define the set of indexes to be used, see the appropriate + section. + + If a set of multiple indexes are to be used together for searches, some + configuration parameters must be consistent among the set. These are + parameters which need to be the same when indexing and searching. As the + parameters come from the main configuration when searching, they need to + be compatible with what was set when creating the other indexes (which + came from their respective configuration directories). + + Most importantly, all indexes to be queried concurrently must have the + same option concerning character case and diacritics stripping, but there + are other constraints. Most of the relevant parameters are described in + the linked section. + + 2.3.2. Index case and diacritics sensitivity + + As of Recoll version 1.18 you have a choice of building an index with + terms stripped of character case and diacritics, or one with raw terms. + For a source term of Resume, the former will store resume, the latter + Resume. + + Each type of index allows performing searches insensitive to case and + diacritics: with a raw index, the user entry will be expanded to match all + case and diacritics variations present in the index. With a stripped + index, the search term will be stripped before searching. + + A raw index allows for another possibility which a stripped index cannot + offer: using case and diacritics to discriminate between terms, returning + different results when searching for US and us or resume and resume. Read + the section about search case and diacritics sensitivity for more details. + + The type of index to be created is controlled by the indexStripChars + configuration variable which can only be changed by editing the + configuration file. Any change implies an index reset (not automated by + Recoll), and all indexes in a search must be set in the same way (again, + not checked by Recoll). + + If the indexStripChars is not set, Recoll 1.18 creates a stripped index by + default, for compatibility with previous versions. + + As a cost for added capability, a raw index will be slightly bigger than a + stripped one (around 10%). Also, searches will be more complex, so + probably slightly slower, and the feature is still young, so that a + certain amount of weirdness cannot be excluded. + + One of the most adverse consequence of using a raw index is that some + phrase and proximity searches may become impossible: because each term + needs to be expanded, and all combinations searched for, the + multiplicative expansion may become unmanageable. + + 2.3.3. The index configuration GUI + + Most parameters for a given index configuration can be set from a recoll + GUI running on this configuration (either as default, or by setting + RECOLL_CONFDIR or the -c option.) + + The interface is started from the Preferences -> Index Configuration menu + entry. It is divided in four tabs, Global parameters, Local parameters, + Web history (which is explained in the next section) and Search + parameters. + + The Global parameters tab allows setting global variables, like the lists + of top directories, skipped paths, or stemming languages. + + The Local parameters tab allows setting variables that can be redefined + for subdirectories. This second tab has an initially empty list of + customisation directories, to which you can add. The variables are then + set for the currently selected directory (or at the top level if the empty + line is selected). + + The Search parameters section defines parameters which are used at query + time, but are global to an index and affect all search tools, not only the + GUI. + + The meaning for most entries in the interface is self-evident and + documented by a ToolTip popup on the text label. For more detail, you will + need to refer to the configuration section of this guide. + + The configuration tool normally respects the comments and most of the + formatting inside the configuration file, so that it is quite possible to + use it on hand-edited files, which you might nevertheless want to backup + first... + +2.4. Indexing WEB pages you wisit + + With the help of a Firefox extension, Recoll can index the Internet pages + that you visit. The extension was initially designed for the Beagle + indexer, but it has recently be renamed and better adapted to Recoll. + + The extension works by copying visited WEB pages to an indexing queue + directory, which Recoll then processes, indexing the data, storing it into + a local cache, then removing the file from the queue. + + This feature can be enabled in the GUI Index configuration panel, or by + editing the configuration file (set processwebqueue to 1). + + A current pointer to the extension can be found, along with up-to-date + instructions, on the Recoll wiki. + + A copy of the indexed WEB pages is retained by Recoll in a local cache + (from which previews can be fetched). The cache size can be adjusted from + the Index configuration / Web history panel. Once the maximum size is + reached, old pages are purged - both from the cache and the index - to + make room for new ones, so you need to explicitly archive in some other + place the pages that you want to keep indefinitely. + +2.5. Extended attributes data + + User extended attributes are named pieces of information that most modern + file systems can attach to any file. + + Recoll versions 1.19 and later process extended attributes as document + fields by default. For older versions, this has to be activated at build + time. + + A freedesktop standard defines a few special attributes, which are handled + as such by Recoll: + + mime_type + + If set, this overrides any other determination of the file MIME + type. + + charset + If set, this defines the file character set (mostly useful for + plain text files). + + By default, other attributes are handled as Recoll fields. On Linux, the + user prefix is removed from the name. This can be configured more + precisely inside the fields configuration file. + +2.6. Importing external tags + + During indexing, it is possible to import metadata for each file by + executing commands. For example, this could extract user tag data for the + file and store it in a field for indexing. + + See the section about the metadatacmds field in the main configuration + chapter for more detail. + +2.7. Periodic indexing + + 2.7.1. Running indexing + + Indexing is always performed by the recollindex program, which can be + started either from the command line or from the File menu in the recoll + GUI program. When started from the GUI, the indexing will run on the same + configuration recoll was started on. When started from the command line, + recollindex will use the RECOLL_CONFDIR variable or accept a -c confdir + option to specify a non-default configuration directory. + + If the recoll program finds no index when it starts, it will automatically + start indexing (except if canceled). + + The recollindex indexing process can be interrupted by sending an + interrupt (Ctrl-C, SIGINT) or terminate (SIGTERM) signal. Some time may + elapse before the process exits, because it needs to properly flush and + close the index. This can also be done from the recoll GUI File -> Stop + Indexing menu entry. + + After such an interruption, the index will be somewhat inconsistent + because some operations which are normally performed at the end of the + indexing pass will have been skipped (for example, the stemming and + spelling databases will be inexistant or out of date). You just need to + restart indexing at a later time to restore consistency. The indexing will + restart at the interruption point (the full file tree will be traversed, + but files that were indexed up to the interruption and for which the index + is still up to date will not need to be reindexed). + + recollindex has a number of other options which are described in its man + page. Only a few will be described here. + + Option -z will reset the index when starting. This is almost the same as + destroying the index files (the nuance is that the Xapian format version + will not be changed). + + Option -Z will force the update of all documents without resetting the + index first. This will not have the "clean start" aspect of -z, but the + advantage is that the index will remain available for querying while it is + rebuilt, which can be a significant advantage if it is very big (some + installations need days for a full index rebuild). + + Option -k will force retrying files which previously failed to be indexed, + for example because of a missing helper program. + + Of special interest also, maybe, are the -i and -f options. -i allows + indexing an explicit list of files (given as command line parameters or + read on stdin). -f tells recollindex to ignore file selection parameters + from the configuration. Together, these options allow building a custom + file selection process for some area of the file system, by adding the top + directory to the skippedPaths list and using an appropriate file selection + method to build the file list to be fed to recollindex -if. Trivial + example: + + find . -name indexable.txt -print | recollindex -if + + + recollindex -i will not descend into subdirectories specified as + parameters, but just add them as index entries. It is up to the external + file selection method to build the complete file list. + + 2.7.2. Using cron to automate indexing + + The most common way to set up indexing is to have a cron task execute it + every night. For example the following crontab entry would do it every day + at 3:30AM (supposing recollindex is in your PATH): + + 30 3 * * * recollindex > /some/tmp/dir/recolltrace 2>&1 + + Or, using anacron: + + 1 15 su mylogin -c "recollindex recollindex > /tmp/rcltraceme 2>&1" + + As of version 1.17 the Recoll GUI has dialogs to manage crontab entries + for recollindex. You can reach them from the Preferences -> Indexing + Schedule menu. They only work with the good old cron, and do not give + access to all features of cron scheduling. + + The usual command to edit your crontab is crontab -e (which will usually + start the vi editor to edit the file). You may have more sophisticated + tools available on your system. + + Please be aware that there may be differences between your usual + interactive command line environment and the one seen by crontab commands. + Especially the PATH variable may be of concern. Please check the crontab + manual pages about possible issues. + +2.8. Real time indexing + + Real time monitoring/indexing is performed by starting the recollindex -m + command. With this option, recollindex will detach from the terminal and + become a daemon, permanently monitoring file changes and updating the + index. + + Under KDE, Gnome and some other desktop environments, the daemon can + automatically started when you log in, by creating a desktop file inside + the ~/.config/autostart directory. This can be done for you by the Recoll + GUI. Use the Preferences->Indexing Schedule menu. + + With older X11 setups, starting the daemon is normally performed as part + of the user session script. + + The rclmon.sh script can be used to easily start and stop the daemon. It + can be found in the examples directory (typically + /usr/local/[share/]recoll/examples). + + For example, my out of fashion xdm-based session has a .xsession script + with the following lines at the end: + + recollconf=$HOME/.recoll-home + recolldata=/usr/local/share/recoll + RECOLL_CONFDIR=$recollconf $recolldata/examples/rclmon.sh start + + fvwm + + + The indexing daemon gets started, then the window manager, for which the + session waits. + + By default the indexing daemon will monitor the state of the X11 session, + and exit when it finishes, it is not necessary to kill it explicitly. (The + X11 server monitoring can be disabled with option -x to recollindex). + + If you use the daemon completely out of an X11 session, you need to add + option -x to disable X11 session monitoring (else the daemon will not + start). + + By default, the messages from the indexing daemon will be setn to the same + file as those from the interactive commands (logfilename). You may want to + change this by setting the daemlogfilename and daemloglevel configuration + parameters. Also the log file will only be truncated when the daemon + starts. If the daemon runs permanently, the log file may grow quite big, + depending on the log level. + + When building Recoll, the real time indexing support can be customised + during package configuration with the --with[out]-fam or + --with[out]-inotify options. The default is currently to include inotify + monitoring on systems that support it, and, as of Recoll 1.17, gamin + support on FreeBSD. + + While it is convenient that data is indexed in real time, repeated + indexing can generate a significant load on the system when files such as + email folders change. Also, monitoring large file trees by itself + significantly taxes system resources. You probably do not want to enable + it if your system is short on resources. Periodic indexing is adequate in + most cases. + + Increasing resources for inotify + + On Linux systems, monitoring a big tree may need increasing the resources + available to inotify, which are normally defined in /etc/sysctl.conf. + + ### inotify + # + # cat /proc/sys/fs/inotify/max_queued_events - 16384 + # cat /proc/sys/fs/inotify/max_user_instances - 128 + # cat /proc/sys/fs/inotify/max_user_watches - 16384 + # + # -- Change to: + # + fs.inotify.max_queued_events=32768 + fs.notify.max_user_instances=256 + fs.inotify.max_user_watches=32768 + + + Especially, you will need to trim your tree or adjust the max_user_watches + value if indexing exits with a message about errno ENOSPC (28) from + inotify_add_watch. + + 2.8.1. Slowing down the reindexing rate for fast changing files + + When using the real time monitor, it may happen that some files need to be + indexed, but change so often that they impose an excessive load for the + system. + + Recoll provides a configuration option to specify the minimum time before + which a file, specified by a wildcard pattern, cannot be reindexed. See + the mondelaypatterns parameter in the configuration section. + +Chapter 3. Searching + +3.1. Searching with the Qt graphical user interface + + The recoll program provides the main user interface for searching. It is + based on the Qt library. + + recoll has two search modes: + + o Simple search (the default, on the main screen) has a single entry + field where you can enter multiple words. + + o Advanced search (a panel accessed through the Tools menu or the + toolbox bar icon) has multiple entry fields, which you may use to + build a logical condition, with additional filtering on file type, + location in the file system, modification date, and size. + + In most cases, you can enter the terms as you think them, even if they + contain embedded punctuation or other non-textual characters. For example, + Recoll can handle things like email addresses, or arbitrary cut and paste + from another text window, punctation and all. + + The main case where you should enter text differently from how it is + printed is for east-asian languages (Chinese, Japanese, Korean). Words + composed of single or multiple characters should be entered separated by + white space in this case (they would typically be printed without white + space). + + Some searches can be quite complex, and you may want to re-use them later, + perhaps with some tweaking. Recoll versions 1.21 and later can save and + restore searches, using XML files. See Saving and restoring queries. + + 3.1.1. Simple search + + 1. Start the recoll program. + + 2. Possibly choose a search mode: Any term, All terms, File name or Query + language. + + 3. Enter search term(s) in the text field at the top of the window. + + 4. Click the Search button or hit the Enter key to start the search. + + The initial default search mode is Query language. Without special + directives, this will look for documents containing all of the search + terms (the ones with more terms will get better scores), just like the All + terms mode which will ignore such directives. Any term will search for + documents where at least one of the terms appear. + + The Query Language features are described in a separate section. + + All search modes allow wildcards inside terms (*, ?, []). You may want to + have a look at the section about wildcards for more information about + this. + + File name will specifically look for file names. The point of having a + separate file name search is that wild card expansion can be performed + more efficiently on a small subset of the index (allowing wild cards on + the left of terms without excessive penality). Things to know: + + o White space in the entry should match white space in the file name, + and is not treated specially. + + o The search is insensitive to character case and accents, independantly + of the type of index. + + o An entry without any wild card character and not capitalized will be + prepended and appended with '*' (ie: etc -> *etc*, but Etc -> etc). + + o If you have a big index (many files), excessively generic fragments + may result in inefficient searches. + + You can search for exact phrases (adjacent words in a given order) by + enclosing the input inside double quotes. Ex: "virtual reality". + + When using a stripped index, character case has no influence on search, + except that you can disable stem expansion for any term by capitalizing + it. Ie: a search for floor will also normally look for flooring, floored, + etc., but a search for Floor will only look for floor, in any character + case. Stemming can also be disabled globally in the preferences. When + using a raw index, the rules are a bit more complicated. + + Recoll remembers the last few searches that you performed. You can use the + simple search text entry widget (a combobox) to recall them (click on the + thing at the right of the text field). Please note, however, that only the + search texts are remembered, not the mode (all/any/file name). + + Typing Esc Space while entering a word in the simple search entry will + open a window with possible completions for the word. The completions are + extracted from the database. + + Double-clicking on a word in the result list or a preview window will + insert it into the simple search entry field. + + You can cut and paste any text into an All terms or Any term search field, + punctuation, newlines and all - except for wildcard characters (single ? + characters are ok). Recoll will process it and produce a meaningful + search. This is what most differentiates this mode from the Query Language + mode, where you have to care about the syntax. + + You can use the Tools -> Advanced search dialog for more complex searches. + + 3.1.2. The default result list + + After starting a search, a list of results will instantly be displayed in + the main list window. + + By default, the document list is presented in order of relevance (how well + the system estimates that the document matches the query). You can sort + the result by ascending or descending date by using the vertical arrows in + the toolbar. + + Clicking on the Preview link for an entry will open an internal preview + window for the document. Further Preview clicks for the same search will + open tabs in the existing preview window. You can use Shift+Click to force + the creation of another preview window, which may be useful to view the + documents side by side. (You can also browse successive results in a + single preview window by typing Shift+ArrowUp/Down in the window). + + Clicking the Open link will start an external viewer for the document. By + default, Recoll lets the desktop choose the appropriate application for + most document types (there is a short list of exceptions, see further). If + you prefer to completely customize the choice of applications, you can + uncheck the Use desktop preferences option in the GUI preferences dialog, + and click the Choose editor applications button to adjust the predefined + Recoll choices. The tool accepts multiple selections of MIME types (e.g. + to set up the editor for the dozens of office file types). + + Even when Use desktop preferences is checked, there is a small list of + exceptions, for MIME types where the Recoll choice should override the + desktop one. These are applications which are well integrated with Recoll, + especially evince for viewing PDF and Postscript files because of its + support for opening the document at a specific page and passing a search + string as an argument. Of course, you can edit the list (in the GUI + preferences) if you would prefer to lose the functionality and use the + standard desktop tool. + + You may also change the choice of applications by editing the mimeview + configuration file if you find this more convenient. + + Each result entry also has a right-click menu with an Open With entry. + This lets you choose an application from the list of those which + registered with the desktop for the document MIME type. + + The Preview and Open edit links may not be present for all entries, + meaning that Recoll has no configured way to preview a given file type + (which was indexed by name only), or no configured external editor for the + file type. This can sometimes be adjusted simply by tweaking the mimemap + and mimeview configuration files (the latter can be modified with the user + preferences dialog). + + The format of the result list entries is entirely configurable by using + the preference dialog to edit an HTML fragment. + + You can click on the Query details link at the top of the results page to + see the query actually performed, after stem expansion and other + processing. + + Double-clicking on any word inside the result list or a preview window + will insert it into the simple search text. + + The result list is divided into pages (the size of which you can change in + the preferences). Use the arrow buttons in the toolbar or the links at the + bottom of the page to browse the results. + + 3.1.2.1. No results: the spelling suggestions + + When a search yields no result, and if the aspell dictionary is + configured, Recoll will try to check for misspellings among the query + terms, and will propose lists of replacements. Clicking on one of the + suggestions will replace the word and restart the search. You can hold any + of the modifier keys (Ctrl, Shift, etc.) while clicking if you would + rather stay on the suggestion screen because several terms need + replacement. + + 3.1.2.2. The result list right-click menu + + Apart from the preview and edit links, you can display a pop-up menu by + right-clicking over a paragraph in the result list. This menu has the + following entries: + + o Preview + + o Open + + o Open With + + o Run Script + + o Copy File Name + + o Copy Url + + o Save to File + + o Find similar + + o Preview Parent document + + o Open Parent document + + o Open Snippets Window + + The Preview and Open entries do the same thing as the corresponding links. + + Open With lets you open the document with one of the applications claiming + to be able to handle its MIME type (the information comes from the + .desktop files in /usr/share/applications). + + Run Script allows starting an arbitrary command on the result file. It + will only appear for results which are top-level files. See further for a + more detailed description. + + The Copy File Name and Copy Url copy the relevant data to the clipboard, + for later pasting. + + Save to File allows saving the contents of a result document to a chosen + file. This entry will only appear if the document does not correspond to + an existing file, but is a subdocument inside such a file (ie: an email + attachment). It is especially useful to extract attachments with no + associated editor. + + The Open/Preview Parent document entries allow working with the higher + level document (e.g. the email message an attachment comes from). Recoll + is sometimes not totally accurate as to what it can or can't do in this + area. For example the Parent entry will also appear for an email which is + part of an mbox folder file, but you can't actually visualize the mbox + (there will be an error dialog if you try). + + If the document is a top-level file, Open Parent will start the default + file manager on the enclosing filesystem directory. + + The Find similar entry will select a number of relevant term from the + current document and enter them into the simple search field. You can then + start a simple search, with a good chance of finding documents related to + the current result. I can't remember a single instance where this function + was actually useful to me... + + The Open Snippets Window entry will only appear for documents which + support page breaks (typically PDF, Postscript, DVI). The snippets window + lists extracts from the document, taken around search terms occurrences, + along with the corresponding page number, as links which can be used to + start the native viewer on the appropriate page. If the viewer supports + it, its search function will also be primed with one of the search terms. + + 3.1.3. The result table + + In Recoll 1.15 and newer, the results can be displayed in spreadsheet-like + fashion. You can switch to this presentation by clicking the table-like + icon in the toolbar (this is a toggle, click again to restore the list). + + Clicking on the column headers will allow sorting by the values in the + column. You can click again to invert the order, and use the header + right-click menu to reset sorting to the default relevance order (you can + also use the sort-by-date arrows to do this). + + Both the list and the table display the same underlying results. The sort + order set from the table is still active if you switch back to the list + mode. You can click twice on a date sort arrow to reset it from there. + + The header right-click menu allows adding or deleting columns. The columns + can be resized, and their order can be changed (by dragging). All the + changes are recorded when you quit recoll + + Hovering over a table row will update the detail area at the bottom of the + window with the corresponding values. You can click the row to freeze the + display. The bottom area is equivalent to a result list paragraph, with + links for starting a preview or a native application, and an equivalent + right-click menu. Typing Esc (the Escape key) will unfreeze the display. + + 3.1.4. Running arbitrary commands on result files (1.20 and later) + + Apart from the Open and Open With operations, which allow starting an + application on a result document (or a temporary copy), based on its MIME + type, it is also possible to run arbitrary commands on results which are + top-level files, using the Run Script entry in the results pop-up menu. + + The commands which will appear in the Run Script submenu must be defined + by .desktop files inside the scripts subdirectory of the current + configuration directory. + + Here follows an example of a .desktop file, which could be named for + example, ~/.recoll/scripts/myscript.desktop (the exact file name inside + the directory is irrelevant): + + [Desktop Entry] + Type=Application + Name=MyFirstScript + Exec=/home/me/bin/tryscript %F + MimeType=*/* + + + The Name attribute defines the label which will appear inside the Run + Script menu. The Exec attribute defines the program to be run, which does + not need to actually be a script, of course. The MimeType attribute is not + used, but needs to exist. + + The commands defined this way can also be used from links inside the + result paragraph. + + As an example, it might make sense to write a script which would move the + document to the trash and purge it from the Recoll index. + + 3.1.5. Displaying thumbnails + + The default format for the result list entries and the detail area of the + result table display an icon for each result document. The icon is either + a generic one determined from the MIME type, or a thumbnail of the + document appearance. Thumbnails are only displayed if found in the + standard freedesktop location, where they would typically have been + created by a file manager. + + Recoll has no capability to create thumbnails. A relatively simple trick + is to use the Open parent document/folder entry in the result list popup + menu. This should open a file manager window on the containing directory, + which should in turn create the thumbnails (depending on your settings). + Restarting the search should then display the thumbnails. + + There are also some pointers about thumbnail generation on the Recoll + wiki. + + 3.1.6. The preview window + + The preview window opens when you first click a Preview link inside the + result list. + + Subsequent preview requests for a given search open new tabs in the + existing window (except if you hold the Shift key while clicking which + will open a new window for side by side viewing). + + Starting another search and requesting a preview will create a new preview + window. The old one stays open until you close it. + + You can close a preview tab by typing Ctrl-W (Ctrl + W) in the window. + Closing the last tab for a window will also close the window. + + Of course you can also close a preview window by using the window manager + button in the top of the frame. + + You can display successive or previous documents from the result list + inside a preview tab by typing Shift+Down or Shift+Up (Down and Up are the + arrow keys). + + A right-click menu in the text area allows switching between displaying + the main text or the contents of fields associated to the document (ie: + author, abtract, etc.). This is especially useful in cases where the term + match did not occur in the main text but in one of the fields. In the case + of images, you can switch between three displays: the image itself, the + image metadata as extracted by exiftool and the fields, which is the + metadata stored in the index. + + You can print the current preview window contents by typing Ctrl-P (Ctrl + + P) in the window text. + + 3.1.6.1. Searching inside the preview + + The preview window has an internal search capability, mostly controlled by + the panel at the bottom of the window, which works in two modes: as a + classical editor incremental search, where we look for the text entered in + the entry zone, or as a way to walk the matches between the document and + the Recoll query that found it. + + Incremental text search + + The preview tabs have an internal incremental search function. You + initiate the search either by typing a / (slash) or CTL-F inside + the text area or by clicking into the Search for: text field and + entering the search string. You can then use the Next and Previous + buttons to find the next/previous occurrence. You can also type F3 + inside the text area to get to the next occurrence. + + If you have a search string entered and you use Ctrl-Up/Ctrl-Down + to browse the results, the search is initiated for each successive + document. If the string is found, the cursor will be positioned at + the first occurrence of the search string. + + Walking the match lists + + If the entry area is empty when you click the Next or Previous + buttons, the editor will be scrolled to show the next match to any + search term (the next highlighted zone). If you select a search + group from the dropdown list and click Next or Previous, the match + list for this group will be walked. This is not the same as a text + search, because the occurences will include non-exact matches (as + caused by stemming or wildcards). The search will revert to the + text mode as soon as you edit the entry area. + + 3.1.7. The Query Fragments window + + Selecting the Tools -> Query Fragments menu entry will open a window with + radio- and check-buttons which can be used to activate query language + fragments for filtering the current query. This can be useful if you have + frequent reusable selectors, for example, filtering on alternate + directories, or searching just one category of files, not covered by the + standard category selectors. + + The contents of the window are entirely customizable, and defined by the + contents of the fragbuts.xml file inside the configuration directory. The + sample file distributed with Recoll (which you should be able to find + under /usr/share/recoll/examples/fragbuts.xml), contains an example which + filters the results from the WEB history. + + Here follows an example: + + + + + + + + + + + + + + + -rclbes:BGL + + + + + rclbes:BGL + + + + + + + + + date:2010-01-01/2010-12-31 + + + + + dir:/my/great/directory + + + + + + Each radiobuttons or buttons section defines a line of checkbuttons or + radiobuttons inside the window. Any number of buttons can be selected, but + the radiobuttons in a line are exclusive. + + Each fragbut section defines the label for a button, and the Query + Language fragment which will be added (as an AND filter) before performing + the query if the button is active. + + This feature is new in Recoll 1.20, and will probably be refined depending + on user feedback. + + 3.1.8. Complex/advanced search + + The advanced search dialog helps you build more complex queries without + memorizing the search language constructs. It can be opened through the + Tools menu or through the main toolbar. + + Recoll keeps a history of searches. See Advanced search history. + + The dialog has two tabs: + + 1. The first tab lets you specify terms to search for, and permits + specifying multiple clauses which are combined to build the search. + + 2. The second tab lets filter the results according to file size, date of + modification, MIME type, or location. + + Click on the Start Search button in the advanced search dialog, or type + Enter in any text field to start the search. The button in the main window + always performs a simple search. + + Click on the Show query details link at the top of the result page to see + the query expansion. + + 3.1.8.1. Avanced search: the "find" tab + + This part of the dialog lets you constructc a query by combining multiple + clauses of different types. Each entry field is configurable for the + following modes: + + o All terms. + + o Any term. + + o None of the terms. + + o Phrase (exact terms in order within an adjustable window). + + o Proximity (terms in any order within an adjustable window). + + o Filename search. + + Additional entry fields can be created by clicking the Add clause button. + + When searching, the non-empty clauses will be combined either with an AND + or an OR conjunction, depending on the choice made on the left (All + clauses or Any clause). + + Entries of all types except "Phrase" and "Near" accept a mix of single + words and phrases enclosed in double quotes. Stemming and wildcard + expansion will be performed as for simple search. + + Phrases and Proximity searches. These two clauses work in similar ways, + with the difference that proximity searches do not impose an order on the + words. In both cases, an adjustable number (slack) of non-matched words + may be accepted between the searched ones (use the counter on the left to + adjust this count). For phrases, the default count is zero (exact match). + For proximity it is ten (meaning that two search terms, would be matched + if found within a window of twelve words). Examples: a phrase search for + quick fox with a slack of 0 will match quick fox but not quick brown fox. + With a slack of 1 it will match the latter, but not fox quick. A proximity + search for quick fox with the default slack will match the latter, and + also a fox is a cunning and quick animal. + + 3.1.8.2. Avanced search: the "filter" tab + + This part of the dialog has several sections which allow filtering the + results of a search according to a number of criteria + + o The first section allows filtering by dates of last modification. You + can specify both a minimum and a maximum date. The initial values are + set according to the oldest and newest documents found in the index. + + o The next section allows filtering the results by file size. There are + two entries for minimum and maximum size. Enter decimal numbers. You + can use suffix multipliers: k/K, m/M, g/G, t/T for 1E3, 1E6, 1E9, 1E12 + respectively. + + o The next section allows filtering the results by their MIME types, or + MIME categories (ie: media/text/message/etc.). + + You can transfer the types between two boxes, to define which will be + included or excluded by the search. + + The state of the file type selection can be saved as the default (the + file type filter will not be activated at program start-up, but the + lists will be in the restored state). + + o The bottom section allows restricting the search results to a sub-tree + of the indexed area. You can use the Invert checkbox to search for + files not in the sub-tree instead. If you use directory filtering + often and on big subsets of the file system, you may think of setting + up multiple indexes instead, as the performance may be better. + + You can use relative/partial paths for filtering. Ie, entering + dirA/dirB would match either /dir1/dirA/dirB/myfile1 or + /dir2/dirA/dirB/someother/myfile2. + + 3.1.8.3. Avanced search history + + The advanced search tool memorizes the last 100 searches performed. You + can walk the saved searches by using the up and down arrow keys while the + keyboard focus belongs to the advanced search dialog. + + The complex search history can be erased, along with the one for simple + search, by selecting the File -> Erase Search History menu entry. + + 3.1.9. The term explorer tool + + Recoll automatically manages the expansion of search terms to their + derivatives (ie: plural/singular, verb inflections). But there are other + cases where the exact search term is not known. For example, you may not + remember the exact spelling, or only know the beginning of the name. + + The search will only propose replacement terms with spelling variations + when no matching document were found. In some cases, both proper spellings + and mispellings are present in the index, and it may be interesting to + look for them explicitely. + + The term explorer tool (started from the toolbar icon or from the Term + explorer entry of the Tools menu) can be used to search the full index + terms list. It has three modes of operations: + + Wildcard + + In this mode of operation, you can enter a search string with + shell-like wildcards (*, ?, []). ie: xapi* would display all index + terms beginning with xapi. (More about wildcards here). + + Regular expression + + This mode will accept a regular expression as input. Example: + word[0-9]+. The expression is implicitely anchored at the + beginning. Ie: press will match pression but not expression. You + can use .*press to match the latter, but be aware that this will + cause a full index term list scan, which can be quite long. + + Stem expansion + + This mode will perform the usual stem expansion normally done as + part user input processing. As such it is probably mostly useful + to demonstrate the process. + + Spelling/Phonetic + + In this mode, you enter the term as you think it is spelled, and + Recoll will do its best to find index terms that sound like your + entry. This mode uses the Aspell spelling application, which must + be installed on your system for things to work (if your documents + contain non-ascii characters, Recoll needs an aspell version newer + than 0.60 for UTF-8 support). The language which is used to build + the dictionary out of the index terms (which is done at the end of + an indexing pass) is the one defined by your NLS environment. + Weird things will probably happen if languages are mixed up. + + Note that in cases where Recoll does not know the beginning of the string + to search for (ie a wildcard expression like *coll), the expansion can + take quite a long time because the full index term list will have to be + processed. The expansion is currently limited at 10000 results for + wildcards and regular expressions. It is possible to change the limit in + the configuration file. + + Double-clicking on a term in the result list will insert it into the + simple search entry field. You can also cut/paste between the result list + and any entry field (the end of lines will be taken care of). + + 3.1.10. Multiple indexes + + See the section describing the use of multiple indexes for generalities. + Only the aspects concerning the recoll GUI are described here. + + A recoll program instance is always associated with a specific index, + which is the one to be updated when requested from the File menu, but it + can use any number of Recoll indexes for searching. The external indexes + can be selected through the external indexes tab in the preferences + dialog. + + Index selection is performed in two phases. A set of all usable indexes + must first be defined, and then the subset of indexes to be used for + searching. These parameters are retained across program executions (there + are kept separately for each Recoll configuration). The set of all indexes + is usually quite stable, while the active ones might typically be adjusted + quite frequently. + + The main index (defined by RECOLL_CONFDIR) is always active. If this is + undesirable, you can set up your base configuration to index an empty + directory. + + When adding a new index to the set, you can select either a Recoll + configuration directory, or directly a Xapian index directory. In the + first case, the Xapian index directory will be obtained from the selected + configuration. + + As building the set of all indexes can be a little tedious when done + through the user interface, you can use the RECOLL_EXTRA_DBS environment + variable to provide an initial set. This might typically be set up by a + system administrator so that every user does not have to do it. The + variable should define a colon-separated list of index directories, ie: + + export RECOLL_EXTRA_DBS=/some/place/xapiandb:/some/other/db + + Another environment variable, RECOLL_ACTIVE_EXTRA_DBS allows adding to the + active list of indexes. This variable was suggested and implemented by a + Recoll user. It is mostly useful if you use scripts to mount external + volumes with Recoll indexes. By using RECOLL_EXTRA_DBS and + RECOLL_ACTIVE_EXTRA_DBS, you can add and activate the index for the + mounted volume when starting recoll. + + RECOLL_ACTIVE_EXTRA_DBS is available for Recoll versions 1.17.2 and later. + A change was made in the same update so that recoll will automatically + deactivate unreachable indexes when starting up. + + 3.1.11. Document history + + Documents that you actually view (with the internal preview or an external + tool) are entered into the document history, which is remembered. + + You can display the history list by using the Tools/Doc History menu + entry. + + You can erase the document history by using the Erase document history + entry in the File menu. + + 3.1.12. Sorting search results and collapsing duplicates + + The documents in a result list are normally sorted in order of relevance. + It is possible to specify a different sort order, either by using the + vertical arrows in the GUI toolbox to sort by date, or switching to the + result table display and clicking on any header. The sort order chosen + inside the result table remains active if you switch back to the result + list, until you click one of the vertical arrows, until both are unchecked + (you are back to sort by relevance). + + Sort parameters are remembered between program invocations, but result + sorting is normally always inactive when the program starts. It is + possible to keep the sorting activation state between program invocations + by checking the Remember sort activation state option in the preferences. + + It is also possible to hide duplicate entries inside the result list + (documents with the exact same contents as the displayed one). The test of + identity is based on an MD5 hash of the document container, not only of + the text contents (so that ie, a text document with an image added will + not be a duplicate of the text only). Duplicates hiding is controlled by + an entry in the GUI configuration dialog, and is off by default. + + As of release 1.19, when a result document does have undisplayed + duplicates, a Dups link will be shown with the result list entry. Clicking + the link will display the paths (URLs + ipaths) for the duplicate entries. + + 3.1.13. Search tips, shortcuts + + 3.1.13.1. Terms and search expansion + + Term completion. Typing Esc Space in the simple search entry field while + entering a word will either complete the current word if its beginning + matches a unique term in the index, or open a window to propose a list of + completions. + + Picking up new terms from result or preview text. Double-clicking on a + word in the result list or in a preview window will copy it to the simple + search entry field. + + Wildcards. Wildcards can be used inside search terms in all forms of + searches. More about wildcards. + + Automatic suffixes. Words like odt or ods can be automatically turned into + query language ext:xxx clauses. This can be enabled in the Search + preferences panel in the GUI. + + Disabling stem expansion. Entering a capitalized word in any search field + will prevent stem expansion (no search for gardening if you enter Garden + instead of garden). This is the only case where character case should make + a difference for a Recoll search. You can also disable stem expansion or + change the stemming language in the preferences. + + Finding related documents. Selecting the Find similar documents entry in + the result list paragraph right-click menu will select a set of + "interesting" terms from the current result, and insert them into the + simple search entry field. You can then possibly edit the list and start a + search to find documents which may be apparented to the current result. + + File names. File names are added as terms during indexing, and you can + specify them as ordinary terms in normal search fields (Recoll used to + index all directories in the file path as terms. This has been abandoned + as it did not seem really useful). Alternatively, you can use the specific + file name search which will only look for file names, and may be faster + than the generic search especially when using wildcards. + + 3.1.13.2. Working with phrases and proximity + + Phrases and Proximity searches. A phrase can be looked for by enclosing it + in double quotes. Example: "user manual" will look only for occurrences of + user immediately followed by manual. You can use the This phrase field of + the advanced search dialog to the same effect. Phrases can be entered + along simple terms in all simple or advanced search entry fields (except + This exact phrase). + + AutoPhrases. This option can be set in the preferences dialog. If it is + set, a phrase will be automatically built and added to simple searches + when looking for Any terms. This will not change radically the results, + but will give a relevance boost to the results where the search terms + appear as a phrase. Ie: searching for virtual reality will still find all + documents where either virtual or reality or both appear, but those which + contain virtual reality should appear sooner in the list. + + Phrase searches can strongly slow down a query if most of the terms in the + phrase are common. This is why the autophrase option is off by default for + Recoll versions before 1.17. As of version 1.17, autophrase is on by + default, but very common terms will be removed from the constructed + phrase. The removal threshold can be adjusted from the search preferences. + + Phrases and abbreviations. As of Recoll version 1.17, dotted abbreviations + like I.B.M. are also automatically indexed as a word without the dots: + IBM. Searching for the word inside a phrase (ie: "the IBM company") will + only match the dotted abrreviation if you increase the phrase slack (using + the advanced search panel control, or the o query language modifier). + Literal occurences of the word will be matched normally. + + 3.1.13.3. Others + + Using fields. You can use the query language and field specifications to + only search certain parts of documents. This can be especially helpful + with email, for example only searching emails from a specific originator: + search tips from:helpfulgui + + Ajusting the result table columns. When displaying results in table mode, + you can use a right click on the table headers to activate a pop-up menu + which will let you adjust what columns are displayed. You can drag the + column headers to adjust their order. You can click them to sort by the + field displayed in the column. You can also save the result list in CSV + format. + + Changing the GUI geometry. It is possible to configure the GUI in wide + form factor by dragging the toolbars to one of the sides (their location + is remembered between sessions), and moving the category filters to a menu + (can be set in the Preferences -> GUI configuration -> User interface + panel). + + Query explanation. You can get an exact description of what the query + looked for, including stem expansion, and Boolean operators used, by + clicking on the result list header. + + Advanced search history. As of Recoll 1.18, you can display any of the + last 100 complex searches performed by using the up and down arrow keys + while the advanced search panel is active. + + Browsing the result list inside a preview window. Entering Shift-Down or + Shift-Up (Shift + an arrow key) in a preview window will display the next + or the previous document from the result list. Any secondary search + currently active will be executed on the new document. + + Scrolling the result list from the keyboard. You can use PageUp and + PageDown to scroll the result list, Shift+Home to go back to the first + page. These work even while the focus is in the search entry. + + Result table: moving the focus to the table. You can use Ctrl-r to move + the focus from the search entry to the table, and then use the arrow keys + to change the current row. Ctrl-Shift-s returns to the search. + + Result table: open / preview. With the focus in the result table, you can + use Ctrl-o to open the document from the current row, Ctrl-Shift-o to open + the document and close recoll, Ctrl-d to preview the document. + + Editing a new search while the focus is not in the search entry. You can + use the Ctrl-Shift-S shortcut to return the cursor to the search entry + (and select the current search text), while the focus is anywhere in the + main window. + + Forced opening of a preview window. You can use Shift+Click on a result + list Preview link to force the creation of a preview window instead of a + new tab in the existing one. + + Closing previews. Entering Ctrl-W in a tab will close it (and, for the + last tab, close the preview window). Entering Esc will close the preview + window and all its tabs. + + Printing previews. Entering Ctrl-P in a preview window will print the + currently displayed text. + + Quitting. Entering Ctrl-Q almost anywhere will close the application. + + 3.1.14. Saving and restoring queries (1.21 and later) + + Both simple and advanced query dialogs save recent history, but the amount + is limited: old queries will eventually be forgotten. Also, important + queries may be difficult to find among others. This is why both types of + queries can also be explicitely saved to files, from the GUI menus: File + -> Save last query / Load last query + + The default location for saved queries is a subdirectory of the current + configuration directory, but saved queries are ordinary files and can be + written or moved anywhere. + + Some of the saved query parameters are part of the preferences (e.g. + autophrase or the active external indexes), and may differ when the query + is loaded from the time it was saved. In this case, Recoll will warn of + the differences, but will not change the user preferences. + + 3.1.15. Customizing the search interface + + You can customize some aspects of the search interface by using the GUI + configuration entry in the Preferences menu. + + There are several tabs in the dialog, dealing with the interface itself, + the parameters used for searching and returning results, and what indexes + are searched. + + User interface parameters: + + o Highlight color for query terms: Terms from the user query are + highlighted in the result list samples and the preview window. The + color can be chosen here. Any Qt color string should work (ie red, + #ff0000). The default is blue. + + o Style sheet: The name of a Qt style sheet text file which is applied + to the whole Recoll application on startup. The default value is + empty, but there is a skeleton style sheet (recoll.qss) inside the + /usr/share/recoll/examples directory. Using a style sheet, you can + change most recoll graphical parameters: colors, fonts, etc. See the + sample file for a few simple examples. + + You should be aware that parameters (e.g.: the background color) set + inside the Recoll GUI style sheet will override global system + preferences, with possible strange side effects: for example if you + set the foreground to a light color and the background to a dark one + in the desktop preferences, but only the background is set inside the + Recoll style sheet, and it is light too, then text will appear + light-on-light inside the Recoll GUI. + + o Maximum text size highlighted for preview Inserting highlights on + search term inside the text before inserting it in the preview window + involves quite a lot of processing, and can be disabled over the given + text size to speed up loading. + + o Prefer HTML to plain text for preview if set, Recoll will display HTML + as such inside the preview window. If this causes problems with the Qt + HTML display, you can uncheck it to display the plain text version + instead. + + o Plain text to HTML line style: when displaying plain text inside the + preview window, Recoll tries to preserve some of the original text + line breaks and indentation. It can either use PRE HTML tags, which + will well preserve the indentation but will force horizontal scrolling + for long lines, or use BR tags to break at the original line breaks, + which will let the editor introduce other line breaks according to the + window width, but will lose some of the original indentation. The + third option has been available in recent releases and is probably now + the best one: use PRE tags with line wrapping. + + o Choose editor applicationsr: this opens a dialog which allows you to + select the application to be used to open each MIME type. The default + is nornally to use the xdg-open utility, but you can override it. + + o Exceptions: even wen xdg-open is used by default for opening + documents, you can set exceptions for MIME types that will still be + opened according to Recoll preferences. This is useful for passing + parameters like page numbers or search strings to applications that + support them (e.g. evince). This cannot be done with xdg-open which + only supports passing one parameter. + + o Document filter choice style: this will let you choose if the document + categories are displayed as a list or a set of buttons, or a menu. + + o Start with simple search mode: this lets you choose the value of the + simple search type on program startup. Either a fixed value (e.g. + Query Language, or the value in use when the program last exited. + + o Auto-start simple search on white space entry: if this is checked, a + search will be executed each time you enter a space in the simple + search input field. This lets you look at the result list as you enter + new terms. This is off by default, you may like it or not... + + o Start with advanced search dialog open : If you use this dialog + frequently, checking the entries will get it to open when recoll + starts. + + o Remember sort activation state if set, Recoll will remember the sort + tool stat between invocations. It normally starts with sorting + disabled. + + Result list parameters: + + o Number of results in a result page + + o Result list font: There is quite a lot of information shown in the + result list, and you may want to customize the font and/or font size. + The rest of the fonts used by Recoll are determined by your generic Qt + config (try the qtconfig command). + + o Edit result list paragraph format string: allows you to change the + presentation of each result list entry. See the result list + customisation section. + + o Edit result page HTML header insert: allows you to define text + inserted at the end of the result page HTML header. More detail in the + result list customisation section. + + o Date format: allows specifying the format used for displaying dates + inside the result list. This should be specified as an strftime() + string (man strftime). + + o Abstract snippet separator: for synthetic abstracts built from index + data, which are usually made of several snippets from different parts + of the document, this defines the snippet separator, an ellipsis by + default. + + Search parameters: + + o Hide duplicate results: decides if result list entries are shown for + identical documents found in different places. + + o Stemming language: stemming obviously depends on the document's + language. This listbox will let you chose among the stemming databases + which were built during indexing (this is set in the main + configuration file), or later added with recollindex -s (See the + recollindex manual). Stemming languages which are dynamically added + will be deleted at the next indexing pass unless they are also added + in the configuration file. + + o Automatically add phrase to simple searches: a phrase will be + automatically built and added to simple searches when looking for Any + terms. This will give a relevance boost to the results where the + search terms appear as a phrase (consecutive and in order). + + o Autophrase term frequency threshold percentage: very frequent terms + should not be included in automatic phrase searches for performance + reasons. The parameter defines the cutoff percentage (percentage of + the documents where the term appears). + + o Replace abstracts from documents: this decides if we should synthesize + and display an abstract in place of an explicit abstract found within + the document itself. + + o Dynamically build abstracts: this decides if Recoll tries to build + document abstracts (lists of snippets) when displaying the result + list. Abstracts are constructed by taking context from the document + information, around the search terms. + + o Synthetic abstract size: adjust to taste... + + o Synthetic abstract context words: how many words should be displayed + around each term occurrence. + + o Query language magic file name suffixes: a list of words which + automatically get turned into ext:xxx file name suffix clauses when + starting a query language query (ie: doc xls xlsx...). This will save + some typing for people who use file types a lot when querying. + + External indexes: This panel will let you browse for additional indexes + that you may want to search. External indexes are designated by their + database directory (ie: /home/someothergui/.recoll/xapiandb, + /usr/local/recollglobal/xapiandb). + + Once entered, the indexes will appear in the External indexes list, and + you can chose which ones you want to use at any moment by checking or + unchecking their entries. + + Your main database (the one the current configuration indexes to), is + always implicitly active. If this is not desirable, you can set up your + configuration so that it indexes, for example, an empty directory. An + alternative indexer may also need to implement a way of purging the index + from stale data, + + 3.1.15.1. The result list format + + Newer versions of Recoll (from 1.17) normally use WebKit HTML widgets for + the result list and the snippets window (this may be disabled at build + time). Total customisation is possible with full support for CSS and + Javascript. Conversely, there are limits to what you can do with the older + Qt QTextBrowser, but still, it is possible to decide what data each result + will contain, and how it will be displayed. + + The result list presentation can be exhaustively customized by adjusting + two elements: + + o The paragraph format + + o HTML code inside the header section. For versions 1.21 and later, this + is also used for the snippets window + + The paragraph format and the header fragment can be edited from the Result + list tab of the GUI configuration. + + The header fragment is used both for the result list and the snippets + window. The snippets list is a table and has a snippets class attribute. + Each paragraph in the result list is a table, with class respar, but this + can be changed by editing the paragraph format. + + There are a few examples on the page about customising the result list on + the Recoll web site. + + The paragraph format + + This is an arbitrary HTML string where the following printf-like % + substitutions will be performed: + + o %A. Abstract + + o %D. Date + + o %I. Icon image name. This is normally determined from the MIME type. + The associations are defined inside the mimeconf configuration file. + If a thumbnail for the file is found at the standard Freedesktop + location, this will be displayed instead. + + o %K. Keywords (if any) + + o %L. Precooked Preview, Edit, and possibly Snippets links + + o %M. MIME type + + o %N. result Number inside the result page + + o %P. Parent folder Url. In the case of an embedded document, this is + the parent folder for the top level container file. + + o %R. Relevance percentage + + o %S. Size information + + o %T. Title or Filename if not set. + + o %t. Title or Filename if not set. + + o %U. Url + + The format of the Preview, Edit, and Snippets links is , and where docnum (%N) expands to the document + number inside the result page). + + A link target defined as "F%N" will open the document corresponding to the + %P parent folder expansion, usually creating a file manager window on the + folder where the container file resides. E.g.: + + %P + + A link target defined as R%N|scriptname will run the corresponding script + on the result file (if the document is embedded, the script will be + started on the top-level parent). See the section about defining scripts. + + In addition to the predefined values above, all strings like %(fieldname) + will be replaced by the value of the field named fieldname for this + document. Only stored fields can be accessed in this way, the value of + indexed but not stored fields is not known at this point in the search + process (see field configuration). There are currently very few fields + stored by default, apart from the values above (only author and filename), + so this feature will need some custom local configuration to be useful. An + example candidate would be the recipient field which is generated by the + message input handlers. + + The default value for the paragraph format string is: + + "\n" + "\n" + "\n" + "\n" + "
%L  %S   %T
\n" + "%M %D    %U %i
\n" + "%A %K
\n" + + You may, for example, try the following for a more web-like experience: + + %T
+ %A%U - %S - %L + + Note that the P%N link in the above paragraph makes the title a preview + link. Or the clean looking: + + %L %R +   %T&
%S  + %U + + +
%A
%K + + These samples, and some others are on the web site, with pictures to show + how they look. + + It is also possible to define the value of the snippet separator inside + the abstract section. + +3.2. Searching with the KDE KIO slave + + 3.2.1. What's this + + The Recoll KIO slave allows performing a Recoll search by entering an + appropriate URL in a KDE open dialog, or with an HTML-based interface + displayed in Konqueror. + + The HTML-based interface is similar to the Qt-based interface, but + slightly less powerful for now. Its advantage is that you can perform your + search while staying fully within the KDE framework: drag and drop from + the result list works normally and you have your normal choice of + applications for opening files. + + The alternative interface uses a directory view of search results. Due to + limitations in the current KIO slave interface, it is currently not + obviously useful (to me). + + The interface is described in more detail inside a help file which you can + access by entering recoll:/ inside the konqueror URL line (this works only + if the recoll KIO slave has been previously installed). + + The instructions for building this module are located in the source tree. + See: kde/kio/recoll/00README.txt. Some Linux distributions do package the + kio-recoll module, so check before diving into the build process, maybe + it's already out there ready for one-click installation. + + 3.2.2. Searchable documents + + As a sample application, the Recoll KIO slave could allow preparing a set + of HTML documents (for example a manual) so that they become their own + search interface inside konqueror. + + This can be done by either explicitly inserting + links around some document areas, or automatically by adding a very small + javascript program to the documents, like the following example, which + would initiate a search by double-clicking any term: + + + .... + + + +3.3. Searching on the command line + + There are several ways to obtain search results as a text stream, without + a graphical interface: + + o By passing option -t to the recoll program. + + o By using the recollq program. + + o By writing a custom Python program, using the Recoll Python API. + + The first two methods work in the same way and accept/need the same + arguments (except for the additional -t to recoll). The query to be + executed is specified as command line arguments. + + recollq is not built by default. You can use the Makefile in the query + directory to build it. This is a very simple program, and if you can + program a little c++, you may find it useful to taylor its output format + to your needs. Not that recollq is only really useful on systems where the + Qt libraries (or even the X11 ones) are not available. Otherwise, just use + recoll -t, which takes the exact same parameters and options which are + described for recollq + + recollq has a man page (not installed by default, look in the doc/man + directory). The Usage string is as follows: + + recollq: usage: + -P: Show the date span for all the documents present in the index + [-o|-a|-f] [-q] + Runs a recoll query and displays result lines. + Default: will interpret the argument(s) as a xesam query string + query may be like: + implicit AND, Exclusion, field spec: t1 -t2 title:t3 + OR has priority: t1 OR t2 t3 OR t4 means (t1 OR t2) AND (t3 OR t4) + Phrase: "t1 t2" (needs additional quoting on cmd line) + -o Emulate the GUI simple search in ANY TERM mode + -a Emulate the GUI simple search in ALL TERMS mode + -f Emulate the GUI simple search in filename mode + -q is just ignored (compatibility with the recoll GUI command line) + Common options: + -c : specify config directory, overriding $RECOLL_CONFDIR + -d also dump file contents + -n [first-] define the result slice. The default value for [first] + is 0. Without the option, the default max count is 2000. + Use n=0 for no limit + -b : basic. Just output urls, no mime types or titles + -Q : no result lines, just the processed query and result count + -m : dump the whole document meta[] array for each result + -A : output the document abstracts + -S fld : sort by field + -s stemlang : set stemming language to use (must exist in index...) + Use -s "" to turn off stem expansion + -D : sort descending + -i : additional index, several can be given + -e use url encoding (%xx) for urls + -F : output exactly these fields for each result. + The field values are encoded in base64, output in one line and + separated by one space character. This is the recommended format + for use by other programs. Use a normal query with option -m to + see the field names. + + Sample execution: + + recollq 'ilur -nautique mime:text/html' + Recoll query: ((((ilur:(wqf=11) OR ilurs) AND_NOT (nautique:(wqf=11) + OR nautiques OR nautiqu OR nautiquement)) FILTER Ttext/html)) + 4 results + text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/comptes.html] [comptes.html] 18593 bytes + text/html [file:///Users/uncrypted-dockes/projets/nautique/webnautique/articles/ilur1/index.html] [Constructio... + text/html [file:///Users/uncrypted-dockes/projets/pagepers/index.html] [psxtcl/writemime/recoll]... + text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/recu-chasse-maree.... + +3.4. Path translations + + In some cases, the document paths stored inside the index do not match the + actual ones, so that document previews and accesses will fail. This can + occur in a number of circumstances: + + o When using multiple indexes it is a relatively common occurrence that + some will actually reside on a remote volume, for exemple mounted via + NFS. In this case, the paths used to access the documents on the local + machine are not necessarily the same than the ones used while indexing + on the remote machine. For example, /home/me may have been used as a + topdirs elements while indexing, but the directory might be mounted as + /net/server/home/me on the local machine. + + o The case may also occur with removable disks. It is perfectly possible + to configure an index to live with the documents on the removable + disk, but it may happen that the disk is not mounted at the same place + so that the documents paths from the index are invalid. + + o As a last exemple, one could imagine that a big directory has been + moved, but that it is currently inconvenient to run the indexer. + + More generally, the path translation facility may be useful whenever the + documents paths seen by the indexer are not the same as the ones which + should be used at query time. + + Recoll has a facility for rewriting access paths when extracting the data + from the index. The translations can be defined for the main index and for + any additional query index. + + In the above NFS example, Recoll could be instructed to rewrite any + file:///home/me URL from the index to file:///net/server/home/me, allowing + accesses from the client. + + The translations are defined in the ptrans configuration file, which can + be edited by hand or from the GUI external indexes configuration dialog. + +3.5. The query language + + The query language processor is activated in the GUI simple search entry + when the search mode selector is set to Query Language. It can also be + used with the KIO slave or the command line search. It broadly has the + same capabilities as the complex search interface in the GUI. + + The language is based on the (seemingly defunct) Xesam user search + language specification. + + If the results of a query language search puzzle you and you doubt what + has been actually searched for, you can use the GUI Show Query link at the + top of the result list to check the exact query which was finally executed + by Xapian. + + Here follows a sample request that we are going to explain: + + author:"john doe" Beatles OR Lennon Live OR Unplugged -potatoes + + + This would search for all documents with John Doe appearing as a phrase in + the author field (exactly what this is would depend on the document type, + ie: the From: header, for an email message), and containing either beatles + or lennon and either live or unplugged but not potatoes (in any part of + the document). + + An element is composed of an optional field specification, and a value, + separated by a colon (the field separator is the last colon in the + element). Examples: Eugenie, author:balzac, dc:title:grandet + dc:title:"eugenie grandet" + + The colon, if present, means "contains". Xesam defines other relations, + which are mostly unsupported for now (except in special cases, described + further down). + + All elements in the search entry are normally combined with an implicit + AND. It is possible to specify that elements be OR'ed instead, as in + Beatles OR Lennon. The OR must be entered literally (capitals), and it has + priority over the AND associations: word1 word2 OR word3 means word1 AND + (word2 OR word3) not (word1 AND word2) OR word3. Explicit parenthesis are + not supported. + + As of Recoll 1.21, you can use parentheses to group elements, which will + sometimes make things clearer, and may allow expressing combinations which + would have been difficult otherwise. + + An element preceded by a - specifies a term that should not appear. + + As usual, words inside quotes define a phrase (the order of words is + significant), so that title:"prejudice pride" is not the same as + title:prejudice title:pride, and is unlikely to find a result. + + Words inside phrases and capitalized words are not stem-expanded. + Wildcards may be used anywhere inside a term. Specifying a wild-card on + the left of a term can produce a very slow search (or even an incorrect + one if the expansion is truncated because of excessive size). Also see + More about wildcards. + + To save you some typing, recent Recoll versions (1.20 and later) interpret + a comma-separated list of terms as an AND list inside the field. Use slash + characters ('/') for an OR list. No white space is allowed. So + + author:john,lennon + + will search for documents with john and lennon inside the author field (in + any order), and + + author:john/ringo + + would search for john or ringo. + + Modifiers can be set on a double-quote value, for example to specify a + proximity search (unordered). See the modifier section. No space must + separate the final double-quote and the modifiers value, e.g. "two + one"po10 + + Recoll currently manages the following default fields: + + o title, subject or caption are synonyms which specify data to be + searched for in the document title or subject. + + o author or from for searching the documents originators. + + o recipient or to for searching the documents recipients. + + o keyword for searching the document-specified keywords (few documents + actually have any). + + o filename for the document's file name. This is not necessarily set for + all documents: internal documents contained inside a compound one (for + example an EPUB section) do not inherit the container file name any + more, this was replaced by an explicit field (see next). Sub-documents + can still have a specific filename, if it is implied by the document + format, for example the attachment file name for an email attachment. + + o containerfilename. This is set for all documents, both top-level and + contained sub-documents, and is always the name of the filesystem + directory entry which contains the data. The terms from this field can + only be matched by an explicit field specification (as opposed to + terms from filename which are also indexed as general document + content). This avoids getting matches for all the sub-documents when + searching for the container file name. + + o ext specifies the file name extension (Ex: ext:html) + + Recoll 1.20 and later have a way to specify aliases for the field names, + which will save typing, for example by aliasing filename to fn or + containerfilename to cfn. See the section about the fields file + + The field syntax also supports a few field-like, but special, criteria: + + o dir for filtering the results on file location (Ex: + dir:/home/me/somedir). -dir also works to find results not in the + specified directory (release >= 1.15.8). Tilde expansion will be + performed as usual (except for a bug in versions 1.19 to 1.19.11p1). + Wildcards will be expanded, but please have a look at an important + limitation of wildcards in path filters. + + Relative paths also make sense, for example, dir:share/doc would match + either /usr/share/doc or /usr/local/share/doc + + Several dir clauses can be specified, both positive and negative. For + example the following makes sense: + + dir:recoll dir:src -dir:utils -dir:common + + + This would select results which have both recoll and src in the path + (in any order), and which have not either utils or common. + + You can also use OR conjunctions with dir: clauses. + + A special aspect of dir clauses is that the values in the index are + not transcoded to UTF-8, and never lower-cased or unaccented, but + stored as binary. This means that you need to enter the values in the + exact lower or upper case, and that searches for names with diacritics + may sometimes be impossible because of character set conversion + issues. Non-ASCII UNIX file paths are an unending source of trouble + and are best avoided. + + You need to use double-quotes around the path value if it contains + space characters. + + o size for filtering the results on file size. Example: size<10000. You + can use <, > or = as operators. You can specify a range like the + following: size>100 size<1000. The usual k/K, m/M, g/G, t/T can be + used as (decimal) multipliers. Ex: size>1k to search for files bigger + than 1000 bytes. + + o date for searching or filtering on dates. The syntax for the argument + is based on the ISO8601 standard for dates and time intervals. Only + dates are supported, no times. The general syntax is 2 elements + separated by a / character. Each element can be a date or a period of + time. Periods are specified as PnYnMnD. The n numbers are the + respective numbers of years, months or days, any of which may be + missing. Dates are specified as YYYY-MM-DD. The days and months parts + may be missing. If the / is present but an element is missing, the + missing element is interpreted as the lowest or highest date in the + index. Examples: + + o 2001-03-01/2002-05-01 the basic syntax for an interval of dates. + + o 2001-03-01/P1Y2M the same specified with a period. + + o 2001/ from the beginning of 2001 to the latest date in the index. + + o 2001 the whole year of 2001 + + o P2D/ means 2 days ago up to now if there are no documents with + dates in the future. + + o /2003 all documents from 2003 or older. + + Periods can also be specified with small letters (ie: p2y). + + o mime or format for specifying the MIME type. This one is quite special + because you can specify several values which will be OR'ed (the normal + default for the language is AND). Ex: mime:text/plain mime:text/html. + Specifying an explicit boolean operator before a mime specification is + not supported and will produce strange results. You can filter out + certain types by using negation (-mime:some/type), and you can use + wildcards in the value (mime:text/*). Note that mime is the ONLY field + with an OR default. You do need to use OR with ext terms for example. + + o type or rclcat for specifying the category (as in + text/media/presentation/etc.). The classification of MIME types in + categories is defined in the Recoll configuration (mimeconf), and can + be modified or extended. The default category names are those which + permit filtering results in the main GUI screen. Categories are OR'ed + like MIME types above. This can't be negated with - either. + + The document input handlers used while indexing have the possibility to + create other fields with arbitrary names, and aliases may be defined in + the configuration, so that the exact field search possibilities may be + different for you if someone took care of the customisation. + + 3.5.1. Modifiers + + Some characters are recognized as search modifiers when found immediately + after the closing double quote of a phrase, as in "some + term"modifierchars. The actual "phrase" can be a single term of course. + Supported modifiers: + + o l can be used to turn off stemming (mostly makes sense with p because + stemming is off by default for phrases). + + o o can be used to specify a "slack" for phrase and proximity searches: + the number of additional terms that may be found between the specified + ones. If o is followed by an integer number, this is the slack, else + the default is 10. + + o p can be used to turn the default phrase search into a proximity one + (unordered). Example:"order any in"p + + o C will turn on case sensitivity (if the index supports it). + + o D will turn on diacritics sensitivity (if the index supports it). + + o A weight can be specified for a query element by specifying a decimal + value at the start of the modifiers. Example: "Important"2.5. + +3.6. Search case and diacritics sensitivity + + For Recoll versions 1.18 and later, and when working with a raw index (not + the default), searches can be made sensitive to character case and + diacritics. How this happens is controlled by configuration variables and + what search data is entered. + + The general default is that searches are insensitive to case and + diacritics. An entry of resume will match any of Resume, RESUME, resume, + Resume etc. + + Two configuration variables can automate switching on sensitivity: + + autodiacsens + + If this is set, search sensitivity to diacritics will be turned on + as soon as an accented character exists in a search term. When the + variable is set to true, resume will start a + diacritics-unsensitive search, but resume will be matched exactly. + The default value is false. + + autocasesens + + If this is set, search sensitivity to character case will be + turned on as soon as an upper-case character exists in a search + term except for the first one. When the variable is set to true, + us or Us will start a diacritics-unsensitive search, but US will + be matched exactly. The default value is true (contrary to + autodiacsens). + + As in the past, capitalizing the first letter of a word will turn off its + stem expansion and have no effect on case-sensitivity. + + You can also explicitely activate case and diacritics sensitivity by using + modifiers with the query language. C will make the term case-sensitive, + and D will make it diacritics-sensitive. Examples: + + "us"C + + + will search for the term us exactly (Us will not be a match). + + "resume"D + + + will search for the term resume exactly (resume will not be a match). + + When either case or diacritics sensitivity is activated, stem expansion is + turned off. Having both does not make much sense. + +3.7. Anchored searches and wildcards + + Some special characters are interpreted by Recoll in search strings to + expand or specialize the search. Wildcards expand a root term in + controlled ways. Anchor characters can restrict a search to succeed only + if the match is found at or near the beginning of the document or one of + its fields. + + 3.7.1. More about wildcards + + All words entered in Recoll search fields will be processed for wildcard + expansion before the request is finally executed. + + The wildcard characters are: + + o * which matches 0 or more characters. + + o ? which matches a single character. + + o [] which allow defining sets of characters to be matched (ex: [abc] + matches a single character which may be 'a' or 'b' or 'c', [0-9] + matches any number. + + You should be aware of a few things when using wildcards. + + o Using a wildcard character at the beginning of a word can make for a + slow search because Recoll will have to scan the whole index term list + to find the matches. However, this is much less a problem for field + searches, and queries like author:*@domain.com can sometimes be very + useful. + + o For Recoll version 18 only, when working with a raw index (preserving + character case and diacritics), the literal part of a wildcard + expression will be matched exactly for case and diacritics. This is + not true any more for versions 19 and later. + + o Using a * at the end of a word can produce more matches than you would + think, and strange search results. You can use the term explorer tool + to check what completions exist for a given term. You can also see + exactly what search was performed by clicking on the link at the top + of the result list. In general, for natural language terms, stem + expansion will produce better results than an ending * (stem expansion + is turned off when any wildcard character appears in the term). + + 3.7.1.1. Wildcards and path filtering + + Due to the way that Recoll processes wildcards inside dir path filtering + clauses, they will have a multiplicative effect on the query size. A + clause containg wildcards in several paths elements, like, for example, + dir:/home/me/*/*/docdir, will almost certainly fail if your indexed tree + is of any realistic size. + + Depending on the case, you may be able to work around the issue by + specifying the paths elements more narrowly, with a constant prefix, or by + using 2 separate dir: clauses instead of multiple wildcards, as in + dir:/home/me dir:docdir. The latter query is not equivalent to the initial + one because it does not specify a number of directory levels, but that's + the best we can do (and it may be actually more useful in some cases). + + 3.7.2. Anchored searches + + Two characters are used to specify that a search hit should occur at the + beginning or at the end of the text. ^ at the beginning of a term or + phrase constrains the search to happen at the start, $ at the end force it + to happen at the end. + + As this function is implemented as a phrase search it is possible to + specify a maximum distance at which the hit should occur, either through + the controls of the advanced search panel, or using the query language, + for example, as in: + + "^someterm"o10 + + which would force someterm to be found within 10 terms of the start of the + text. This can be combined with a field search as in + somefield:"^someterm"o10 or somefield:someterm$. + + This feature can also be used with an actual phrase search, but in this + case, the distance applies to the whole phrase and anchor, so that, for + example, bla bla my unexpected term at the beginning of the text would be + a match for "^my term"o5. + + Anchored searches can be very useful for searches inside somewhat + structured documents like scientific articles, in case explicit metadata + has not been supplied (a most frequent case), for example for looking for + matches inside the abstract or the list of authors (which occur at the top + of the document). + +3.8. Desktop integration + + Being independant of the desktop type has its drawbacks: Recoll desktop + integration is minimal. However there are a few tools available: + + o The KDE KIO Slave was described in a previous section. + + o If you use a recent version of Ubuntu Linux, you may find the Ubuntu + Unity Lens module useful. + + o There is also an independantly developed Krunner plugin. + + Here follow a few other things that may help. + + 3.8.1. Hotkeying recoll + + It is surprisingly convenient to be able to show or hide the Recoll GUI + with a single keystroke. Recoll comes with a small Python script, based on + the libwnck window manager interface library, which will allow you to do + just this. The detailed instructions are on this wiki page. + + 3.8.2. The KDE Kicker Recoll applet + + This is probably obsolete now. Anyway: + + The Recoll source tree contains the source code to the recoll_applet, a + small application derived from the find_applet. This can be used to add a + small Recoll launcher to the KDE panel. + + The applet is not automatically built with the main Recoll programs, nor + is it included with the main source distribution (because the KDE build + boilerplate makes it relatively big). You can download its source from the + recoll.org download page. Use the omnipotent configure;make;make install + incantation to build and install. + + You can then add the applet to the panel by right-clicking the panel and + choosing the Add applet entry. + + The recoll_applet has a small text window where you can type a Recoll + query (in query language form), and an icon which can be used to restrict + the search to certain types of files. It is quite primitive, and launches + a new recoll GUI instance every time (even if it is already running). You + may find it useful anyway. + +Chapter 4. Programming interface + + Recoll has an Application Programming Interface, usable both for indexing + and searching, currently accessible from the Python language. + + Another less radical way to extend the application is to write input + handlers for new types of documents. + + The processing of metadata attributes for documents (fields) is highly + configurable. + +4.1. Writing a document input handler + + Terminology + + The small programs or pieces of code which handle the processing of the + different document types for Recoll used to be called filters, which is + still reflected in the name of the directory which holds them and many + configuration variables. They were named this way because one of their + primary functions is to filter out the formatting directives and keep the + text content. However these modules may have other behaviours, and the + term input handler is now progressively substituted in the documentation. + filter is still used in many places though. + + Recoll input handlers cooperate to translate from the multitude of input + document formats, simple ones as opendocument, acrobat), or compound ones + such as Zip or Email, into the final Recoll indexing input format, which + is plain text. Most input handlers are executable programs or scripts. A + few handlers are coded in C++ and live inside recollindex. This latter + kind will not be described here. + + There are currently (1.18 and since 1.13) two kinds of external executable + input handlers: + + o Simple exec handlers run once and exit. They can be bare programs like + antiword, or scripts using other programs. They are very simple to + write, because they just need to print the converted document to the + standard output. Their output can be plain text or HTML. HTML is + usually preferred because it can store metadata fields and it allows + preserving some of the formatting for the GUI preview. + + o Multiple execm handlers can process multiple files (sparing the + process startup time which can be very significant), or multiple + documents per file (e.g.: for zip or chm files). They communicate with + the indexer through a simple protocol, but are nevertheless a bit more + complicated than the older kind. Most of new handlers are written in + Python, using a common module to handle the protocol. There is an + exception, rclimg which is written in Perl. The subdocuments output by + these handlers can be directly indexable (text or HTML), or they can + be other simple or compound documents that will need to be processed + by another handler. + + In both cases, handlers deal with regular file system files, and can + process either a single document, or a linear list of documents in each + file. Recoll is responsible for performing up to date checks, deal with + more complex embedding and other upper level issues. + + A simple handler returning a document in text/plain format, can transfer + no metadata to the indexer. Generic metadata, like document size or + modification date, will be gathered and stored by the indexer. + + Handlers that produce text/html format can return an arbitrary amount of + metadata inside HTML meta tags. These will be processed according to the + directives found in the fields configuration file. + + The handlers that can handle multiple documents per file return a single + piece of data to identify each document inside the file. This piece of + data, called an ipath element will be sent back by Recoll to extract the + document at query time, for previewing, or for creating a temporary file + to be opened by a viewer. + + The following section describes the simple handlers, and the next one + gives a few explanations about the execm ones. You could conceivably write + a simple handler with only the elements in the manual. This will not be + the case for the other ones, for which you will have to look at the code. + + 4.1.1. Simple input handlers + + Recoll simple handlers are usually shell-scripts, but this is in no way + necessary. Extracting the text from the native format is the difficult + part. Outputting the format expected by Recoll is trivial. Happily enough, + most document formats have translators or text extractors which can be + called from the handler. In some cases the output of the translating + program is completely appropriate, and no intermediate shell-script is + needed. + + Input handlers are called with a single argument which is the source file + name. They should output the result to stdout. + + When writing a handler, you should decide if it will output plain text or + HTML. Plain text is simpler, but you will not be able to add metadata or + vary the output character encoding (this will be defined in a + configuration file). Additionally, some formatting may be easier to + preserve when previewing HTML. Actually the deciding factor is metadata: + Recoll has a way to extract metadata from the HTML header and use it for + field searches.. + + The RECOLL_FILTER_FORPREVIEW environment variable (values yes, no) tells + the handler if the operation is for indexing or previewing. Some handlers + use this to output a slightly different format, for example stripping + uninteresting repeated keywords (ie: Subject: for email) when indexing. + This is not essential. + + You should look at one of the simple handlers, for example rclps for a + starting point. + + Don't forget to make your handler executable before testing ! + + 4.1.2. "Multiple" handlers + + If you can program and want to write an execm handler, it should not be + too difficult to make sense of one of the existing modules. For example, + look at rclzip which uses Zip file paths as identifiers (ipath), and + rclics, which uses an integer index. Also have a look at the comments + inside the internfile/mh_execm.h file and possibly at the corresponding + module. + + execm handlers sometimes need to make a choice for the nature of the ipath + elements that they use in communication with the indexer. Here are a few + guidelines: + + o Use ASCII or UTF-8 (if the identifier is an integer print it, for + example, like printf %d would do). + + o If at all possible, the data should make some kind of sense when + printed to a log file to help with debugging. + + o Recoll uses a colon (:) as a separator to store a complex path + internally (for deeper embedding). Colons inside the ipath elements + output by a handler will be escaped, but would be a bad choice as a + handler-specific separator (mostly, again, for debugging issues). + + In any case, the main goal is that it should be easy for the handler to + extract the target document, given the file name and the ipath element. + + execm handlers will also produce a document with a null ipath element. + Depending on the type of document, this may have some associated data + (e.g. the body of an email message), or none (typical for an archive + file). If it is empty, this document will be useful anyway for some + operations, as the parent of the actual data documents. + + 4.1.3. Telling Recoll about the handler + + There are two elements that link a file to the handler which should + process it: the association of file to MIME type and the association of a + MIME type with a handler. + + The association of files to MIME types is mostly based on name suffixes. + The types are defined inside the mimemap file. Example: + + + .doc = application/msword + + If no suffix association is found for the file name, Recoll will try to + execute the file -i command to determine a MIME type. + + The association of file types to handlers is performed in the mimeconf + file. A sample will probably be of better help than a long explanation: + + + [index] + application/msword = exec antiword -t -i 1 -m UTF-8;\ + mimetype = text/plain ; charset=utf-8 + + application/ogg = exec rclogg + + text/rtf = exec unrtf --nopict --html; charset=iso-8859-1; mimetype=text/html + + application/x-chm = execm rclchm + + The fragment specifies that: + + o application/msword files are processed by executing the antiword + program, which outputs text/plain encoded in utf-8. + + o application/ogg files are processed by the rclogg script, with default + output type (text/html, with encoding specified in the header, or + utf-8 by default). + + o text/rtf is processed by unrtf, which outputs text/html. The + iso-8859-1 encoding is specified because it is not the utf-8 default, + and not output by unrtf in the HTML header section. + + o application/x-chm is processed by a persistant handler. This is + determined by the execm keyword. + + 4.1.4. Input handler HTML output + + The output HTML could be very minimal like the following example: + + + + + + + Some text content + + + + + You should take care to escape some characters inside the text by + transforming them into appropriate entities. At the very minimum, "&" + should be transformed into "&", "<" should be transformed into "<". + This is not always properly done by translating programs which output + HTML, and of course never by those which output plain text. + + When encapsulating plain text in an HTML body, the display of a preview + may be improved by enclosing the text inside
 tags.
+
+   The character set needs to be specified in the header. It does not need to
+   be UTF-8 (Recoll will take care of translating it), but it must be
+   accurate for good results.
+
+   Recoll will process meta tags inside the header as possible document
+   fields candidates. Documents fields can be processed by the indexer in
+   different ways, for searching or displaying inside query results. This is
+   described in a following section.
+
+   By default, the indexer will process the standard header fields if they
+   are present: title, meta/description, and meta/keywords are both indexed
+   and stored for query-time display.
+
+   A predefined non-standard meta tag will also be processed by Recoll
+   without further configuration: if a date tag is present and has the right
+   format, it will be used as the document date (for display and sorting), in
+   preference to the file modification date. The date format should be as
+   follows:
+
+ 
+ or
+ 
+          
+
+   Example:
+
+ 
+          
+
+   Input handlers also have the possibility to "invent" field names. This
+   should also be output as meta tags:
+
+ 
+
+   You can embed HTML markup inside the content of custom fields, for
+   improving the display inside result lists. In this case, add a (wildly
+   non-standard) markup attribute to tell Recoll that the value is HTML and
+   should not be escaped for display.
+
+ 
+
+   As written above, the processing of fields is described in a further
+   section.
+
+  4.1.5. Page numbers
+
+   The indexer will interpret ^L characters in the handler output as
+   indicating page breaks, and will record them. At query time, this allows
+   starting a viewer on the right page for a hit or a snippet. Currently,
+   only the PDF, Postscript and DVI handlers generate page breaks.
+
+4.2. Field data processing
+
+   Fields are named pieces of information in or about documents, like title,
+   author, abstract.
+
+   The field values for documents can appear in several ways during indexing:
+   either output by input handlers as meta fields in the HTML header section,
+   or extracted from file extended attributes, or added as attributes of the
+   Doc object when using the API, or again synthetized internally by Recoll.
+
+   The Recoll query language allows searching for text in a specific field.
+
+   Recoll defines a number of default fields. Additional ones can be output
+   by handlers, and described in the fields configuration file.
+
+   Fields can be:
+
+     o indexed, meaning that their terms are separately stored in inverted
+       lists (with a specific prefix), and that a field-specific search is
+       possible.
+
+     o stored, meaning that their value is recorded in the index data record
+       for the document, and can be returned and displayed with search
+       results.
+
+   A field can be either or both indexed and stored. This and other aspects
+   of fields handling is defined inside the fields configuration file.
+
+   The sequence of events for field processing is as follows:
+
+     o During indexing, recollindex scans all meta fields in HTML documents
+       (most document types are transformed into HTML at some point). It
+       compares the name for each element to the configuration defining what
+       should be done with fields (the fields file)
+
+     o If the name for the meta element matches one for a field that should
+       be indexed, the contents are processed and the terms are entered into
+       the index with the prefix defined in the fields file.
+
+     o If the name for the meta element matches one for a field that should
+       be stored, the content of the element is stored with the document data
+       record, from which it can be extracted and displayed at query time.
+
+     o At query time, if a field search is performed, the index prefix is
+       computed and the match is only performed against appropriately
+       prefixed terms in the index.
+
+     o At query time, the field can be displayed inside the result list by
+       using the appropriate directive in the definition of the result list
+       paragraph format. All fields are displayed on the fields screen of the
+       preview window (which you can reach through the right-click menu).
+       This is independant of the fact that the search which produced the
+       results used the field or not.
+
+   You can find more information in the section about the fields file, or in
+   comments inside the file.
+
+   You can also have a look at the example on the Wiki, detailing how one
+   could add a page count field to pdf documents for displaying inside result
+   lists.
+
+4.3. API
+
+  4.3.1. Interface elements
+
+   A few elements in the interface are specific and and need an explanation.
+
+   udi
+
+           An udi (unique document identifier) identifies a document. Because
+           of limitations inside the index engine, it is restricted in length
+           (to 200 bytes), which is why a regular URI cannot be used. The
+           structure and contents of the udi is defined by the application
+           and opaque to the index engine. For example, the internal file
+           system indexer uses the complete document path (file path +
+           internal path), truncated to length, the suppressed part being
+           replaced by a hash value.
+
+   ipath
+
+           This data value (set as a field in the Doc object) is stored,
+           along with the URL, but not indexed by Recoll. Its contents are
+           not interpreted, and its use is up to the application. For
+           example, the Recoll internal file system indexer stores the part
+           of the document access path internal to the container file (ipath
+           in this case is a list of subdocument sequential numbers). url and
+           ipath are returned in every search result and permit access to the
+           original document.
+
+   Stored and indexed fields
+
+           The fields file inside the Recoll configuration defines which
+           document fields are either "indexed" (searchable), "stored"
+           (retrievable with search results), or both.
+
+   Data for an external indexer, should be stored in a separate index, not
+   the one for the Recoll internal file system indexer, except if the latter
+   is not used at all). The reason is that the main document indexer purge
+   pass would remove all the other indexer's documents, as they were not seen
+   during indexing. The main indexer documents would also probably be a
+   problem for the external indexer purge operation.
+
+  4.3.2. Python interface
+
+    4.3.2.1. Introduction
+
+   Recoll versions after 1.11 define a Python programming interface, both for
+   searching and indexing. The indexing portion has seen little use, but the
+   searching one is used in the Recoll Ubuntu Unity Lens and Recoll Web UI.
+
+   The API is inspired by the Python database API specification. There were
+   two major changes in recent Recoll versions:
+
+     o The basis for the Recoll API changed from Python database API version
+       1.0 (Recoll versions up to 1.18.1), to version 2.0 (Recoll 1.18.2 and
+       later).
+     o The recoll module became a package (with an internal recoll module) as
+       of Recoll version 1.19, in order to add more functions. For existing
+       code, this only changes the way the interface must be imported.
+
+   We will mostly describe the new API and package structure here. A
+   paragraph at the end of this section will explain a few differences and
+   ways to write code compatible with both versions.
+
+   The Python interface can be found in the source package, under
+   python/recoll.
+
+   The python/recoll/ directory contains the usual setup.py. After
+   configuring the main Recoll code, you can use the script to build and
+   install the Python module:
+
+             cd recoll-xxx/python/recoll
+             python setup.py build
+             python setup.py install
+          
+
+   The normal Recoll installer installs the Python API along with the main
+   code.
+
+   When installing from a repository, and depending on the distribution, the
+   Python API can sometimes be found in a separate package.
+
+    4.3.2.2. Recoll package
+
+   The recoll package contains two modules:
+
+     o The recoll module contains functions and classes used to query (or
+       update) the index.
+
+     o The rclextract module contains functions and classes used to access
+       document data.
+
+    4.3.2.3. The recoll module
+
+      Functions
+
+   connect(confdir=None, extra_dbs=None, writable = False)
+           The connect() function connects to one or several Recoll index(es)
+           and returns a Db object.
+              o confdir may specify a configuration directory. The usual
+                defaults apply.
+              o extra_dbs is a list of additional indexes (Xapian
+                directories).
+              o writable decides if we can index new data through this
+                connection.
+           This call initializes the recoll module, and it should always be
+           performed before any other call or object creation.
+
+      Classes
+
+        The Db class
+
+   A Db object is created by a connect() call and holds a connection to a
+   Recoll index.
+
+   Methods
+
+   Db.close()
+           Closes the connection. You can't do anything with the Db object
+           after this.
+
+   Db.query(), Db.cursor()
+           These aliases return a blank Query object for this index.
+
+   Db.setAbstractParams(maxchars, contextwords)
+           Set the parameters used to build snippets (sets of keywords in
+           context text fragments). maxchars defines the maximum total size
+           of the abstract. contextwords defines how many terms are shown
+           around the keyword.
+
+   Db.termMatch(match_type, expr, field='', maxlen=-1, casesens=False,
+   diacsens=False, lang='english')
+           Expand an expression against the index term list. Performs the
+           basic function from the GUI term explorer tool. match_type can be
+           either of wildcard, regexp or stem. Returns a list of terms
+           expanded from the input expression.
+
+        The Query class
+
+   A Query object (equivalent to a cursor in the Python DB API) is created by
+   a Db.query() call. It is used to execute index searches.
+
+   Methods
+
+   Query.sortby(fieldname, ascending=True)
+           Sort results by fieldname, in ascending or descending order. Must
+           be called before executing the search.
+
+   Query.execute(query_string, stemming=1, stemlang="english")
+           Starts a search for query_string, a Recoll search language string.
+
+   Query.executesd(SearchData)
+           Starts a search for the query defined by the SearchData object.
+
+   Query.fetchmany(size=query.arraysize)
+           Fetches the next Doc objects in the current search results, and
+           returns them as an array of the required size, which is by default
+           the value of the arraysize data member.
+
+   Query.fetchone()
+           Fetches the next Doc object from the current search results.
+
+   Query.close()
+           Closes the query. The object is unusable after the call.
+
+   Query.scroll(value, mode='relative')
+           Adjusts the position in the current result set. mode can be
+           relative or absolute.
+
+   Query.getgroups()
+           Retrieves the expanded query terms as a list of pairs. Meaningful
+           only after executexx In each pair, the first entry is a list of
+           user terms (of size one for simple terms, or more for group and
+           phrase clauses), the second a list of query terms as derived from
+           the user terms and used in the Xapian Query.
+
+   Query.getxquery()
+           Return the Xapian query description as a Unicode string.
+           Meaningful only after executexx.
+
+   Query.highlight(text, ishtml = 0, methods = object)
+           Will insert ,  tags around the match
+           areas in the input text and return the modified text. ishtml can
+           be set to indicate that the input text is HTML and that HTML
+           special characters should not be escaped. methods if set should be
+           an object with methods startMatch(i) and endMatch() which will be
+           called for each match and should return a begin and end tag
+
+   Query.makedocabstract(doc, methods = object))
+           Create a snippets abstract for doc (a Doc object) by selecting
+           text around the match terms. If methods is set, will also perform
+           highlighting. See the highlight method.
+
+   Query.__iter__() and Query.next()
+           So that things like for doc in query: will work.
+
+   Data descriptors
+
+   Query.arraysize
+           Default number of records processed by fetchmany (r/w).
+
+   Query.rowcount
+           Number of records returned by the last execute.
+
+   Query.rownumber
+           Next index to be fetched from results. Normally increments after
+           each fetchone() call, but can be set/reset before the call to
+           effect seeking (equivalent to using scroll()). Starts at 0.
+
+        The Doc class
+
+   A Doc object contains index data for a given document. The data is
+   extracted from the index when searching, or set by the indexer program
+   when updating. The Doc object has many attributes to be read or set by its
+   user. It matches exactly the Rcl::Doc C++ object. Some of the attributes
+   are predefined, but, especially when indexing, others can be set, the name
+   of which will be processed as field names by the indexing configuration.
+   Inputs can be specified as Unicode or strings. Outputs are Unicode
+   objects. All dates are specified as Unix timestamps, printed as strings.
+   Please refer to the rcldb/rcldoc.h C++ file for a description of the
+   predefined attributes.
+
+   At query time, only the fields that are defined as stored either by
+   default or in the fields configuration file will be meaningful in the Doc
+   object. Especially this will not be the case for the document text. See
+   the rclextract module for accessing document contents.
+
+   Methods
+
+   get(key), [] operator
+           Retrieve the named doc attribute
+
+   getbinurl()
+           Retrieve the URL in byte array format (no transcoding), for use as
+           parameter to a system call.
+
+   items()
+           Return a dictionary of doc object keys/values
+
+   keys()
+           list of doc object keys (attribute names).
+
+        The SearchData class
+
+   A SearchData object allows building a query by combining clauses, for
+   execution by Query.executesd(). It can be used in replacement of the query
+   language approach. The interface is going to change a little, so no
+   detailed doc for now...
+
+   Methods
+
+   addclause(type='and'|'or'|'excl'|'phrase'|'near'|'sub', qstring=string,
+   slack=0, field='', stemming=1, subSearch=SearchData)
+
+    4.3.2.4. The rclextract module
+
+   Index queries do not provide document content (only a partial and
+   unprecise reconstruction is performed to show the snippets text). In order
+   to access the actual document data, the data extraction part of the
+   indexing process must be performed (subdocument access and format
+   translation). This is not trivial in general. The rclextract module
+   currently provides a single class which can be used to access the data
+   content for result documents.
+
+      Classes
+
+        The Extractor class
+
+   Methods
+
+   Extractor(doc)
+           An Extractor object is built from a Doc object, output from a
+           query.
+
+   Extractor.textextract(ipath)
+           Extract document defined by ipath and return a Doc object. The
+           doc.text field has the document text converted to either
+           text/plain or text/html according to doc.mimetype. The typical use
+           would be as follows:
+
+ qdoc = query.fetchone()
+ extractor = recoll.Extractor(qdoc)
+ doc = extractor.textextract(qdoc.ipath)
+ # use doc.text, e.g. for previewing
+
+   Extractor.idoctofile(ipath, targetmtype, outfile='')
+           Extracts document into an output file, which can be given
+           explicitly or will be created as a temporary file to be deleted by
+           the caller. Typical use:
+
+ qdoc = query.fetchone()
+ extractor = recoll.Extractor(qdoc)
+ filename = extractor.idoctofile(qdoc.ipath, qdoc.mimetype)
+
+    4.3.2.5. Example code
+
+   The following sample would query the index with a user language string.
+   See the python/samples directory inside the Recoll source for other
+   examples. The recollgui subdirectory has a very embryonic GUI which
+   demonstrates the highlighting and data extraction functions.
+
+ #!/usr/bin/env python
+
+ from recoll import recoll
+
+ db = recoll.connect()
+ db.setAbstractParams(maxchars=80, contextwords=4)
+
+ query = db.query()
+ nres = query.execute("some user question")
+ print "Result count: ", nres
+ if nres > 5:
+     nres = 5
+ for i in range(nres):
+     doc = query.fetchone()
+     print "Result #%d" % (query.rownumber,)
+     for k in ("title", "size"):
+         print k, ":", getattr(doc, k).encode('utf-8')
+     abs = db.makeDocAbstract(doc, query).encode('utf-8')
+     print abs
+     print
+
+
+
+    4.3.2.6. Compatibility with the previous version
+
+   The following code fragments can be used to ensure that code can run with
+   both the old and the new API (as long as it does not use the new abilities
+   of the new API of course).
+
+   Adapting to the new package structure:
+
+
+ try:
+     from recoll import recoll
+     from recoll import rclextract
+     hasextract = True
+ except:
+     import recoll
+     hasextract = False
+
+
+   Adapting to the change of nature of the next Query member. The same test
+   can be used to choose to use the scroll() method (new) or set the next
+   value (old).
+
+
+        rownum = query.next if type(query.next) == int else \
+                  query.rownumber
+
+
+Chapter 5. Installation and configuration
+
+5.1. Installing a binary copy
+
+   Recoll binary copies are always distributed as regular packages for your
+   system. They can be obtained either through the system's normal software
+   distribution framework (e.g. Debian/Ubuntu apt, FreeBSD ports, etc.), or
+   from some type of "backports" repository providing versions newer than the
+   standard ones, or found on the Recoll WEB site in some cases.
+
+   There used to exist another form of binary install, as pre-compiled source
+   trees, but these are just less convenient than the packages and don't
+   exist any more.
+
+   The package management tools will usually automatically deal with hard
+   dependancies for packages obtained from a proper package repository. You
+   will have to deal with them by hand for downloaded packages (for example,
+   when dpkg complains about missing dependancies).
+
+   In all cases, you will have to check or install supporting applications
+   for the file types that you want to index beyond those that are natively
+   processed by Recoll (text, HTML, email files, and a few others).
+
+   You should also maybe have a look at the configuration section (but this
+   may not be necessary for a quick test with default parameters). Most
+   parameters can be more conveniently set from the GUI interface.
+
+5.2. Supporting packages
+
+   Recoll uses external applications to index some file types. You need to
+   install them for the file types that you wish to have indexed (these are
+   run-time optional dependencies. None is needed for building or running
+   Recoll except for indexing their specific file type).
+
+   After an indexing pass, the commands that were found missing can be
+   displayed from the recoll File menu. The list is stored in the missing
+   text file inside the configuration directory.
+
+   A list of common file types which need external commands follows. Many of
+   the handlers need the iconv command, which is not always listed as a
+   dependancy.
+
+   Please note that, due to the relatively dynamic nature of this
+   information, the most up to date version is now kept on
+   http://www.recoll.org/features.html along with links to the home pages or
+   best source/patches pages, and misc tips. The list below is not updated
+   often and may be quite stale.
+
+   For many Linux distributions, most of the commands listed can be installed
+   from the package repositories. However, the packages are sometimes
+   outdated, or not the best version for Recoll, so you should take a look at
+   http://www.recoll.org/features.html if a file type is important to you.
+
+   As of Recoll release 1.14, a number of XML-based formats that were handled
+   by ad hoc handler code now use the xsltproc command, which usually comes
+   with libxslt. These are: abiword, fb2 (ebooks), kword, openoffice, svg.
+
+   Now for the list:
+
+     o Openoffice files need unzip and xsltproc.
+
+     o PDF files need pdftotext which is part of Poppler (usually comes with
+       the poppler-utils package). Avoid the original one from Xpdf.
+
+     o Postscript files need pstotext. The original version has an issue with
+       shell character in file names, which is corrected in recent packages.
+       See http://www.recoll.org/features.html for more detail.
+
+     o MS Word needs antiword. It is also useful to have wvWare installed as
+       it may be be used as a fallback for some files which antiword does not
+       handle.
+
+     o MS Excel and PowerPoint are processed by internal Python handlers.
+
+     o MS Open XML (docx) needs xsltproc.
+
+     o Wordperfect files need wpd2html from the libwpd (or libwpd-tools on
+       Ubuntu) package.
+
+     o RTF files need unrtf, which, in its older versions, has much trouble
+       with non-western character sets. Many Linux distributions carry
+       outdated unrtf versions. Check http://www.recoll.org/features.html for
+       details.
+
+     o TeX files need untex or detex. Check
+       http://www.recoll.org/features.html for sources if it's not packaged
+       for your distribution.
+
+     o dvi files need dvips.
+
+     o djvu files need djvutxt and djvused from the DjVuLibre package.
+
+     o Audio files: Recoll releases 1.14 and later use a single Python
+       handler based on mutagen for all audio file types.
+
+     o Pictures: Recoll uses the Exiftool Perl package to extract tag
+       information. Most image file formats are supported. Note that there
+       may not be much interest in indexing the technical tags (image size,
+       aperture, etc.). This is only of interest if you store personal tags
+       or textual descriptions inside the image files.
+
+     o chm: files in Microsoft help format need Python and the pychm module
+       (which needs chmlib).
+
+     o ICS: up to Recoll 1.13, iCalendar files need Python and the icalendar
+       module. icalendar is not needed for newer versions, which use internal
+       code.
+
+     o Zip archives need Python (and the standard zipfile module).
+
+     o Rar archives need Python, the rarfile Python module and the unrar
+       utility.
+
+     o Midi karaoke files need Python and the Midi module
+
+     o Konqueror webarchive format with Python (uses the Tarfile module).
+
+     o Mimehtml web archive format (support based on the email handler, which
+       introduces some mild weirdness, but still usable).
+
+   Text, HTML, email folders, and Scribus files are processed internally. Lyx
+   is used to index Lyx files. Many handlers need iconv and the standard sed
+   and awk.
+
+5.3. Building from source
+
+  5.3.1. Prerequisites
+
+   If you can install any or all of the following through the package manager
+   for your system, all the better. Especially Qt is a very big piece of
+   software, but you will most probably be able to find a binary package.
+
+   You may have to compile Xapian but this is easy.
+
+   The shopping list:
+
+     o C++ compiler. Up to Recoll version 1.13.04, its absence can manifest
+       itself by strange messages about a missing iconv_open.
+
+     o Development files for Xapian core.
+
+  Important
+
+       If you are building Xapian for an older CPU (before Pentium 4 or
+       Athlon 64), you need to add the --disable-sse flag to the configure
+       command. Else all Xapian application will crash with an illegal
+       instruction error.
+
+     o Development files for Qt 4 . Recoll has not been tested with Qt 5 yet.
+       Recoll 1.15.9 was the last version to support Qt 3. If you do not want
+       to install or build the Qt Webkit module, Recoll has a configuration
+       option to disable its use (see further).
+
+     o Development files for X11 and zlib.
+
+     o You may also need libiconv. On Linux systems, the iconv interface is
+       part of libc and you should not need to do anything special.
+
+   Check the Recoll download page for up to date version information.
+
+  5.3.2. Building
+
+   Recoll has been built on Linux, FreeBSD, Mac OS X, and Solaris, most
+   versions after 2005 should be ok, maybe some older ones too (Solaris 8 is
+   ok). If you build on another system, and need to modify things, I would
+   very much welcome patches.
+
+   Configure options: 
+
+     o --without-aspell will disable the code for phonetic matching of search
+       terms.
+
+     o --with-fam or --with-inotify will enable the code for real time
+       indexing. Inotify support is enabled by default on recent Linux
+       systems.
+
+     o --with-qzeitgeist will enable sending Zeitgeist events about the
+       visited search results, and needs the qzeitgeist package.
+
+     o --disable-webkit is available from version 1.17 to implement the
+       result list with a Qt QTextBrowser instead of a WebKit widget if you
+       do not or can't depend on the latter.
+
+     o --disable-idxthreads is available from version 1.19 to suppress
+       multithreading inside the indexing process. You can also use the
+       run-time configuration to restrict recollindex to using a single
+       thread, but the compile-time option may disable a few more unused
+       locks. This only applies to the use of multithreading for the core
+       index processing (data input). The Recoll monitor mode always uses at
+       least two threads of execution.
+
+     o --disable-python-module will avoid building the Python module.
+
+     o --disable-xattr will prevent fetching data from file extended
+       attributes. Beyond a few standard attributes, fetching extended
+       attributes data can only be useful is some application stores data in
+       there, and also needs some simple configuration (see comments in the
+       fields configuration file).
+
+     o --enable-camelcase will enable splitting camelCase words. This is not
+       enabled by default as it has the unfortunate side-effect of making
+       some phrase searches quite confusing: ie, "MySQL manual" would be
+       matched by "MySQL manual" and "my sql manual" but not "mysql manual"
+       (only inside phrase searches).
+
+     o --with-file-command Specify the version of the 'file' command to use
+       (ie: --with-file-command=/usr/local/bin/file). Can be useful to enable
+       the gnu version on systems where the native one is bad.
+
+     o --disable-qtgui Disable the Qt interface. Will allow building the
+       indexer and the command line search program in absence of a Qt
+       environment.
+
+     o --disable-x11mon Disable X11 connection monitoring inside recollindex.
+       Together with --disable-qtgui, this allows building recoll without Qt
+       and X11.
+
+     o --disable-pic will compile Recoll with position-dependant code. This
+       is incompatible with building the KIO or the Python or PHP extensions,
+       but might yield very marginally faster code.
+
+     o Of course the usual autoconf configure options, like --prefix apply.
+
+   Normal procedure:
+
+         cd recoll-xxx
+         ./configure
+         make
+         (practices usual hardship-repelling invocations)
+      
+
+   There is little auto-configuration. The configure script will mainly link
+   one of the system-specific files in the mk directory to mk/sysconf. If
+   your system is not known yet, it will tell you as much, and you may want
+   to manually copy and modify one of the existing files (the new file name
+   should be the output of uname -s).
+
+    5.3.2.1. Building on Solaris
+
+   We did not test building the GUI on Solaris for recent versions. You will
+   need at least Qt 4.4. There are some hints on an old web site page, they
+   may still be valid.
+
+   Someone did test the 1.19 indexer and Python module build, they do work,
+   with a few minor glitches. Be sure to use GNU make and install.
+
+  5.3.3. Installation
+
+   Either type make install or execute recollinstall prefix, in the root of
+   the source tree. This will copy the commands to prefix/bin and the sample
+   configuration files, scripts and other shared data to prefix/share/recoll.
+
+   If the installation prefix given to recollinstall is different from either
+   the system default or the value which was specified when executing
+   configure (as in configure --prefix /some/path), you will have to set the
+   RECOLL_DATADIR environment variable to indicate where the shared data is
+   to be found (ie for (ba)sh: export
+   RECOLL_DATADIR=/some/path/share/recoll).
+
+   You can then proceed to configuration.
+
+5.4. Configuration overview
+
+   Most of the parameters specific to the recoll GUI are set through the
+   Preferences menu and stored in the standard Qt place
+   ($HOME/.config/Recoll.org/recoll.conf). You probably do not want to edit
+   this by hand.
+
+   Recoll indexing options are set inside text configuration files located in
+   a configuration directory. There can be several such directories, each of
+   which defines the parameters for one index.
+
+   The configuration files can be edited by hand or through the Index
+   configuration dialog (Preferences menu). The GUI tool will try to respect
+   your formatting and comments as much as possible, so it is quite possible
+   to use both ways.
+
+   The most accurate documentation for the configuration parameters is given
+   by comments inside the default files, and we will just give a general
+   overview here.
+
+   By default, for each index, there are two sets of configuration files.
+   System-wide configuration files are kept in a directory named like
+   /usr/[local/]share/recoll/examples, and define default values, shared by
+   all indexes. For each index, a parallel set of files defines the
+   customized parameters.
+
+   In addition (as of Recoll version 1.19.7), it is possible to specify two
+   additional configuration directories which will be stacked before and
+   after the user configuration directory. These are defined by the
+   RECOLL_CONFTOP and RECOLL_CONFMID environment variables. Values from
+   configuration files inside the top directory will override user ones,
+   values from configuration files inside the middle directory will override
+   system ones and be overriden by user ones. These two variables may be of
+   use to applications which augment Recoll functionality, and need to add
+   configuration data without disturbing the user's files. Please note that
+   the two, currently single, values will probably be interpreted as
+   colon-separated lists in the future: do not use colon characters inside
+   the directory paths.
+
+   The default location of the configuration is the .recoll directory in your
+   home. Most people will only use this directory.
+
+   This location can be changed, or others can be added with the
+   RECOLL_CONFDIR environment variable or the -c option parameter to recoll
+   and recollindex.
+
+   If the .recoll directory does not exist when recoll or recollindex are
+   started, it will be created with a set of empty configuration files.
+   recoll will give you a chance to edit the configuration file before
+   starting indexing. recollindex will proceed immediately. To avoid
+   mistakes, the automatic directory creation will only occur for the default
+   location, not if -c or RECOLL_CONFDIR were used (in the latter cases, you
+   will have to create the directory).
+
+   All configuration files share the same format. For example, a short
+   extract of the main configuration file might look as follows:
+
+         # Space-separated list of directories to index.
+         topdirs =  ~/docs /usr/share/doc
+
+         [~/somedirectory-with-utf8-txt-files]
+         defaultcharset = utf-8
+        
+
+   There are three kinds of lines:
+
+     o Comment (starts with #) or empty.
+
+     o Parameter affectation (name = value).
+
+     o Section definition ([somedirname]).
+
+   Depending on the type of configuration file, section definitions either
+   separate groups of parameters or allow redefining some parameters for a
+   directory sub-tree. They stay in effect until another section definition,
+   or the end of file, is encountered. Some of the parameters used for
+   indexing are looked up hierarchically from the current directory location
+   upwards. Not all parameters can be meaningfully redefined, this is
+   specified for each in the next section.
+
+   When found at the beginning of a file path, the tilde character (~) is
+   expanded to the name of the user's home directory, as a shell would do.
+
+   White space is used for separation inside lists. List elements with
+   embedded spaces can be quoted using double-quotes.
+
+   Encoding issues. Most of the configuration parameters are plain ASCII. Two
+   particular sets of values may cause encoding issues:
+
+     o File path parameters may contain non-ascii characters and should use
+       the exact same byte values as found in the file system directory.
+       Usually, this means that the configuration file should use the system
+       default locale encoding.
+
+     o The unac_except_trans parameter should be encoded in UTF-8. If your
+       system locale is not UTF-8, and you need to also specify non-ascii
+       file paths, this poses a difficulty because common text editors cannot
+       handle multiple encodings in a single file. In this relatively
+       unlikely case, you can edit the configuration file as two separate
+       text files with appropriate encodings, and concatenate them to create
+       the complete configuration.
+
+  5.4.1. Environment variables
+
+   RECOLL_CONFDIR
+
+           Defines the main configuration directory.
+
+   RECOLL_TMPDIR, TMPDIR
+
+           Locations for temporary files, in this order of priority. The
+           default if none of these is set is to use /tmp. Big temporary
+           files may be created during indexing, mostly for decompressing,
+           and also for processing, e.g. email attachments.
+
+   RECOLL_CONFTOP, RECOLL_CONFMID
+
+           Allow adding configuration directories with priorities below and
+           above the user directory (see above the Configuration overview
+           section for details).
+
+   RECOLL_EXTRA_DBS, RECOLL_ACTIVE_EXTRA_DBS
+
+           Help for setting up external indexes. See this paragraph for
+           explanations.
+
+   RECOLL_DATADIR
+
+           Defines replacement for the default location of Recoll data files,
+           normally found in, e.g., /usr/share/recoll).
+
+   RECOLL_FILTERSDIR
+
+           Defines replacement for the default location of Recoll filters,
+           normally found in, e.g., /usr/share/recoll/filters).
+
+   ASPELL_PROG
+
+           aspell program to use for creating the spelling dictionary. The
+           result has to be compatible with the libaspell which Recoll is
+           using.
+
+   VARNAME
+
+           Blabla
+
+  5.4.2. The main configuration file, recoll.conf
+
+   recoll.conf is the main configuration file. It defines things like what to
+   index (top directories and things to ignore), and the default character
+   set to use for document types which do not specify it internally.
+
+   The default configuration will index your home directory. If this is not
+   appropriate, start recoll to create a blank configuration, click Cancel,
+   and edit the configuration file before restarting the command. This will
+   start the initial indexing, which may take some time.
+
+   Most of the following parameters can be changed from the Index
+   Configuration menu in the recoll interface. Some can only be set by
+   editing the configuration file.
+
+    5.4.2.1. Parameters affecting what documents we index:
+
+   topdirs
+
+           Specifies the list of directories or files to index (recursively
+           for directories). You can use symbolic links as elements of this
+           list. See the followLinks option about following symbolic links
+           found under the top elements (not followed by default).
+
+   skippedNames
+
+           A space-separated list of wilcard patterns for names of files or
+           directories that should be completely ignored. The list defined in
+           the default file is:
+
+ skippedNames = #* bin CVS  Cache cache* caughtspam  tmp .thumbnails .svn \
+                *~ .beagle .git .hg .bzr loop.ps .xsession-errors \
+                .recoll* xapiandb recollrc recoll.conf
+
+           The list can be redefined at any sub-directory in the indexed
+           area.
+
+           The top-level directories are not affected by this list (that is,
+           a directory in topdirs might match and would still be indexed).
+
+           The list in the default configuration does not exclude hidden
+           directories (names beginning with a dot), which means that it may
+           index quite a few things that you do not want. On the other hand,
+           email user agents like thunderbird usually store messages in
+           hidden directories, and you probably want this indexed. One
+           possible solution is to have .* in skippedNames, and add things
+           like ~/.thunderbird or ~/.evolution in topdirs.
+
+           Not even the file names are indexed for patterns in this list. See
+           the noContentSuffixes variable for an alternative approach which
+           indexes the file names.
+
+   noContentSuffixes
+
+           This is a list of file name endings (not wildcard expressions, nor
+           dot-delimited suffixes). Only the names of matching files will be
+           indexed (no attempt at MIME type identification, no decompression,
+           no content indexing). This can be redefined for subdirectories,
+           and edited from the GUI. The default value is:
+
+ noContentSuffixes = .md5 .map \
+        .o .lib .dll .a .sys .exe .com \
+        .mpp .mpt .vsd \
+            .img .img.gz .img.bz2 .img.xz .image .image.gz .image.bz2 .image.xz \
+        .dat .bak .rdf .log.gz .log .db .msf .pid \
+        ,v ~ #
+
+   skippedPaths and daemSkippedPaths
+
+           A space-separated list of patterns for paths of files or
+           directories that should be skipped. There is no default in the
+           sample configuration file, but the code always adds the
+           configuration and database directories in there.
+
+           skippedPaths is used both by batch and real time indexing.
+           daemSkippedPaths can be used to specify things that should be
+           indexed at startup, but not monitored.
+
+           Example of use for skipping text files only in a specific
+           directory:
+
+ skippedPaths = ~/somedir/*.txt
+              
+
+   skippedPathsFnmPathname
+
+           The values in the *skippedPaths variables are matched by default
+           with fnmatch(3), with the FNM_PATHNAME flag. This means that '/'
+           characters must be matched explicitely. You can set
+           skippedPathsFnmPathname to 0 to disable the use of FNM_PATHNAME
+           (meaning that /*/dir3 will match /dir1/dir2/dir3).
+
+   zipSkippedNames
+
+           A space-separated list of patterns for names of files or
+           directories that should be ignored inside zip archives. This is
+           used directly by the zip handler, and has a function similar to
+           skippedNames, but works independantly. Can be redefined for
+           filesystem subdirectories. For versions up to 1.19, you will need
+           to update the Zip handler and install a supplementary Python
+           module. The details are described on the Recoll wiki.
+
+   followLinks
+
+           Specifies if the indexer should follow symbolic links while
+           walking the file tree. The default is to ignore symbolic links to
+           avoid multiple indexing of linked files. No effort is made to
+           avoid duplication when this option is set to true. This option can
+           be set individually for each of the topdirs members by using
+           sections. It can not be changed below the topdirs level.
+
+   indexedmimetypes
+
+           Recoll normally indexes any file which it knows how to read. This
+           list lets you restrict the indexed MIME types to what you specify.
+           If the variable is unspecified or the list empty (the default),
+           all supported types are processed. Can be redefined for
+           subdirectories.
+
+   excludedmimetypes
+
+           This list lets you exclude some MIME types from indexing. Can be
+           redefined for subdirectories.
+
+   compressedfilemaxkbs
+
+           Size limit for compressed (.gz or .bz2) files. These need to be
+           decompressed in a temporary directory for identification, which
+           can be very wasteful if 'uninteresting' big compressed files are
+           present. Negative means no limit, 0 means no processing of any
+           compressed file. Defaults to -1.
+
+   textfilemaxmbs
+
+           Maximum size for text files. Very big text files are often
+           uninteresting logs. Set to -1 to disable (default 20MB).
+
+   textfilepagekbs
+
+           If set to other than -1, text files will be indexed as multiple
+           documents of the given page size. This may be useful if you do
+           want to index very big text files as it will both reduce memory
+           usage at index time and help with loading data to the preview
+           window. A size of a few megabytes would seem reasonable (default:
+           1MB).
+
+   membermaxkbs
+
+           This defines the maximum size in kilobytes for an archive member
+           (zip, tar or rar at the moment). Bigger entries will be skipped.
+
+   indexallfilenames
+
+           Recoll indexes file names in a special section of the database to
+           allow specific file names searches using wild cards. This
+           parameter decides if file name indexing is performed only for
+           files with MIME types that would qualify them for full text
+           indexing, or for all files inside the selected subtrees,
+           independently of MIME type.
+
+   usesystemfilecommand
+
+           Decide if we execute a system command (file -i by default) as a
+           final step for determining the MIME type for a file (the main
+           procedure uses suffix associations as defined in the mimemap
+           file). This can be useful for files with suffix-less names, but it
+           will also cause the indexing of many bogus "text" files.
+
+   systemfilecommand
+
+           Command to use for mime for mime type determination if
+           usesystefilecommand is set. Recent versions of xdg-mime sometimes
+           work better than file.
+
+   processwebqueue
+
+           If this is set, process the directory where Web browser plugins
+           copy visited pages for indexing.
+
+   webqueuedir
+
+           The path to the web indexing queue. This is hard-coded in the
+           Firefox plugin as ~/.recollweb/ToIndex so there should be no need
+           to change it.
+
+    5.4.2.2. Parameters affecting how we generate terms:
+
+   Changing some of these parameters will imply a full reindex. Also, when
+   using multiple indexes, it may not make sense to search indexes that don't
+   share the values for these parameters, because they usually affect both
+   search and index operations.
+
+   indexStripChars
+
+           Decide if we strip characters of diacritics and convert them to
+           lower-case before terms are indexed. If we don't, searches
+           sensitive to case and diacritics can be performed, but the index
+           will be bigger, and some marginal weirdness may sometimes occur.
+           The default is a stripped index (indexStripChars = 1) for now.
+           When using multiple indexes for a search, this parameter must be
+           defined identically for all. Changing the value implies an index
+           reset.
+
+   maxTermExpand
+
+           Maximum expansion count for a single term (e.g.: when using
+           wildcards). The default of 10000 is reasonable and will avoid
+           queries that appear frozen while the engine is walking the term
+           list.
+
+   maxXapianClauses
+
+           Maximum number of elementary clauses we can add to a single Xapian
+           query. In some cases, the result of term expansion can be
+           multiplicative, and we want to avoid using excessive memory. The
+           default of 100 000 should be both high enough in most cases and
+           compatible with current typical hardware configurations.
+
+   nonumbers
+
+           If this set to true, no terms will be generated for numbers. For
+           example "123", "1.5e6", 192.168.1.4, would not be indexed
+           ("value123" would still be). Numbers are often quite interesting
+           to search for, and this should probably not be set except for
+           special situations, ie, scientific documents with huge amounts of
+           numbers in them. This can only be set for a whole index, not for a
+           subtree.
+
+   nocjk
+
+           If this set to true, specific east asian (Chinese Korean Japanese)
+           characters/word splitting is turned off. This will save a small
+           amount of cpu if you have no CJK documents. If your document base
+           does include such text but you are not interested in searching it,
+           setting nocjk may be a significant time and space saver.
+
+   cjkngramlen
+
+           This lets you adjust the size of n-grams used for indexing CJK
+           text. The default value of 2 is probably appropriate in most
+           cases. A value of 3 would allow more precision and efficiency on
+           longer words, but the index will be approximately twice as large.
+
+   indexstemminglanguages
+
+           A list of languages for which the stem expansion databases will be
+           built. See recollindex(1) or use the recollindex -l command for
+           possible values. You can add a stem expansion database for a
+           different language by using recollindex -s, but it will be deleted
+           during the next indexing. Only languages listed in the
+           configuration file are permanent.
+
+   defaultcharset
+
+           The name of the character set used for files that do not contain a
+           character set definition (ie: plain text files). This can be
+           redefined for any sub-directory. If it is not set at all, the
+           character set used is the one defined by the nls environment (
+           LC_ALL, LC_CTYPE, LANG), or iso8859-1 if nothing is set.
+
+   unac_except_trans
+
+           This is a list of characters, encoded in UTF-8, which should be
+           handled specially when converting text to unaccented lowercase.
+           For example, in Swedish, the letter a with diaeresis has full
+           alphabet citizenship and should not be turned into an a. Each
+           element in the space-separated list has the special character as
+           first element and the translation following. The handling of both
+           the lowercase and upper-case versions of a character should be
+           specified, as appartenance to the list will turn-off both standard
+           accent and case processing. Example for Swedish:
+
+ unac_except_trans =  aaaa AAaa a:a: A:a: o:o: O:o:
+            
+
+           Note that the translation is not limited to a single character,
+           you could very well have something like u:ue in the list.
+
+           The default value set for unac_except_trans can't be listed here
+           because I have trouble with SGML and UTF-8, but it only contains
+           ligature decompositions: german ss, oe, ae, fi, fl.
+
+           This parameter can't be defined for subdirectories, it is global,
+           because there is no way to do otherwise when querying. If you have
+           document sets which would need different values, you will have to
+           index and query them separately.
+
+   maildefcharset
+
+           This can be used to define the default character set specifically
+           for email messages which don't specify it. This is mainly useful
+           for readpst (libpst) dumps, which are utf-8 but do not say so.
+
+   localfields
+
+           This allows setting fields for all documents under a given
+           directory. Typical usage would be to set an "rclaptg" field, to be
+           used in mimeview to select a specific viewer. If several fields
+           are to be set, they should be separated with a semi-colon (';')
+           character, which there is currently no way to escape. Also note
+           the initial semi-colon. Example: localfields= ;rclaptg=gnus;other
+           = val, then select specifier viewer with mimetype|tag=... in
+           mimeview.
+
+   testmodifusemtime
+
+           If true, use mtime instead of default ctime to determine if a file
+           has been modified (in addition to size, which is always used).
+           Setting this can reduce re-indexing on systems where extended
+           attributes are modified (by some other application), but not
+           indexed (changing extended attributes only affects ctime). Notes:
+
+              o This may prevent detection of change in some marginal file
+                rename cases (the target would need to have the same size and
+                mtime).
+
+              o You should probably also set noxattrfields to 1 in this case,
+                except if you still prefer to perform xattr indexing, for
+                example if the local file update pattern makes it of value
+                (as in general, there is a risk for pure extended attributes
+                updates without file modification to go undetected).
+
+           Perform a full index reset after changing the value of this
+           parameter.
+
+   noxattrfields
+
+           Recoll versions 1.19 and later automatically translate file
+           extended attributes into document fields (to be processed
+           according to the parameters from the fields file). Setting this
+           variable to 1 will disable the behaviour.
+
+   metadatacmds
+
+           This allows executing external commands for each file and storing
+           the output in Recoll document fields. This could be used for
+           example to index external tag data. The value is a list of field
+           names and commands, don't forget an initial semi-colon. Example:
+
+ [/some/area/of/the/fs]
+ metadatacmds = ; tags = tmsu tags %f; otherfield = somecmd -xx %f
+                
+
+           As a specially disgusting hack brought by Recoll 1.19.7, if a
+           "field name" begins with rclmulti, the data returned by the
+           command is expected to contain multiple field values, in
+           configuration file format. This allows setting several fields by
+           executing a single command. Example:
+
+ metadatacmds = ; rclmulti1 = somecmd %f
+                
+
+           If somecmd returns data in the form of:
+
+ field1 = value1
+ field2 = value for field2
+                
+
+           field1 and field2 will be set inside the document metadata.
+
+    5.4.2.3. Parameters affecting where and how we store things:
+
+   dbdir
+
+           The name of the Xapian data directory. It will be created if
+           needed when the index is initialized. If this is not an absolute
+           path, it will be interpreted relative to the configuration
+           directory. The value can have embedded spaces but starting or
+           trailing spaces will be trimmed. You cannot use quotes here.
+
+   idxstatusfile
+
+           The name of the scratch file where the indexer process updates its
+           status. Default: idxstatus.txt inside the configuration directory.
+
+   maxfsoccuppc
+
+           Maximum file system occupation before we stop indexing. The value
+           is a percentage, corresponding to what the "Capacity" df output
+           column shows. The default value is 0, meaning no checking.
+
+   mboxcachedir
+
+           The directory where mbox message offsets cache files are held.
+           This is normally $RECOLL_CONFDIR/mboxcache, but it may be useful
+           to share a directory between different configurations.
+
+   mboxcacheminmbs
+
+           The minimum mbox file size over which we cache the offsets. There
+           is really no sense in caching offsets for small files. The default
+           is 5 MB.
+
+   webcachedir
+
+           This is only used by the web browser plugin indexing code, and
+           defines where the cache for visited pages will live. Default:
+           $RECOLL_CONFDIR/webcache
+
+   webcachemaxmbs
+
+           This is only used by the web browser plugin indexing code, and
+           defines the maximum size for the web page cache. Default: 40 MB.
+           Quite unfortunately, this is only taken into account when creating
+           the cache file. You need to delete the file for a change to be
+           taken into account.
+
+   idxflushmb
+
+           Threshold (megabytes of new text data) where we flush from memory
+           to disk index. Setting this can help control memory usage. A value
+           of 0 means no explicit flushing, letting Xapian use its own
+           default, which is flushing every 10000 (or XAPIAN_FLUSH_THRESHOLD)
+           documents, which gives little memory usage control, as memory
+           usage also depends on average document size. The default value is
+           10, and it is probably a bit low. If your system usually has free
+           memory, you can try higher values between 20 and 80. In my
+           experience, values beyond 100 are always counterproductive.
+
+    5.4.2.4. Parameters affecting multithread processing
+
+   The Recoll indexing process recollindex can use multiple threads to speed
+   up indexing on multiprocessor systems. The work done to index files is
+   divided in several stages and some of the stages can be executed by
+   multiple threads. The stages are:
+
+    1. File system walking: this is always performed by the main thread.
+    2. File conversion and data extraction.
+    3. Text processing (splitting, stemming, etc.)
+    4. Xapian index update.
+
+   You can also read a longer document about the transformation of Recoll
+   indexing to multithreading.
+
+   The threads configuration is controlled by two configuration file
+   parameters.
+
+   thrQSizes
+
+           This variable defines the job input queues configuration. There
+           are three possible queues for stages 2, 3 and 4, and this
+           parameter should give the queue depth for each stage (three
+           integer values). If a value of -1 is used for a given stage, no
+           queue is used, and the thread will go on performing the next
+           stage. In practise, deep queues have not been shown to increase
+           performance. A value of 0 for the first queue tells Recoll to
+           perform autoconfiguration (no need for the two other values in
+           this case) - this is the default configuration.
+
+   thrTCounts
+
+           This defines the number of threads used for each stage. If a value
+           of -1 is used for one of the queue depths, the corresponding
+           thread count is ignored. It makes no sense to use a value other
+           than 1 for the last stage because updating the Xapian index is
+           necessarily single-threaded (and protected by a mutex).
+
+   The following example would use three queues (of depth 2), and 4 threads
+   for converting source documents, 2 for processing their text, and one to
+   update the index. This was tested to be the best configuration on the test
+   system (quadri-processor with multiple disks).
+
+ thrQSizes = 2 2 2
+ thrTCounts =  4 2 1
+
+   The following example would use a single queue, and the complete
+   processing for each document would be performed by a single thread
+   (several documents will still be processed in parallel in most cases). The
+   threads will use mutual exclusion when entering the index update stage. In
+   practise the performance would be close to the precedent case in general,
+   but worse in certain cases (e.g. a Zip archive would be performed purely
+   sequentially), so the previous approach is preferred. YMMV... The 2 last
+   values for thrTCounts are ignored.
+
+ thrQSizes = 2 -1 -1
+ thrTCounts =  6 1 1
+
+   The following example would disable multithreading. Indexing will be
+   performed by a single thread.
+
+ thrQSizes = -1 -1 -1
+
+    5.4.2.5. Miscellaneous parameters:
+
+   autodiacsens
+
+           IF the index is not stripped, decide if we automatically trigger
+           diacritics sensitivity if the search term has accented characters
+           (not in unac_except_trans). Else you need to use the query
+           language and the D modifier to specify diacritics sensitivity.
+           Default is no.
+
+   autocasesens
+
+           IF the index is not stripped, decide if we automatically trigger
+           character case sensitivity if the search term has upper-case
+           characters in any but the first position. Else you need to use the
+           query language and the C modifier to specify character-case
+           sensitivity. Default is yes.
+
+   loglevel,daemloglevel
+
+           Verbosity level for recoll and recollindex. A value of 4 lists
+           quite a lot of debug/information messages. 2 only lists errors.
+           The daemversion is specific to the indexing monitor daemon.
+
+   logfilename, daemlogfilename
+
+           Where the messages should go. 'stderr' can be used as a special
+           value, and is the default. The daemversion is specific to the
+           indexing monitor daemon.
+
+   checkneedretryindexscript
+
+           This defines the name for a command executed by recollindex when
+           starting indexing. If the exit status of the command is 0,
+           recollindex retries to index all files which previously could not
+           be indexed because of data extraction errors. The default value is
+           a script which checks if any of the common bin directories have
+           changed (indicating that a helper program may have been
+           installed).
+
+   mondelaypatterns
+
+           This allows specify wildcard path patterns (processed with
+           fnmatch(3) with 0 flag), to match files which change too often and
+           for which a delay should be observed before re-indexing. This is a
+           space-separated list, each entry being a pattern and a time in
+           seconds, separated by a colon. You can use double quotes if a path
+           entry contains white space. Example:
+
+ mondelaypatterns = *.log:20 "this one has spaces*:10"
+              
+
+   monixinterval
+
+           Minimum interval (seconds) for processing the indexing queue. The
+           real time monitor does not process each event when it comes in,
+           but will wait this time for the queue to accumulate to diminish
+           overhead and in order to aggregate multiple events to the same
+           file. Default 30 S.
+
+   monauxinterval
+
+           Period (in seconds) at which the real time monitor will regenerate
+           the auxiliary databases (spelling, stemming) if needed. The
+           default is one hour.
+
+   monioniceclass, monioniceclassdata
+
+           These allow defining the ionice class and data used by the indexer
+           (default class 3, no data).
+
+   filtermaxseconds
+
+           Maximum handler execution time, after which it is aborted. Some
+           postscript programs just loop...
+
+   filtermaxmbytes
+
+           Recoll 1.20.7 and later. Maximum handler memory utilisation. This
+           uses setrlimit(RLIMIT_AS) on most systems (total virtual memory
+           space size limit). Some programs may start with 500 MBytes of
+           mapped shared libraries, so take this into account when choosing a
+           value. The default is a liberal 2000MB.
+
+   filtersdir
+
+           A directory to search for the external input handler scripts used
+           to index some types of files. The value should not be changed,
+           except if you want to modify one of the default scripts. The value
+           can be redefined for any sub-directory.
+
+   iconsdir
+
+           The name of the directory where recoll result list icons are
+           stored. You can change this if you want different images.
+
+   idxabsmlen
+
+           Recoll stores an abstract for each indexed file inside the
+           database. The text can come from an actual 'abstract' section in
+           the document or will just be the beginning of the document. It is
+           stored in the index so that it can be displayed inside the result
+           lists without decoding the original file. The idxabsmlen parameter
+           defines the size of the stored abstract. The default value is 250
+           bytes. The search interface gives you the choice to display this
+           stored text or a synthetic abstract built by extracting text
+           around the search terms. If you always prefer the synthetic
+           abstract, you can reduce this value and save a little space.
+
+   idxmetastoredlen
+
+           Maximum stored length for metadata fields. This does not affect
+           indexing (the whole field is processed anyway), just the amount of
+           data stored in the index for the purpose of displaying fields
+           inside result lists or previews. The default value is 150 bytes
+           which may be too low if you have custom fields.
+
+   aspellLanguage
+
+           Language definitions to use when creating the aspell dictionary.
+           The value must match a set of aspell language definition files.
+           You can type "aspell config" to see where these are installed
+           (look for data-dir). The default if the variable is not set is to
+           use your desktop national language environment to guess the value.
+
+   noaspell
+
+           If this is set, the aspell dictionary generation is turned off.
+           Useful for cases where you don't need the functionality or when it
+           is unusable because aspell crashes during dictionary generation.
+
+   mhmboxquirks
+
+           This allows definining location-related quirks for the mailbox
+           handler. Currently only the tbird flag is defined, and it should
+           be set for directories which hold Thunderbird data, as their
+           folder format is weird.
+
+  5.4.3. The fields file
+
+   This file contains information about dynamic fields handling in Recoll.
+   Some very basic fields have hard-wired behaviour, and, mostly, you should
+   not change the original data inside the fields file. But you can create
+   custom fields fitting your data and handle them just like they were native
+   ones.
+
+   The fields file has several sections, which each define an aspect of
+   fields processing. Quite often, you'll have to modify several sections to
+   obtain the desired behaviour.
+
+   We will only give a short description here, you should refer to the
+   comments inside the default file for more detailed information.
+
+   Field names should be lowercase alphabetic ASCII.
+
+   [prefixes]
+
+           A field becomes indexed (searchable) by having a prefix defined in
+           this section.
+
+   [stored]
+
+           A field becomes stored (displayable inside results) by having its
+           name listed in this section (typically with an empty value).
+
+   [aliases]
+
+           This section defines lists of synonyms for the canonical names
+           used inside the [prefixes] and [stored] sections
+
+   [queryaliases]
+
+           This section also defines aliases for the canonic field names,
+           with the difference that the substitution will only be used at
+           query time, avoiding any possibility that the value would pick-up
+           random metadata from documents.
+
+   handler-specific sections
+
+           Some input handlers may need specific configuration for handling
+           fields. Only the email message handler currently has such a
+           section (named [mail]). It allows indexing arbitrary email headers
+           in addition to the ones indexed by default. Other such sections
+           may appear in the future.
+
+   Here follows a small example of a personal fields file. This would extract
+   a specific email header and use it as a searchable field, with data
+   displayable inside result lists. (Side note: as the email handler does no
+   decoding on the values, only plain ascii headers can be indexed, and only
+   the first occurrence will be used for headers that occur several times).
+
+ [prefixes]
+ # Index mailmytag contents (with the given prefix)
+ mailmytag = XMTAG
+
+ [stored]
+ # Store mailmytag inside the document data record (so that it can be
+ # displayed - as %(mailmytag) - in result lists).
+ mailmytag =
+
+ [queryaliases]
+ filename = fn
+ containerfilename = cfn
+
+ [mail]
+ # Extract the X-My-Tag mail header, and use it internally with the
+ # mailmytag field name
+ x-my-tag = mailmytag
+
+    5.4.3.1. Extended attributes in the fields file
+
+   Recoll versions 1.19 and later process user extended file attributes as
+   documents fields by default.
+
+   Attributes are processed as fields of the same name, after removing the
+   user prefix on Linux.
+
+   The [xattrtofields] section of the fields file allows specifying
+   translations from extended attributes names to Recoll field names. An
+   empty translation disables use of the corresponding attribute data.
+
+  5.4.4. The mimemap file
+
+   mimemap specifies the file name extension to MIME type mappings.
+
+   For file names without an extension, or with an unknown one, the system's
+   file -i command will be executed to determine the MIME type (this can be
+   switched off inside the main configuration file).
+
+   The mappings can be specified on a per-subtree basis, which may be useful
+   in some cases. Example: gaim logs have a .txt extension but should be
+   handled specially, which is possible because they are usually all located
+   in one place.
+
+   The recoll_noindex mimemap variable has been moved to recoll.conf and
+   renamed to noContentSuffixes, while keeping the same function, as of
+   Recoll version 1.21. For older Recoll versions, see the documentation for
+   noContentSuffixes but use recoll_noindex in mimemap.
+
+  5.4.5. The mimeconf file
+
+   mimeconf specifies how the different MIME types are handled for indexing,
+   and which icons are displayed in the recoll result lists.
+
+   Changing the parameters in the [index] section is probably not a good idea
+   except if you are a Recoll developer.
+
+   The [icons] section allows you to change the icons which are displayed by
+   recoll in the result lists (the values are the basenames of the png images
+   inside the iconsdir directory (specified in recoll.conf).
+
+  5.4.6. The mimeview file
+
+   mimeview specifies which programs are started when you click on an Open
+   link in a result list. Ie: HTML is normally displayed using firefox, but
+   you may prefer Konqueror, your openoffice.org program might be named
+   oofice instead of openoffice etc.
+
+   Changes to this file can be done by direct editing, or through the recoll
+   GUI preferences dialog.
+
+   If Use desktop preferences to choose document editor is checked in the
+   Recoll GUI preferences, all mimeview entries will be ignored except the
+   one labelled application/x-all (which is set to use xdg-open by default).
+
+   In this case, the xallexcepts top level variable defines a list of MIME
+   type exceptions which will be processed according to the local entries
+   instead of being passed to the desktop. This is so that specific Recoll
+   options such as a page number or a search string can be passed to
+   applications that support them, such as the evince viewer.
+
+   As for the other configuration files, the normal usage is to have a
+   mimeview inside your own configuration directory, with just the
+   non-default entries, which will override those from the central
+   configuration file.
+
+   All viewer definition entries must be placed under a [view] section.
+
+   The keys in the file are normally MIME types. You can add an application
+   tag to specialize the choice for an area of the filesystem (using a
+   localfields specification in mimeconf). The syntax for the key is
+   mimetype|tag
+
+   The nouncompforviewmts entry, (placed at the top level, outside of the
+   [view] section), holds a list of MIME types that should not be
+   uncompressed before starting the viewer (if they are found compressed, ie:
+   mydoc.doc.gz).
+
+   The right side of each assignment holds a command to be executed for
+   opening the file. The following substitutions are performed:
+
+     o %D. Document date
+
+     o %f. File name. This may be the name of a temporary file if it was
+       necessary to create one (ie: to extract a subdocument from a
+       container).
+
+     o %i. Internal path, for subdocuments of containers. The format depends
+       on the container type. If this appears in the command line, Recoll
+       will not create a temporary file to extract the subdocument, expecting
+       the called application (possibly a script) to be able to handle it.
+
+     o %M. MIME type
+
+     o %p. Page index. Only significant for a subset of document types,
+       currently only PDF, Postscript and DVI files. Can be used to start the
+       editor at the right page for a match or snippet.
+
+     o %s. Search term. The value will only be set for documents with indexed
+       page numbers (ie: PDF). The value will be one of the matched search
+       terms. It would allow pre-setting the value in the "Find" entry inside
+       Evince for example, for easy highlighting of the term.
+
+     o %u. Url.
+
+   In addition to the predefined values above, all strings like %(fieldname)
+   will be replaced by the value of the field named fieldname for the
+   document. This could be used in combination with field customisation to
+   help with opening the document.
+
+  5.4.7. The ptrans file
+
+   ptrans specifies query-time path translations. These can be useful in
+   multiple cases.
+
+   The file has a section for any index which needs translations, either the
+   main one or additional query indexes. The sections are named with the
+   Xapian index directory names. No slash character should exist at the end
+   of the paths (all comparisons are textual). An exemple should make things
+   sufficiently clear
+
+           [/home/me/.recoll/xapiandb]
+           /this/directory/moved = /to/this/place
+
+           [/path/to/additional/xapiandb]
+           /server/volume1/docdir = /net/server/volume1/docdir
+           /server/volume2/docdir = /net/server/volume2/docdir
+        
+
+  5.4.8. Examples of configuration adjustments
+
+    5.4.8.1. Adding an external viewer for an non-indexed type
+
+   Imagine that you have some kind of file which does not have indexable
+   content, but for which you would like to have a functional Open link in
+   the result list (when found by file name). The file names end in .blob and
+   can be displayed by application blobviewer.
+
+   You need two entries in the configuration files for this to work:
+
+     o In $RECOLL_CONFDIR/mimemap (typically ~/.recoll/mimemap), add the
+       following line:
+
+ .blob = application/x-blobapp
+
+       Note that the MIME type is made up here, and you could call it
+       diesel/oil just the same.
+
+     o In $RECOLL_CONFDIR/mimeview under the [view] section, add:
+
+ application/x-blobapp = blobviewer %f
+
+       We are supposing that blobviewer wants a file name parameter here, you
+       would use %u if it liked URLs better.
+
+   If you just wanted to change the application used by Recoll to display a
+   MIME type which it already knows, you would just need to edit mimeview.
+   The entries you add in your personal file override those in the central
+   configuration, which you do not need to alter. mimeview can also be
+   modified from the Gui.
+
+    5.4.8.2. Adding indexing support for a new file type
+
+   Let us now imagine that the above .blob files actually contain indexable
+   text and that you know how to extract it with a command line program.
+   Getting Recoll to index the files is easy. You need to perform the above
+   alteration, and also to add data to the mimeconf file (typically in
+   ~/.recoll/mimeconf):
+
+     o Under the [index] section, add the following line (more about the
+       rclblob indexing script later):
+
+ application/x-blobapp = exec rclblob
+
+     o Under the [icons] section, you should choose an icon to be displayed
+       for the files inside the result lists. Icons are normally 64x64 pixels
+       PNG files which live in /usr/[local/]share/recoll/images.
+
+     o Under the [categories] section, you should add the MIME type where it
+       makes sense (you can also create a category). Categories may be used
+       for filtering in advanced search.
+
+   The rclblob handler should be an executable program or script which exists
+   inside /usr/[local/]share/recoll/filters. It will be given a file name as
+   argument and should output the text or html contents on the standard
+   output.
+
+   The filter programming section describes in more detail how to write an
+   input handler.
diff --git a/src/VERSION b/src/VERSION
new file mode 100644
index 00000000..57807d6d
--- /dev/null
+++ b/src/VERSION
@@ -0,0 +1 @@
+1.22.0
diff --git a/src/aspell/Makefile b/src/aspell/Makefile
new file mode 100644
index 00000000..598acfca
--- /dev/null
+++ b/src/aspell/Makefile
@@ -0,0 +1,12 @@
+PROGS = rclaspell
+all: $(PROGS)
+
+RCLASPELL_OBJS= trrclaspell.o 
+rclaspell : $(RCLASPELL_OBJS)
+	$(CXX) $(ALL_CXXFLAGS) -o rclaspell $(RCLASPELL_OBJS) \
+          $(LIBRECOLL)
+trrclaspell.o : rclaspell.cpp
+	$(CXX) $(ALL_CXXFLAGS) -DTEST_RCLASPELL -c -o trrclaspell.o \
+	       rclaspell.cpp
+
+include ../utils/utmkdefs.mk
diff --git a/src/aspell/aspell-local.h b/src/aspell/aspell-local.h
new file mode 100644
index 00000000..421c9380
--- /dev/null
+++ b/src/aspell/aspell-local.h
@@ -0,0 +1,729 @@
+/* Automatically generated file.  Do not edit directly. */
+
+/* This file is part of The New Aspell
+ * Copyright (C) 2001-2002 by Kevin Atkinson under the GNU LGPL
+ * license version 2.0 or 2.1.  You should have received a copy of the
+ * LGPL license along with this library if you did not you can find it
+ * at http://www.gnu.org/.                                              */
+
+#ifndef ASPELL_ASPELL__H
+#define ASPELL_ASPELL__H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/******************************* type id *******************************/
+
+
+union AspellTypeId {
+
+  unsigned int num;
+
+  char str[4];
+
+};
+
+
+typedef union AspellTypeId AspellTypeId;
+
+
+/************************** mutable container **************************/
+
+
+typedef struct AspellMutableContainer AspellMutableContainer;
+
+
+int aspell_mutable_container_add(struct AspellMutableContainer * ths, const char * to_add);
+
+int aspell_mutable_container_remove(struct AspellMutableContainer * ths, const char * to_rem);
+
+void aspell_mutable_container_clear(struct AspellMutableContainer * ths);
+
+struct AspellMutableContainer * aspell_mutable_container_to_mutable_container(struct AspellMutableContainer * ths);
+
+
+
+/******************************* key info *******************************/
+
+
+
+enum AspellKeyInfoType {AspellKeyInfoString, AspellKeyInfoInt, AspellKeyInfoBool, AspellKeyInfoList};
+typedef enum AspellKeyInfoType AspellKeyInfoType;
+
+
+struct AspellKeyInfo {
+
+  /* The name of the key. */
+  const char * name;
+
+  /* The key type. */
+  enum AspellKeyInfoType type;
+
+  /* The default value of the key. */
+  const char * def;
+
+  /* A brief description of the key or NULL if internal value. */
+  const char * desc;
+
+  int flags;
+
+  int other_data;
+
+};
+
+
+typedef struct AspellKeyInfo AspellKeyInfo;
+
+
+/******************************** config ********************************/
+
+
+typedef struct AspellKeyInfoEnumeration AspellKeyInfoEnumeration;
+
+
+int aspell_key_info_enumeration_at_end(const struct AspellKeyInfoEnumeration * ths);
+
+const struct AspellKeyInfo * aspell_key_info_enumeration_next(struct AspellKeyInfoEnumeration * ths);
+
+void delete_aspell_key_info_enumeration(struct AspellKeyInfoEnumeration * ths);
+
+struct AspellKeyInfoEnumeration * aspell_key_info_enumeration_clone(const struct AspellKeyInfoEnumeration * ths);
+
+void aspell_key_info_enumeration_assign(struct AspellKeyInfoEnumeration * ths, const struct AspellKeyInfoEnumeration * other);
+
+
+
+typedef struct AspellConfig AspellConfig;
+
+
+struct AspellConfig * new_aspell_config();
+
+void delete_aspell_config(struct AspellConfig * ths);
+
+struct AspellConfig * aspell_config_clone(const struct AspellConfig * ths);
+
+void aspell_config_assign(struct AspellConfig * ths, const struct AspellConfig * other);
+
+unsigned int aspell_config_error_number(const struct AspellConfig * ths);
+
+const char * aspell_config_error_message(const struct AspellConfig * ths);
+
+const struct AspellError * aspell_config_error(const struct AspellConfig * ths);
+
+/* Sets extra keys which this config class should
+ * accept. begin and end are expected to point to
+ * the beginning and ending of an array of Aspell
+ * Key Info. */
+void aspell_config_set_extra(struct AspellConfig * ths, const struct AspellKeyInfo * begin, const struct AspellKeyInfo * end);
+
+/* Returns the KeyInfo object for the
+ * corresponding key or returns NULL and sets
+ * error_num to PERROR_UNKNOWN_KEY if the key is
+ * not valid. The pointer returned is valid for
+ * the lifetime of the object. */
+const struct AspellKeyInfo * aspell_config_keyinfo(struct AspellConfig * ths, const char * key);
+
+/* Returns a newly allocated enumeration of all
+ * the possible objects this config class uses. */
+struct AspellKeyInfoEnumeration * aspell_config_possible_elements(struct AspellConfig * ths, int include_extra);
+
+/* Returns the default value for given key which
+ * may involve substituting variables, thus it is
+ * not the same as keyinfo(key)->def returns NULL
+ * and sets error_num to PERROR_UNKNOWN_KEY if
+ * the key is not valid. Uses the temporary
+ * string. */
+const char * aspell_config_get_default(struct AspellConfig * ths, const char * key);
+
+/* Returns a newly allocated enumeration of all
+ * the key/value pairs. This DOES not include ones
+ * which are set to their default values. */
+struct AspellStringPairEnumeration * aspell_config_elements(struct AspellConfig * ths);
+
+/* Inserts an item, if the item already exists it
+ * will be replaced. Returns TRUE if it succeeded
+ * or FALSE on error. If the key in not valid it
+ * sets error_num to PERROR_UNKNOWN_KEY, if the
+ * value is not valid it will set error_num to
+ * PERROR_BAD_VALUE, if the value can not be
+ * changed it sets error_num to
+ * PERROR_CANT_CHANGE_VALUE, and if the value is
+ * a list and you are trying to set its directory,
+ * it sets error_num to PERROR_LIST_SET */
+int aspell_config_replace(struct AspellConfig * ths, const char * key, const char * value);
+
+/* Remove a key and returns TRUE if it exists
+ * otherwise return FALSE. This effectively sets
+ * the key to its default value. Calling replace
+ * with a value of "" will also call
+ * remove. If the key does not exist then it sets
+ * error_num to 0 or PERROR_NOT, if the key is
+ * not valid then it sets error_num to
+ * PERROR_UNKNOWN_KEY, if the value can not be
+ * changed then it sets error_num to
+ * PERROR_CANT_CHANGE_VALUE */
+int aspell_config_remove(struct AspellConfig * ths, const char * key);
+
+int aspell_config_have(const struct AspellConfig * ths, const char * key);
+
+/* Returns NULL on error. */
+const char * aspell_config_retrieve(struct AspellConfig * ths, const char * key);
+
+int aspell_config_retrieve_list(struct AspellConfig * ths, const char * key, struct AspellMutableContainer * lst);
+
+/* Return -1 on error, 0 if false, 1 if true. */
+int aspell_config_retrieve_bool(struct AspellConfig * ths, const char * key);
+
+/* Return -1 on error. */
+int aspell_config_retrieve_int(struct AspellConfig * ths, const char * key);
+
+
+
+/******************************** error ********************************/
+
+
+struct AspellError {
+
+  const char * mesg;
+
+  const struct AspellErrorInfo * err;
+
+};
+
+
+typedef struct AspellError AspellError;
+
+int aspell_error_is_a(const struct AspellError * ths, const struct AspellErrorInfo * e);
+
+
+struct AspellErrorInfo {
+
+  const struct AspellErrorInfo * isa;
+
+  const char * mesg;
+
+  unsigned int num_parms;
+
+  const char * parms[3];
+
+};
+
+
+typedef struct AspellErrorInfo AspellErrorInfo;
+
+
+/**************************** can have error ****************************/
+
+
+typedef struct AspellCanHaveError AspellCanHaveError;
+
+
+unsigned int aspell_error_number(const struct AspellCanHaveError * ths);
+
+const char * aspell_error_message(const struct AspellCanHaveError * ths);
+
+const struct AspellError * aspell_error(const struct AspellCanHaveError * ths);
+
+void delete_aspell_can_have_error(struct AspellCanHaveError * ths);
+
+
+
+/******************************** errors ********************************/
+
+
+extern const struct AspellErrorInfo * const aerror_other;
+extern const struct AspellErrorInfo * const aerror_operation_not_supported;
+extern const struct AspellErrorInfo * const   aerror_cant_copy;
+extern const struct AspellErrorInfo * const   aerror_unimplemented_method;
+extern const struct AspellErrorInfo * const aerror_file;
+extern const struct AspellErrorInfo * const   aerror_cant_open_file;
+extern const struct AspellErrorInfo * const     aerror_cant_read_file;
+extern const struct AspellErrorInfo * const     aerror_cant_write_file;
+extern const struct AspellErrorInfo * const   aerror_invalid_name;
+extern const struct AspellErrorInfo * const   aerror_bad_file_format;
+extern const struct AspellErrorInfo * const aerror_dir;
+extern const struct AspellErrorInfo * const   aerror_cant_read_dir;
+extern const struct AspellErrorInfo * const aerror_config;
+extern const struct AspellErrorInfo * const   aerror_unknown_key;
+extern const struct AspellErrorInfo * const   aerror_cant_change_value;
+extern const struct AspellErrorInfo * const   aerror_bad_key;
+extern const struct AspellErrorInfo * const   aerror_bad_value;
+extern const struct AspellErrorInfo * const   aerror_duplicate;
+extern const struct AspellErrorInfo * const   aerror_key_not_string;
+extern const struct AspellErrorInfo * const   aerror_key_not_int;
+extern const struct AspellErrorInfo * const   aerror_key_not_bool;
+extern const struct AspellErrorInfo * const   aerror_key_not_list;
+extern const struct AspellErrorInfo * const   aerror_no_value_reset;
+extern const struct AspellErrorInfo * const   aerror_no_value_enable;
+extern const struct AspellErrorInfo * const   aerror_no_value_disable;
+extern const struct AspellErrorInfo * const   aerror_no_value_clear;
+extern const struct AspellErrorInfo * const aerror_language_related;
+extern const struct AspellErrorInfo * const   aerror_unknown_language;
+extern const struct AspellErrorInfo * const   aerror_unknown_soundslike;
+extern const struct AspellErrorInfo * const   aerror_language_not_supported;
+extern const struct AspellErrorInfo * const   aerror_no_wordlist_for_lang;
+extern const struct AspellErrorInfo * const   aerror_mismatched_language;
+extern const struct AspellErrorInfo * const aerror_affix;
+extern const struct AspellErrorInfo * const   aerror_corrupt_affix;
+extern const struct AspellErrorInfo * const   aerror_invalid_cond;
+extern const struct AspellErrorInfo * const   aerror_invalid_cond_strip;
+extern const struct AspellErrorInfo * const   aerror_incorrect_encoding;
+extern const struct AspellErrorInfo * const aerror_encoding;
+extern const struct AspellErrorInfo * const   aerror_unknown_encoding;
+extern const struct AspellErrorInfo * const   aerror_encoding_not_supported;
+extern const struct AspellErrorInfo * const   aerror_conversion_not_supported;
+extern const struct AspellErrorInfo * const aerror_pipe;
+extern const struct AspellErrorInfo * const   aerror_cant_create_pipe;
+extern const struct AspellErrorInfo * const   aerror_process_died;
+extern const struct AspellErrorInfo * const aerror_bad_input;
+extern const struct AspellErrorInfo * const   aerror_invalid_string;
+extern const struct AspellErrorInfo * const   aerror_invalid_word;
+extern const struct AspellErrorInfo * const   aerror_invalid_affix;
+extern const struct AspellErrorInfo * const   aerror_inapplicable_affix;
+extern const struct AspellErrorInfo * const   aerror_unknown_unichar;
+extern const struct AspellErrorInfo * const   aerror_word_list_flags;
+extern const struct AspellErrorInfo * const     aerror_invalid_flag;
+extern const struct AspellErrorInfo * const     aerror_conflicting_flags;
+extern const struct AspellErrorInfo * const aerror_version_control;
+extern const struct AspellErrorInfo * const   aerror_bad_version_string;
+extern const struct AspellErrorInfo * const aerror_filter;
+extern const struct AspellErrorInfo * const   aerror_cant_dlopen_file;
+extern const struct AspellErrorInfo * const   aerror_empty_filter;
+extern const struct AspellErrorInfo * const   aerror_no_such_filter;
+extern const struct AspellErrorInfo * const   aerror_confusing_version;
+extern const struct AspellErrorInfo * const   aerror_bad_version;
+extern const struct AspellErrorInfo * const   aerror_identical_option;
+extern const struct AspellErrorInfo * const   aerror_options_only;
+extern const struct AspellErrorInfo * const   aerror_invalid_option_modifier;
+extern const struct AspellErrorInfo * const   aerror_cant_describe_filter;
+extern const struct AspellErrorInfo * const aerror_filter_mode_file;
+extern const struct AspellErrorInfo * const   aerror_mode_option_name;
+extern const struct AspellErrorInfo * const   aerror_no_filter_to_option;
+extern const struct AspellErrorInfo * const   aerror_bad_mode_key;
+extern const struct AspellErrorInfo * const   aerror_expect_mode_key;
+extern const struct AspellErrorInfo * const   aerror_mode_version_requirement;
+extern const struct AspellErrorInfo * const   aerror_confusing_mode_version;
+extern const struct AspellErrorInfo * const   aerror_bad_mode_version;
+extern const struct AspellErrorInfo * const   aerror_missing_magic_expression;
+extern const struct AspellErrorInfo * const   aerror_empty_file_ext;
+extern const struct AspellErrorInfo * const aerror_filter_mode_expand;
+extern const struct AspellErrorInfo * const   aerror_unknown_mode;
+extern const struct AspellErrorInfo * const   aerror_mode_extend_expand;
+extern const struct AspellErrorInfo * const aerror_filter_mode_magic;
+extern const struct AspellErrorInfo * const   aerror_file_magic_pos;
+extern const struct AspellErrorInfo * const   aerror_file_magic_range;
+extern const struct AspellErrorInfo * const   aerror_missing_magic;
+extern const struct AspellErrorInfo * const   aerror_bad_magic;
+extern const struct AspellErrorInfo * const aerror_expression;
+extern const struct AspellErrorInfo * const   aerror_invalid_expression;
+
+
+/******************************* speller *******************************/
+
+
+typedef struct AspellSpeller AspellSpeller;
+
+
+struct AspellCanHaveError * new_aspell_speller(struct AspellConfig * config);
+
+struct AspellSpeller * to_aspell_speller(struct AspellCanHaveError * obj);
+
+void delete_aspell_speller(struct AspellSpeller * ths);
+
+unsigned int aspell_speller_error_number(const struct AspellSpeller * ths);
+
+const char * aspell_speller_error_message(const struct AspellSpeller * ths);
+
+const struct AspellError * aspell_speller_error(const struct AspellSpeller * ths);
+
+struct AspellConfig * aspell_speller_config(struct AspellSpeller * ths);
+
+/* Returns 0 if it is not in the dictionary,
+ * 1 if it is, or -1 on error. */
+int aspell_speller_check(struct AspellSpeller * ths, const char * word, int word_size);
+
+/* Add this word to your own personal word list. */
+int aspell_speller_add_to_personal(struct AspellSpeller * ths, const char * word, int word_size);
+
+/* Add this word to the current spelling session. */
+int aspell_speller_add_to_session(struct AspellSpeller * ths, const char * word, int word_size);
+
+/* This is your own personal word list file plus
+ * any extra words added during this session to
+ * your own personal word list. */
+const struct AspellWordList * aspell_speller_personal_word_list(struct AspellSpeller * ths);
+
+/* This is a list of words added to this session
+ * that are not in the main word list or in your
+ * own personal list but are considered valid for
+ * this spelling session. */
+const struct AspellWordList * aspell_speller_session_word_list(struct AspellSpeller * ths);
+
+/* This is the main list of words used during this
+ * spelling session. */
+const struct AspellWordList * aspell_speller_main_word_list(struct AspellSpeller * ths);
+
+int aspell_speller_save_all_word_lists(struct AspellSpeller * ths);
+
+int aspell_speller_clear_session(struct AspellSpeller * ths);
+
+/* Return NULL on error.
+ * The word list returned by suggest is only
+ * valid until the next call to suggest. */
+const struct AspellWordList * aspell_speller_suggest(struct AspellSpeller * ths, const char * word, int word_size);
+
+int aspell_speller_store_replacement(struct AspellSpeller * ths, const char * mis, int mis_size, const char * cor, int cor_size);
+
+
+
+/******************************** filter ********************************/
+
+
+typedef struct AspellFilter AspellFilter;
+
+
+void delete_aspell_filter(struct AspellFilter * ths);
+
+unsigned int aspell_filter_error_number(const struct AspellFilter * ths);
+
+const char * aspell_filter_error_message(const struct AspellFilter * ths);
+
+const struct AspellError * aspell_filter_error(const struct AspellFilter * ths);
+
+struct AspellFilter * to_aspell_filter(struct AspellCanHaveError * obj);
+
+
+
+/*************************** document checker ***************************/
+
+
+struct AspellToken {
+
+  unsigned int offset;
+
+  unsigned int len;
+
+};
+
+
+typedef struct AspellToken AspellToken;
+
+
+typedef struct AspellDocumentChecker AspellDocumentChecker;
+
+
+void delete_aspell_document_checker(struct AspellDocumentChecker * ths);
+
+unsigned int aspell_document_checker_error_number(const struct AspellDocumentChecker * ths);
+
+const char * aspell_document_checker_error_message(const struct AspellDocumentChecker * ths);
+
+const struct AspellError * aspell_document_checker_error(const struct AspellDocumentChecker * ths);
+
+/* Creates a new document checker.
+ * The speller class is expected to last until
+ * this class is destroyed.
+ * If config is given it will be used to override
+ * any relevent options set by this speller class.
+ * The config class is not once this function is done.
+ * If filter is given then it will take ownership of
+ * the filter class and use it to do the filtering.
+ * You are expected to free the checker when done. */
+struct AspellCanHaveError * new_aspell_document_checker(struct AspellSpeller * speller);
+
+struct AspellDocumentChecker * to_aspell_document_checker(struct AspellCanHaveError * obj);
+
+/* Reset the internal state of the filter.
+ * Should be called whenever a new document is
+ * being filtered. */
+void aspell_document_checker_reset(struct AspellDocumentChecker * ths);
+
+/* Process a string.
+ * The string passed in should only be split on
+ * white space characters.  Furthermore, between
+ * calls to reset, each string should be passed
+ * in exactly once and in the order they appeared
+ * in the document.  Passing in strings out of
+ * order, skipping strings or passing them in
+ * more than once may lead to undefined results. */
+void aspell_document_checker_process(struct AspellDocumentChecker * ths, const char * str, int size);
+
+/* Returns the next misspelled word in the
+ * processed string.  If there are no more
+ * misspelled words, then token.word will be
+ * NULL and token.size will be 0 */
+struct AspellToken aspell_document_checker_next_misspelling(struct AspellDocumentChecker * ths);
+
+/* Returns the underlying filter class. */
+struct AspellFilter * aspell_document_checker_filter(struct AspellDocumentChecker * ths);
+
+
+
+/****************************** word list ******************************/
+
+
+typedef struct AspellWordList AspellWordList;
+
+
+int aspell_word_list_empty(const struct AspellWordList * ths);
+
+unsigned int aspell_word_list_size(const struct AspellWordList * ths);
+
+struct AspellStringEnumeration * aspell_word_list_elements(const struct AspellWordList * ths);
+
+
+
+/************************** string enumeration **************************/
+
+
+typedef struct AspellStringEnumeration AspellStringEnumeration;
+
+
+void delete_aspell_string_enumeration(struct AspellStringEnumeration * ths);
+
+struct AspellStringEnumeration * aspell_string_enumeration_clone(const struct AspellStringEnumeration * ths);
+
+void aspell_string_enumeration_assign(struct AspellStringEnumeration * ths, const struct AspellStringEnumeration * other);
+
+int aspell_string_enumeration_at_end(const struct AspellStringEnumeration * ths);
+
+const char * aspell_string_enumeration_next(struct AspellStringEnumeration * ths);
+
+
+
+/********************************* info *********************************/
+
+
+struct AspellModuleInfo {
+
+  const char * name;
+
+  double order_num;
+
+  const char * lib_dir;
+
+  struct AspellStringList * dict_dirs;
+
+  struct AspellStringList * dict_exts;
+
+};
+
+
+typedef struct AspellModuleInfo AspellModuleInfo;
+
+
+struct AspellDictInfo {
+
+  /* The Name to identify this dictionary by. */
+  const char * name;
+
+  /* The language code to identify this dictionary.
+   * A two letter UPPER-CASE ISO 639 language code
+   * and an optional two letter ISO 3166 country
+   * code after a dash or underscore. */
+  const char * code;
+
+  /* Any extra information to distinguish this
+   * variety of dictionary from other dictionaries
+   * which may have the same language and size. */
+  const char * jargon;
+
+  int size;
+
+  /* A two char digit code describing the size of
+   * the dictionary: 10=tiny, 20=really small,
+   * 30=small, 40=med-small, 50=med, 60=med-large,
+   * 70=large, 80=huge, 90=insane.  Please check
+   * the README in aspell-lang-200?????.tar.bz2 or
+   * see SCOWL (http://wordlist.sourceforge.net)
+   * for an example of how these sizes are used. */
+  const char * size_str;
+
+  struct AspellModuleInfo * module;
+
+};
+
+
+typedef struct AspellDictInfo AspellDictInfo;
+
+
+typedef struct AspellModuleInfoList AspellModuleInfoList;
+
+
+struct AspellModuleInfoList * get_aspell_module_info_list(struct AspellConfig * config);
+
+int aspell_module_info_list_empty(const struct AspellModuleInfoList * ths);
+
+unsigned int aspell_module_info_list_size(const struct AspellModuleInfoList * ths);
+
+struct AspellModuleInfoEnumeration * aspell_module_info_list_elements(const struct AspellModuleInfoList * ths);
+
+
+
+typedef struct AspellDictInfoList AspellDictInfoList;
+
+
+struct AspellDictInfoList * get_aspell_dict_info_list(struct AspellConfig * config);
+
+int aspell_dict_info_list_empty(const struct AspellDictInfoList * ths);
+
+unsigned int aspell_dict_info_list_size(const struct AspellDictInfoList * ths);
+
+struct AspellDictInfoEnumeration * aspell_dict_info_list_elements(const struct AspellDictInfoList * ths);
+
+
+
+typedef struct AspellModuleInfoEnumeration AspellModuleInfoEnumeration;
+
+
+int aspell_module_info_enumeration_at_end(const struct AspellModuleInfoEnumeration * ths);
+
+const struct AspellModuleInfo * aspell_module_info_enumeration_next(struct AspellModuleInfoEnumeration * ths);
+
+void delete_aspell_module_info_enumeration(struct AspellModuleInfoEnumeration * ths);
+
+struct AspellModuleInfoEnumeration * aspell_module_info_enumeration_clone(const struct AspellModuleInfoEnumeration * ths);
+
+void aspell_module_info_enumeration_assign(struct AspellModuleInfoEnumeration * ths, const struct AspellModuleInfoEnumeration * other);
+
+
+
+typedef struct AspellDictInfoEnumeration AspellDictInfoEnumeration;
+
+
+int aspell_dict_info_enumeration_at_end(const struct AspellDictInfoEnumeration * ths);
+
+const struct AspellDictInfo * aspell_dict_info_enumeration_next(struct AspellDictInfoEnumeration * ths);
+
+void delete_aspell_dict_info_enumeration(struct AspellDictInfoEnumeration * ths);
+
+struct AspellDictInfoEnumeration * aspell_dict_info_enumeration_clone(const struct AspellDictInfoEnumeration * ths);
+
+void aspell_dict_info_enumeration_assign(struct AspellDictInfoEnumeration * ths, const struct AspellDictInfoEnumeration * other);
+
+
+
+/***************************** string list *****************************/
+
+
+typedef struct AspellStringList AspellStringList;
+
+
+struct AspellStringList * new_aspell_string_list();
+
+int aspell_string_list_empty(const struct AspellStringList * ths);
+
+unsigned int aspell_string_list_size(const struct AspellStringList * ths);
+
+struct AspellStringEnumeration * aspell_string_list_elements(const struct AspellStringList * ths);
+
+int aspell_string_list_add(struct AspellStringList * ths, const char * to_add);
+
+int aspell_string_list_remove(struct AspellStringList * ths, const char * to_rem);
+
+void aspell_string_list_clear(struct AspellStringList * ths);
+
+struct AspellMutableContainer * aspell_string_list_to_mutable_container(struct AspellStringList * ths);
+
+void delete_aspell_string_list(struct AspellStringList * ths);
+
+struct AspellStringList * aspell_string_list_clone(const struct AspellStringList * ths);
+
+void aspell_string_list_assign(struct AspellStringList * ths, const struct AspellStringList * other);
+
+
+
+/****************************** string map ******************************/
+
+
+typedef struct AspellStringMap AspellStringMap;
+
+
+struct AspellStringMap * new_aspell_string_map();
+
+int aspell_string_map_add(struct AspellStringMap * ths, const char * to_add);
+
+int aspell_string_map_remove(struct AspellStringMap * ths, const char * to_rem);
+
+void aspell_string_map_clear(struct AspellStringMap * ths);
+
+struct AspellMutableContainer * aspell_string_map_to_mutable_container(struct AspellStringMap * ths);
+
+void delete_aspell_string_map(struct AspellStringMap * ths);
+
+struct AspellStringMap * aspell_string_map_clone(const struct AspellStringMap * ths);
+
+void aspell_string_map_assign(struct AspellStringMap * ths, const struct AspellStringMap * other);
+
+int aspell_string_map_empty(const struct AspellStringMap * ths);
+
+unsigned int aspell_string_map_size(const struct AspellStringMap * ths);
+
+struct AspellStringPairEnumeration * aspell_string_map_elements(const struct AspellStringMap * ths);
+
+/* Insert a new element.
+ * Will NOT overwrite an existing entry.
+ * Returns FALSE if the element already exists. */
+int aspell_string_map_insert(struct AspellStringMap * ths, const char * key, const char * value);
+
+/* Insert a new element.
+ * Will overwrite an existing entry.
+ * Always returns TRUE. */
+int aspell_string_map_replace(struct AspellStringMap * ths, const char * key, const char * value);
+
+/* Looks up an element and returns the value.
+ * Returns NULL if the element does not exist.
+ * Returns an empty string if the element exists
+ * but has a NULL value. */
+const char * aspell_string_map_lookup(const struct AspellStringMap * ths, const char * key);
+
+
+
+/***************************** string pair *****************************/
+
+
+struct AspellStringPair {
+
+  const char * first;
+
+  const char * second;
+
+};
+
+
+typedef struct AspellStringPair AspellStringPair;
+
+
+/*********************** string pair enumeration ***********************/
+
+
+typedef struct AspellStringPairEnumeration AspellStringPairEnumeration;
+
+
+int aspell_string_pair_enumeration_at_end(const struct AspellStringPairEnumeration * ths);
+
+struct AspellStringPair aspell_string_pair_enumeration_next(struct AspellStringPairEnumeration * ths);
+
+void delete_aspell_string_pair_enumeration(struct AspellStringPairEnumeration * ths);
+
+struct AspellStringPairEnumeration * aspell_string_pair_enumeration_clone(const struct AspellStringPairEnumeration * ths);
+
+void aspell_string_pair_enumeration_assign(struct AspellStringPairEnumeration * ths, const struct AspellStringPairEnumeration * other);
+
+
+
+/******************************** cache ********************************/
+
+
+/* Reset the global cache(s) so that cache queries will
+ * create a new object. If existing objects are still in
+ * use they are not deleted. If which is NULL then all
+ * caches will be reset. Current caches are "encode",
+ * "decode", "dictionary", "language", and "keyboard". */
+int aspell_reset_cache(const char * which);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* ASPELL_ASPELL__H */
diff --git a/src/aspell/rclaspell.cpp b/src/aspell/rclaspell.cpp
new file mode 100644
index 00000000..14cfd856
--- /dev/null
+++ b/src/aspell/rclaspell.cpp
@@ -0,0 +1,596 @@
+#ifndef TEST_RCLASPELL
+/* Copyright (C) 2006 J.F.Dockes
+ *   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.
+ */
+#ifdef HAVE_CONFIG_H
+#include "autoconfig.h"
+#endif
+
+#ifdef RCL_USE_ASPELL
+
+#include 
+#include 
+#include 
+
+#include ASPELL_INCLUDE
+
+#include "pathut.h"
+#include "execmd.h"
+#include "rclaspell.h"
+#include "debuglog.h"
+#include "unacpp.h"
+#include "ptmutex.h"
+
+using namespace std;
+
+// Just a place where we keep the Aspell library entry points together
+class AspellApi {
+public:
+    struct AspellConfig *(*new_aspell_config)();
+    int (*aspell_config_replace)(struct AspellConfig *, const char * key, 
+				 const char * value);
+    struct AspellCanHaveError *(*new_aspell_speller)(struct AspellConfig *);
+    void (*delete_aspell_config)(struct AspellConfig *);
+    void (*delete_aspell_can_have_error)(struct AspellCanHaveError *);
+    struct AspellSpeller * (*to_aspell_speller)(struct AspellCanHaveError *);
+    struct AspellConfig * (*aspell_speller_config)(struct AspellSpeller *);
+    const struct AspellWordList * (*aspell_speller_suggest)
+	(struct AspellSpeller *, const char *, int);
+    int (*aspell_speller_check)(struct AspellSpeller *, const char *, int);
+    struct AspellStringEnumeration * (*aspell_word_list_elements)
+	(const struct AspellWordList * ths);
+    const char * (*aspell_string_enumeration_next)
+	(struct AspellStringEnumeration * ths);
+    void (*delete_aspell_string_enumeration)(struct AspellStringEnumeration *);
+    const struct AspellError *(*aspell_error)
+	(const struct AspellCanHaveError *);
+    const char *(*aspell_error_message)(const struct AspellCanHaveError *);
+    const char *(*aspell_speller_error_message)(const struct AspellSpeller *);
+    void (*delete_aspell_speller)(struct AspellSpeller *);
+
+};
+static AspellApi aapi;
+static PTMutexInit o_aapi_mutex;
+
+#define NMTOPTR(NM, TP)							\
+    if ((aapi.NM = TP dlsym(m_data->m_handle, #NM)) == 0) {		\
+	badnames += #NM + string(" ");					\
+    }
+
+static const char *aspell_lib_suffixes[] = {
+  ".so",
+  ".so.15",
+  ".so.16"
+};
+static const unsigned int nlibsuffs  = sizeof(aspell_lib_suffixes) / sizeof(char *);
+
+// Stuff that we don't wish to see in the .h (possible sysdeps, etc.)
+class AspellData {
+public:
+    AspellData() 
+        : m_handle(0), m_speller(0) 
+    {}
+    ~AspellData() {
+        LOGDEB2(("~AspellData\n"));
+	if (m_handle) {
+	    dlclose(m_handle);
+            m_handle = 0;
+        }
+        if (m_speller) {
+            // Dumps core if I do this?? 
+            //aapi.delete_aspell_speller(m_speller);
+            m_speller = 0;
+            LOGDEB2(("~AspellData: speller done\n"));
+        }
+    }
+
+    void  *m_handle;
+    string m_exec;
+    AspellSpeller *m_speller;    
+};
+
+Aspell::Aspell(RclConfig *cnf)
+    : m_config(cnf), m_data(0) 
+{
+}
+
+Aspell::~Aspell()
+{
+    deleteZ(m_data);
+}
+
+bool Aspell::init(string &reason)
+{
+    PTMutexLocker locker(o_aapi_mutex);
+    deleteZ(m_data);
+
+    // Language: we get this from the configuration, else from the NLS
+    // environment. The aspell language names used for selecting language 
+    // definition files (used to create dictionaries) are like en, fr
+    if (!m_config->getConfParam("aspellLanguage", m_lang) || m_lang.empty()) {
+	string lang = "en";
+	const char *cp;
+	if ((cp = getenv("LC_ALL")))
+	    lang = cp;
+	else if ((cp = getenv("LANG")))
+	    lang = cp;
+	if (!lang.compare("C"))
+	    lang = "en";
+	m_lang = lang.substr(0, lang.find_first_of("_"));
+    }
+
+    m_data = new AspellData;
+
+    const char *aspell_prog_from_env = getenv("ASPELL_PROG");
+    if (aspell_prog_from_env && access(aspell_prog_from_env, X_OK) == 0) {
+	m_data->m_exec = aspell_prog_from_env;
+#ifdef ASPELL_PROG
+    } else if (access(ASPELL_PROG, X_OK) == 0) {
+	m_data->m_exec = ASPELL_PROG;
+#endif // ASPELL_PROG
+    } else {
+	ExecCmd::which("aspell", m_data->m_exec);
+    }
+
+    if (m_data->m_exec.empty()) {
+	reason = "aspell program not found or not executable";
+        deleteZ(m_data);
+	return false;
+    }
+
+    reason = "Could not open shared library ";
+    string libbase("libaspell");
+    string lib;
+    for (unsigned int i = 0; i < nlibsuffs; i++) {
+        lib = libbase + aspell_lib_suffixes[i];
+        reason += string("[") + lib + "] ";
+        if ((m_data->m_handle = dlopen(lib.c_str(), RTLD_LAZY)) != 0) {
+            reason.erase();
+            goto found;
+        }
+    }
+    
+ found:
+    if (m_data->m_handle == 0) {
+        reason += string(" : ") + dlerror();
+        deleteZ(m_data);
+        return false;
+    }
+
+    string badnames;
+    NMTOPTR(new_aspell_config, (struct AspellConfig *(*)()));
+    NMTOPTR(aspell_config_replace, (int (*)(struct AspellConfig *, 
+					    const char *, const char *)));
+    NMTOPTR(new_aspell_speller, 
+	    (struct AspellCanHaveError *(*)(struct AspellConfig *)));
+    NMTOPTR(delete_aspell_config, 
+	    (void (*)(struct AspellConfig *)));
+    NMTOPTR(delete_aspell_can_have_error, 
+	    (void (*)(struct AspellCanHaveError *)));
+    NMTOPTR(to_aspell_speller, 
+	    (struct AspellSpeller *(*)(struct AspellCanHaveError *)));
+    NMTOPTR(aspell_speller_config, 
+	    (struct AspellConfig *(*)(struct AspellSpeller *)));
+    NMTOPTR(aspell_speller_suggest, 
+	    (const struct AspellWordList *(*)(struct AspellSpeller *, 
+					       const char *, int)));
+    NMTOPTR(aspell_speller_check, 
+	    (int (*)(struct AspellSpeller *, const char *, int)));
+    NMTOPTR(aspell_word_list_elements, 
+	    (struct AspellStringEnumeration *(*)
+	     (const struct AspellWordList *)));
+    NMTOPTR(aspell_string_enumeration_next, 
+	    (const char * (*)(struct AspellStringEnumeration *)));
+    NMTOPTR(delete_aspell_string_enumeration, 
+	    (void (*)(struct AspellStringEnumeration *)));
+    NMTOPTR(aspell_error, 
+	    (const struct AspellError*(*)(const struct AspellCanHaveError *)));
+    NMTOPTR(aspell_error_message,
+	    (const char *(*)(const struct AspellCanHaveError *)));
+    NMTOPTR(aspell_speller_error_message, 
+	    (const char *(*)(const struct AspellSpeller *)));
+    NMTOPTR(delete_aspell_speller, (void (*)(struct AspellSpeller *)));
+
+    if (!badnames.empty()) {
+	reason = string("Aspell::init: symbols not found:") + badnames;
+        deleteZ(m_data);
+	return false;
+    }
+
+    return true;
+}
+
+bool Aspell::ok() const
+{
+    return m_data != 0 && m_data->m_handle != 0;
+}
+
+string Aspell::dicPath()
+{
+    string ccdir;
+    m_config->getConfParam("aspellDicDir", ccdir);
+    if (ccdir.empty()) {
+        ccdir = m_config->getConfDir();
+    } else {
+        ccdir = path_tildexpand(ccdir);
+        // If not an absolute path, compute relative to config dir
+        if (!path_isabsolute(ccdir))
+            ccdir = path_cat(m_config->getConfDir(), ccdir);
+    }
+
+    return path_cat(ccdir, string("aspdict.") + m_lang + string(".rws"));
+}
+
+
+// The data source for the create dictionary aspell command. We walk
+// the term list, filtering out things that are probably not words.
+// Note that the manual for the current version (0.60) of aspell
+// states that utf-8 is not well supported, so that we should maybe
+// also filter all 8bit chars.
+class AspExecPv : public ExecCmdProvide {
+public:
+    string *m_input; // pointer to string used as input buffer to command
+    Rcl::TermIter *m_tit;
+    Rcl::Db &m_db;
+    AspExecPv(string *i, Rcl::TermIter *tit, Rcl::Db &db) 
+	: m_input(i), m_tit(tit), m_db(db)
+    {}
+    void newData() {
+	while (m_db.termWalkNext(m_tit, *m_input)) {
+	    LOGDEB2(("Aspell::buildDict: term: [%s]\n", m_input->c_str()));
+	    if (!Rcl::Db::isSpellingCandidate(*m_input)) {
+		LOGDEB2(("Aspell::buildDict: SKIP\n"));
+		continue;
+	    }
+	    if (!o_index_stripchars) {
+		string lower;
+		if (!unacmaybefold(*m_input, lower, "UTF-8", UNACOP_FOLD))
+		    continue;
+		m_input->swap(lower);
+	    }
+	    // Got a non-empty sort-of appropriate term, let's send it to
+	    // aspell
+	    LOGDEB2(("Apell::buildDict: SEND\n"));
+	    m_input->append("\n");
+	    return;
+	}
+	// End of data. Tell so. Exec will close cmd.
+	m_input->erase();
+    }
+};
+
+
+bool Aspell::buildDict(Rcl::Db &db, string &reason)
+{
+    if (!ok())
+	return false;
+
+    string addCreateParam;
+    m_config->getConfParam("aspellAddCreateParam", addCreateParam);
+
+    // We create the dictionary by executing the aspell command:
+    // aspell --lang=[lang] create master [dictApath]
+    string cmdstring(m_data->m_exec);
+    ExecCmd aspell;
+    vector args;
+    args.push_back(string("--lang=")+ m_lang);
+    cmdstring += string(" ") + string("--lang=") + m_lang;
+    args.push_back("--encoding=utf-8");
+    cmdstring += string(" ") + "--encoding=utf-8";
+    if (!addCreateParam.empty()) {
+	args.push_back(addCreateParam);
+	cmdstring += string(" ") + addCreateParam;
+    }
+    args.push_back("create");
+    cmdstring += string(" ") + "create";
+    args.push_back("master");
+    cmdstring += string(" ") + "master";
+    args.push_back(dicPath());
+    cmdstring += string(" ") + dicPath();
+
+    // Have to disable stderr, as numerous messages about bad strings are
+    // printed. We'd like to keep errors about missing databases though, so
+    // make it configurable for diags
+    bool keepStderr = false;
+    m_config->getConfParam("aspellKeepStderr", &keepStderr);
+    if (!keepStderr)
+	aspell.setStderr("/dev/null");
+
+    Rcl::TermIter *tit = db.termWalkOpen();
+    if (tit == 0) {
+	reason = "termWalkOpen failed\n";
+	return false;
+    }
+    string termbuf;
+    AspExecPv pv(&termbuf, tit, db);
+    aspell.setProvide(&pv);
+    
+    if (aspell.doexec(m_data->m_exec, args, &termbuf)) {
+	ExecCmd cmd;
+	args.clear();
+	args.push_back("dicts");
+	string dicts;
+	bool hasdict = false;
+	if (cmd.doexec(m_data->m_exec, args, 0, &dicts)) {
+	    vector vdicts;
+	    stringToTokens(dicts, vdicts, "\n\r\t ");
+	    if (find(vdicts.begin(), vdicts.end(), m_lang) != vdicts.end()) {
+		hasdict = true;
+	    }
+	}
+	if (hasdict)
+	    reason = string(
+		"\naspell dictionary creation command [") +
+                cmdstring + string("] failed. Reason unknown.\n"
+		"Try to set aspellKeepStderr = 1 in recoll.conf, and execute \n"
+		"the indexing command in a terminal to see the aspell "
+		"diagnostic output.\n");
+	else
+	    reason = string("aspell dictionary creation command failed:\n") +
+                cmdstring + "\n"
+                "One possible reason might be missing language "
+                "data files for lang = " + m_lang +
+                ". Maybe try to execute the command by hand for a better diag.";
+	return false;
+    }
+    db.termWalkClose(tit);
+    return true;
+}
+
+
+bool Aspell::make_speller(string& reason)
+{
+    if (!ok())
+	return false;
+    if (m_data->m_speller != 0)
+        return true;
+
+    AspellCanHaveError *ret;
+
+    AspellConfig *config = aapi.new_aspell_config();
+    aapi.aspell_config_replace(config, "lang", m_lang.c_str());
+    aapi.aspell_config_replace(config, "encoding", "utf-8");
+    aapi.aspell_config_replace(config, "master", dicPath().c_str());
+    aapi.aspell_config_replace(config, "sug-mode", "fast");
+    //    aapi.aspell_config_replace(config, "sug-edit-dist", "2");
+    ret = aapi.new_aspell_speller(config);
+    aapi.delete_aspell_config(config);
+
+    if (aapi.aspell_error(ret) != 0) {
+	reason = aapi.aspell_error_message(ret);
+	aapi.delete_aspell_can_have_error(ret);
+	return false;
+    }
+    m_data->m_speller = aapi.to_aspell_speller(ret);
+    return true;
+}
+
+bool Aspell::check(const string &iterm, string& reason)
+{
+    LOGDEB2(("Aspell::check [%s]\n", iterm.c_str()));
+    string mterm(iterm);
+
+    if (!ok() || !make_speller(reason))
+	return false;
+    if (iterm.empty())
+        return true; //??
+
+    if (!o_index_stripchars) {
+	string lower;
+	if (!unacmaybefold(mterm, lower, "UTF-8", UNACOP_FOLD)) {
+	    LOGERR(("Aspell::check : cant lowercase input\n"));
+	    return false;
+	}
+	mterm.swap(lower);
+    }
+
+    int ret = aapi.aspell_speller_check(m_data->m_speller, 
+                                        mterm.c_str(), mterm.length());
+    reason.clear();
+    switch (ret) {
+    case 0: return false;
+    case 1: return true;
+    default:
+    case -1:
+        reason.append("Aspell error: ");
+        reason.append(aapi.aspell_speller_error_message(m_data->m_speller));
+        return false;
+    }
+}
+
+bool Aspell::suggest(Rcl::Db &db, const string &_term, 
+                     list& suggestions, string& reason)
+{
+    if (!ok() || !make_speller(reason))
+	return false;
+    string mterm(_term);
+    if (mterm.empty())
+        return true; //??
+
+    if (!o_index_stripchars) {
+	string lower;
+	if (!unacmaybefold(mterm, lower, "UTF-8", UNACOP_FOLD)) {
+	    LOGERR(("Aspell::check : cant lowercase input\n"));
+	    return false;
+	}
+	mterm.swap(lower);
+    }
+
+    AspellCanHaveError *ret;
+
+    const AspellWordList *wl = 
+	aapi.aspell_speller_suggest(m_data->m_speller, 
+                                    mterm.c_str(), mterm.length());
+    if (wl == 0) {
+	reason = aapi.aspell_speller_error_message(m_data->m_speller);
+	return false;
+    }
+    AspellStringEnumeration *els = aapi.aspell_word_list_elements(wl);
+    const char *word;
+    while ((word = aapi.aspell_string_enumeration_next(els)) != 0) {
+	// Check that the word exists in the index (we don't want
+	// aspell computed stuff, only exact terms from the
+	// dictionary).  We used to also check that it stems
+	// differently from the base word but this is complicated
+	// (stemming on/off + language), so we now leave this to the
+	// caller.
+	if (db.termExists(word))
+	    suggestions.push_back(word);
+    }
+    aapi.delete_aspell_string_enumeration(els);
+    return true;
+}
+
+#endif // RCL_USE_ASPELL
+
+#else // TEST_RCLASPELL test driver ->
+
+#ifdef HAVE_CONFIG_H
+#include "autoconfig.h"
+#endif
+
+#ifdef RCL_USE_ASPELL
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+using namespace std;
+
+#include "rclinit.h"
+#include "rclconfig.h"
+#include "rcldb.h"
+#include "rclaspell.h"
+
+static char *thisprog;
+RclConfig *rclconfig;
+
+static char usage [] =
+" -b : build dictionary\n"
+" -s : suggestions for term\n"
+" -c : check term\n"
+"\n"
+;
+static void
+Usage(void)
+{
+    fprintf(stderr, "%s: usage:\n%s", thisprog, usage);
+    exit(1);
+}
+
+static int     op_flags;
+#define OPT_MOINS 0x1
+#define OPT_s	  0x2 
+#define OPT_b	  0x4 
+#define OPT_c     0x8
+
+int main(int argc, char **argv)
+{
+    string word;
+    
+    thisprog = argv[0];
+    argc--; argv++;
+
+    while (argc > 0 && **argv == '-') {
+	(*argv)++;
+	if (!(**argv))
+	    /* Cas du "adb - core" */
+	    Usage();
+	while (**argv)
+	    switch (*(*argv)++) {
+	    case 'b':	op_flags |= OPT_b; break;
+	    case 'c':	op_flags |= OPT_c; if (argc < 2)  Usage();
+		word = *(++argv);
+		argc--; 
+		goto b1;
+	    case 's':	op_flags |= OPT_s; if (argc < 2)  Usage();
+		word = *(++argv);
+		argc--; 
+		goto b1;
+	    default: Usage();	break;
+	    }
+    b1: argc--; argv++;
+    }
+
+    if (argc != 0 || op_flags == 0)
+	Usage();
+
+    string reason;
+    rclconfig = recollinit(0, 0, reason);
+    if (!rclconfig || !rclconfig->ok()) {
+	fprintf(stderr, "Configuration problem: %s\n", reason.c_str());
+	exit(1);
+    }
+
+    string dbdir = rclconfig->getDbDir();
+    if (dbdir.empty()) {
+	fprintf(stderr, "No db directory in configuration");
+	exit(1);
+    }
+
+    Rcl::Db rcldb(rclconfig);
+
+    if (!rcldb.open(Rcl::Db::DbRO, 0)) {
+	fprintf(stderr, "Could not open database in %s\n", dbdir.c_str());
+	exit(1);
+    }
+
+    Aspell aspell(rclconfig);
+
+    if (!aspell.init(reason)) {
+	cerr << "Init failed: " << reason << endl;
+	exit(1);
+    }
+    if (op_flags & OPT_b) {
+	if (!aspell.buildDict(rcldb, reason)) {
+	    cerr << "buildDict failed: " << reason << endl;
+	    exit(1);
+	}
+    } else if (op_flags & OPT_c) {
+	bool ret = aspell.check(word, reason);
+	if (!ret && reason.size()) {
+	    cerr << "Aspell error: " << reason << endl;
+	    return 1;
+	}
+	cout << word;
+	if (ret) {
+	    cout << " is in dictionary" << endl;
+	} else {
+	    cout << " not in dictionary" << endl;
+	}
+    } else {
+	list suggs;
+	if (!aspell.suggest(rcldb, word, suggs, reason)) {
+	    cerr << "suggest failed: " << reason << endl;
+	    exit(1);
+	}
+	cout << "Suggestions for " << word << ":" << endl;
+	for (list::iterator it = suggs.begin(); 
+	     it != suggs.end(); it++) {
+	    cout << *it << endl;
+	}
+    }
+    exit(0);
+}
+#else
+int main(int argc, char **argv)
+{return 1;}
+#endif // RCL_USE_ASPELL
+
+#endif // TEST_RCLASPELL test driver
diff --git a/src/aspell/rclaspell.h b/src/aspell/rclaspell.h
new file mode 100644
index 00000000..a493b5d9
--- /dev/null
+++ b/src/aspell/rclaspell.h
@@ -0,0 +1,79 @@
+/* Copyright (C) 2006 J.F.Dockes
+ *   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.
+ */
+#ifndef _RCLASPELL_H_INCLUDED_
+#define _RCLASPELL_H_INCLUDED_
+
+/* autoconfig.h must be included before this file */
+#ifdef RCL_USE_ASPELL
+
+/**
+ * Aspell speller interface class.
+ *
+ * Aspell is used to let the user find about spelling variations that may 
+ * exist in the document set for a given word.
+ * A specific aspell dictionary is created out of all the terms in the 
+ * xapian index, and we then use it to expand a term to spelling neighbours.
+ * We use the aspell C api for term expansion, but have 
+ * to execute the program to create dictionaries.
+ */
+
+#include 
+#include 
+
+#include "rclconfig.h"
+#include "rcldb.h"
+
+class AspellData;
+
+class Aspell {
+ public:
+    Aspell(RclConfig *cnf);
+    ~Aspell();
+
+    /** Check health */
+    bool ok() const;
+
+    /** Find the aspell command and shared library, init function pointers */
+    bool init(std::string &reason); 
+
+    /**  Build dictionary out of index term list. This is done at the end
+     * of an indexing pass. */
+    bool buildDict(Rcl::Db &db, std::string &reason);
+
+    /** Check that word is in dictionary. Note that this would mean
+     * that the EXACT word is: aspell just does a lookup, no
+     * grammatical, case or diacritics magic of any kind
+     *
+     * @return true if word in dic, false if not. reason.size() -> error
+     */
+    bool check(const std::string& term, std::string& reason);
+
+    /** Return a list of possible expansions for a given word */
+    bool suggest(Rcl::Db &db, const std::string& term, 
+		 std::list &suggestions, std::string &reason);
+
+ private:
+    std::string dicPath();
+    RclConfig  *m_config;
+    std::string      m_lang;
+    AspellData *m_data;
+
+    bool make_speller(std::string& reason);
+};
+
+#endif /* RCL_USE_ASPELL */
+#endif /* _RCLASPELL_H_INCLUDED_ */
diff --git a/src/autogen.sh b/src/autogen.sh
new file mode 100755
index 00000000..7cdf4b80
--- /dev/null
+++ b/src/autogen.sh
@@ -0,0 +1,4 @@
+aclocal
+libtoolize
+automake --add-missing
+autoconf
diff --git a/src/bincimapmime/00README.recoll b/src/bincimapmime/00README.recoll
new file mode 100644
index 00000000..38fb36c8
--- /dev/null
+++ b/src/bincimapmime/00README.recoll
@@ -0,0 +1,3 @@
+Most of the code in this directory was taken from the Binc IMAP project
+(http://www.bincimap.org/), version 1.3.3
+
diff --git a/src/bincimapmime/AUTHORS b/src/bincimapmime/AUTHORS
new file mode 100644
index 00000000..1ece119f
--- /dev/null
+++ b/src/bincimapmime/AUTHORS
@@ -0,0 +1,45 @@
+The following parties have participated in writing code or otherwise
+contributed to the Binc IMAP project:
+
+Author:
+Andreas Aardal Hanssen                  
+
+Several users have been very helpful with bug reports and suggestions, and
+the author is very grateful for their contributions.
+
+Some users have also gone to the extra effort of debugging the cause of a
+bug, or have found a way of implementing a feature, and have either provided
+a very good description of what is needed, or they have actually provided a
+patch that has been added to Binc IMAP.
+
+While adding extra value to the discussion around the discovery of a bug or
+the evaluation of a new feature, these contributors also take some load of
+the author's back, so they deserve extra thanks.
+
+In this list are also included people who have contributed with mirrors and
+translations of the web pages.
+
+Henry Baragar                           
+Jürgen Botz                             
+Charlie Brady                           
+Caskey Dickson                          
+Ketil Froyn                             
+Gary Gordon                             
+Marek Gutkowski                         
+Daniel James                            
+Zak Johnson                             
+Sergei Kolobov                          
+Rafal Kupka                             
+Eivind Kvedalen                         
+HIROSHIMA Naoki                         
+Greger Stolt Nilsen			
+John Starks                             
+Peter Stuge                             
+Gerrit Pape                             
+Jeremy Rossi                            
+Dale Woolridge                          
+
+If you have contributed to the Binc IMAP project but are not listed here
+(this happens quite often), please send a mail to andreas-binc@bincimap.org
+and I'll add you to the list.
+
diff --git a/src/bincimapmime/COPYING b/src/bincimapmime/COPYING
new file mode 100644
index 00000000..e4397077
--- /dev/null
+++ b/src/bincimapmime/COPYING
@@ -0,0 +1,356 @@
+This software is released under the GPL. Find a full copy of the GNU
+General Public License below.
+
+In addition, as a special exception, Andreas Aardal Hanssen, author of
+Binc IMAP, gives permission to link the code of this program with the
+OpenSSL library (or with modified versions of OpenSSL that use the
+same license as OpenSSL, listed in the included COPYING.OpenSSL file),
+and distribute linked combinations including the two.
+
+You must obey the GNU General Public License in all respects for all
+of the code used other than OpenSSL.  If you modify this file, you may
+extend this exception to your version of the file, but you are not
+obligated to do so. If you do not wish to do so, delete this exception
+statement from your version.
+
+---------------------------------------------------------------------
+                   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/src/bincimapmime/Makefile b/src/bincimapmime/Makefile
new file mode 100644
index 00000000..218b1d52
--- /dev/null
+++ b/src/bincimapmime/Makefile
@@ -0,0 +1,11 @@
+PROGS = trbinc
+all: $(PROGS)
+
+TRBINCOBJS = trbinc.o
+trbinc: trbinc.o
+	$(CXX) -o trbinc trbinc.o $(LIBRECOLL)
+
+trbinc.o: trbinc.cc
+	$(CXX) $(ALL_CXXFLAGS) -c -o trbinc.o trbinc.cc
+
+include ../utils/utmkdefs.mk
diff --git a/src/bincimapmime/config.h b/src/bincimapmime/config.h
new file mode 100644
index 00000000..e69de29b
diff --git a/src/bincimapmime/convert.cc b/src/bincimapmime/convert.cc
new file mode 100644
index 00000000..80dd892e
--- /dev/null
+++ b/src/bincimapmime/convert.cc
@@ -0,0 +1,129 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    convert.cc
+ *  
+ *  Description:
+ *    Implementation of miscellaneous convertion functions.
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#include "convert.h"
+#include 
+
+#ifndef NO_NAMESPACES
+using namespace ::std;
+using namespace Binc;
+#endif /* NO_NAMESPACES */
+
+//------------------------------------------------------------------------
+BincStream::BincStream(void)
+{
+}
+
+//------------------------------------------------------------------------
+BincStream::~BincStream(void)
+{
+  clear();
+}
+
+//------------------------------------------------------------------------
+string BincStream::popString(std::string::size_type size)
+{
+  if (size > nstr.length())
+    size = nstr.length();
+  string tmp = nstr.substr(0, size);
+  nstr = nstr.substr(size);
+  return tmp;
+}
+
+//------------------------------------------------------------------------
+char BincStream::popChar(void)
+{
+  if (nstr.length() == 0)
+    return '\0';
+
+  char c = nstr[0];
+  nstr = nstr.substr(1);
+  return c;
+}
+
+//------------------------------------------------------------------------
+void BincStream::unpopChar(char c)
+{
+  nstr = c + nstr;
+}
+
+//------------------------------------------------------------------------
+void BincStream::unpopStr(const string &s)
+{
+  nstr = s + nstr;
+}
+
+//------------------------------------------------------------------------
+const string &BincStream::str(void) const
+{
+  return nstr;
+}
+
+//------------------------------------------------------------------------
+void BincStream::clear(void)
+{
+  nstr.clear();
+}
+
+//------------------------------------------------------------------------
+unsigned int BincStream::getSize(void) const
+{
+  return (unsigned int) nstr.length();
+}
+
+//------------------------------------------------------------------------
+BincStream &BincStream::operator << (std::ostream&(*)(std::ostream&))
+{
+  nstr += "\r\n";
+  return *this;
+}
+
+//------------------------------------------------------------------------
+BincStream &BincStream::operator << (const string &t)
+{
+  nstr += t;
+  return *this;
+}
+
+//------------------------------------------------------------------------
+BincStream &BincStream::operator << (int t)
+{
+  nstr += toString(t);
+  return *this;
+}
+
+//------------------------------------------------------------------------
+BincStream &BincStream::operator << (unsigned int t)
+{
+  nstr += toString(t);
+  return *this;
+}
+
+//------------------------------------------------------------------------
+BincStream &BincStream::operator << (char t)
+{
+  nstr += t;
+  return *this;
+}
diff --git a/src/bincimapmime/convert.h b/src/bincimapmime/convert.h
new file mode 100644
index 00000000..2ed9b3a7
--- /dev/null
+++ b/src/bincimapmime/convert.h
@@ -0,0 +1,316 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    src/util/convert.h
+ *  
+ *  Description:
+ *    Declaration of miscellaneous convertion functions.
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#ifndef convert_h_included
+#define convert_h_included
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+namespace Binc {
+
+  //----------------------------------------------------------------------
+  inline std::string toString(int i_in)
+  {
+    char intbuf[16];
+    snprintf(intbuf, sizeof(intbuf), "%d", i_in);
+    return std::string(intbuf);
+  }
+
+  //----------------------------------------------------------------------
+  inline std::string toString(unsigned int i_in)
+  {
+    char intbuf[16];
+    snprintf(intbuf, sizeof(intbuf), "%u", i_in);
+    return std::string(intbuf);
+  }
+
+  //----------------------------------------------------------------------
+  inline std::string toString(unsigned long i_in)
+  {
+    char longbuf[40];
+    snprintf(longbuf, sizeof(longbuf), "%lu", i_in);
+    return std::string(longbuf);
+  }
+
+  //----------------------------------------------------------------------
+  inline std::string toString(const char *i_in)
+  {
+    return std::string(i_in);
+  }
+
+  //----------------------------------------------------------------------
+  inline int atoi(const std::string &s_in)
+  {
+    return ::atoi(s_in.c_str());
+  }
+
+  //----------------------------------------------------------------------
+  inline std::string toHex(const std::string &s)
+  {
+    const char hexchars[] = "0123456789abcdef";
+    std::string tmp;
+    for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) {
+      unsigned char c = (unsigned char)*i;
+      tmp += hexchars[((c & 0xf0) >> 4)];
+      tmp += hexchars[c & 0x0f];
+    }
+    
+    return tmp;
+  }
+
+  //----------------------------------------------------------------------
+  inline std::string fromHex(const std::string &s)
+  {
+    const char hexchars[] = "0123456789abcdef";
+    std::string tmp;
+    for (std::string::const_iterator i = s.begin();
+	 i != s.end() && i + 1 != s.end(); i += 2) {
+      ptrdiff_t n;
+      unsigned char c = *i;
+      unsigned char d = *(i + 1);
+      
+      const char *t;
+      if ((t = strchr(hexchars, c)) == 0)
+	return "out of range";
+      n = (t - hexchars) << 4;
+      
+      
+      if ((t = strchr(hexchars, d)) == 0)
+	return "out of range";
+      n += (t - hexchars);
+      
+      if (n >= 0 && n <= 255)
+	tmp += (char) n;
+      else
+	return "out of range";
+    }
+    
+    return tmp;
+  }
+  
+  //----------------------------------------------------------------------
+  inline std::string toImapString(const std::string &s_in)
+  {
+    for (std::string::const_iterator i = s_in.begin(); i != s_in.end(); ++i) {
+      unsigned char c = (unsigned char)*i;
+      if (c <= 31 || c >= 127 || c == '\"' || c == '\\')
+	return "{" + toString((unsigned long)s_in.length()) + "}\r\n" + s_in;
+    }
+    
+    return "\"" + s_in + "\"";
+  }
+
+  //----------------------------------------------------------------------
+  inline void uppercase(std::string &input)
+  {
+    for (std::string::iterator i = input.begin(); i != input.end(); ++i)
+      *i = toupper(*i);
+  }
+
+  //----------------------------------------------------------------------
+  inline void lowercase(std::string &input)
+  {
+    for (std::string::iterator i = input.begin(); i != input.end(); ++i)
+      *i = tolower(*i);
+  }
+
+  //----------------------------------------------------------------------
+  inline void chomp(std::string &s_in, const std::string &chars = " \t\r\n")
+  {
+    std::string::size_type n = s_in.length();
+    while (n > 1 && chars.find(s_in[n - 1]) != std::string::npos)
+      s_in.resize(n-- - 1);
+  }
+
+  //----------------------------------------------------------------------
+  inline void trim(std::string &s_in, const std::string &chars = " \t\r\n")
+  {
+    while (s_in != "" && chars.find(s_in[0]) != std::string::npos)
+      s_in = s_in.substr(1);
+    chomp(s_in, chars);
+  }
+
+  //----------------------------------------------------------------------
+  inline const std::string unfold(const std::string &a, 
+				  bool removecomment = true)
+  {
+    std::string tmp;
+    bool incomment = false;
+    bool inquotes = false;
+    for (std::string::const_iterator i = a.begin(); i != a.end(); ++i) {
+      unsigned char c = (unsigned char)*i;
+      if (!inquotes && removecomment) {
+	if (c == '(') {
+	  incomment = true; 
+	  tmp += " ";
+	} else if (c == ')') {
+	  incomment = false; 
+	} else if (c != 0x0a && c != 0x0d) {
+	  tmp += *i;
+        }
+      } else if (c != 0x0a && c != 0x0d) {
+	tmp += *i;
+      }
+
+      if (!incomment) {
+        if (*i == '\"') 
+          inquotes = !inquotes;
+      }
+    }
+
+    trim(tmp);
+    return tmp;
+  }
+  
+  //----------------------------------------------------------------------
+  inline void split(const std::string &s_in, const std::string &delim, 
+	     std::vector &dest, bool skipempty = true)
+  {
+    std::string token;
+    for (std::string::const_iterator i = s_in.begin(); i != s_in.end(); ++i) {
+      if (delim.find(*i) != std::string::npos) {
+	if (!skipempty || token != "")
+	  dest.push_back(token);
+	token.clear();
+      } else
+	token += *i;
+    }
+
+    if (token != "")
+      dest.push_back(token);
+  }
+
+  //----------------------------------------------------------------------
+  inline void splitAddr(const std::string &s_in,
+			std::vector &dest, bool skipempty = true)
+  {
+    static const std::string delim = ",";
+    std::string token;
+    bool inquote = false;
+    for (std::string::const_iterator i = s_in.begin(); i != s_in.end(); ++i) {
+      if (inquote && *i == '\"') inquote = false;
+      else if (!inquote && *i == '\"') inquote = true;
+
+      if (!inquote && delim.find(*i) != std::string::npos) {
+	if (!skipempty || token != "")
+	  dest.push_back(token);
+	token.clear();
+      } else
+	token += *i;
+    }
+    if (token != "")
+      dest.push_back(token);
+  }
+
+  //----------------------------------------------------------------------
+  inline std::string toCanonMailbox(const std::string &s_in)
+  {
+    if (s_in.find("..") != std::string::npos) return std::string();
+
+    if (s_in.length() >= 5) {
+      std::string a = s_in.substr(0, 5);
+      uppercase(a);
+      return a == "INBOX" ?
+	a + (s_in.length() > 5 ? s_in.substr(5) : std::string()) : s_in;
+    }
+    
+    return s_in;
+  }
+
+  //------------------------------------------------------------------------
+  inline std::string toRegex(const std::string &s_in, char delimiter)
+  {
+    std::string regex = "^";
+    for (std::string::const_iterator i = s_in.begin(); i != s_in.end(); ++i) {
+      if (*i == '.' || *i == '[' || *i == ']' || *i == '{' || *i == '}' ||
+	  *i == '(' || *i == ')' || *i == '^' || *i == '$' || *i == '?' ||
+	  *i == '+' || *i == '\\') {
+	regex += "\\";
+	regex += *i;
+      } else if (*i == '*')
+	regex += ".*?";
+       else if (*i == '%') {
+        regex += "(\\";
+        regex += delimiter;
+        regex += "){0,1}";
+	regex += "[^\\";
+	regex += delimiter;
+	regex += "]*?";
+      } else regex += *i;
+    }
+    
+    if (regex[regex.length() - 1] == '?')
+      regex[regex.length() - 1] = '$';
+    else
+      regex += "$";
+
+    return regex;
+  }
+
+  //------------------------------------------------------------------------
+  class BincStream {
+  private:
+    std::string nstr;
+
+  public:
+
+    //--
+    BincStream &operator << (std::ostream&(*)(std::ostream&));
+    BincStream &operator << (const std::string &t);
+    BincStream &operator << (unsigned int t);
+    BincStream &operator << (int t);
+    BincStream &operator << (char t);
+
+    //--
+    std::string popString(std::string::size_type size);
+
+    //--
+    char popChar(void);
+    void unpopChar(char c);
+    void unpopStr(const std::string &s);
+
+    //--
+    const std::string &str(void) const;
+
+    //--
+    unsigned int getSize(void) const;
+
+    //--
+    void clear(void);
+
+    //--
+    BincStream(void);
+    ~BincStream(void);
+  };
+}
+
+#endif
diff --git a/src/bincimapmime/mime-inputsource.h b/src/bincimapmime/mime-inputsource.h
new file mode 100644
index 00000000..977d7689
--- /dev/null
+++ b/src/bincimapmime/mime-inputsource.h
@@ -0,0 +1,222 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    src/mime-inputsource.h
+ *  
+ *  Description:
+ *    The base class of the MIME input source
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#ifndef mime_inputsource_h_included
+#define mime_inputsource_h_included
+#include "autoconfig.h"
+// Data source for MIME parser
+
+// Note about large files: we might want to change the unsigned int
+// used for offsets into an off_t for intellectual satisfaction, but
+// in the context of recoll, we could only get into trouble if a
+// *single message* exceeded 2GB, which seems rather unlikely. When
+// parsing a mailbox files, we read each message in memory and use the
+// stream input source (from a memory buffer, no file offsets). When
+// parsing a raw message file, it's only one message.
+
+#include 
+#include "safeunistd.h"
+
+#include 
+
+namespace Binc {
+
+  class MimeInputSource {
+  public:
+    // Note that we do NOT take ownership of fd, won't close it on delete
+    inline MimeInputSource(int fd, unsigned int start = 0);
+    virtual inline ~MimeInputSource(void);
+
+    virtual inline ssize_t fillRaw(char *raw, size_t nbytes);
+    virtual inline void reset(void);
+
+    virtual inline bool fillInputBuffer(void);
+    inline void seek(unsigned int offset);
+    inline bool getChar(char *c);
+    inline void ungetChar(void);
+    inline int getFileDescriptor(void) const;
+
+    inline unsigned int getOffset(void) const;
+
+  private:
+    int fd;
+    char data[16384];
+    unsigned int offset;
+    unsigned int tail;
+    unsigned int head;
+    unsigned int start;
+    char lastChar;
+  };
+
+  inline MimeInputSource::MimeInputSource(int fd, unsigned int start)
+  {
+    this->fd = fd;
+    this->start = start;
+    offset = 0;
+    tail = 0;
+    head = 0;
+    lastChar = '\0';
+    memset(data, '\0', sizeof(data));
+
+    seek(start);
+  }
+
+  inline MimeInputSource::~MimeInputSource(void)
+  {
+  }
+
+  inline ssize_t MimeInputSource::fillRaw(char *raw, size_t nbytes)
+  {
+      return read(fd, raw, nbytes);
+  }
+
+  inline bool MimeInputSource::fillInputBuffer(void)
+  {
+    char raw[4096];
+    ssize_t nbytes = fillRaw(raw, 4096);
+    if (nbytes <= 0) {
+      // FIXME: If ferror(crlffile) we should log this.
+      return false;
+    }
+
+    for (ssize_t i = 0; i < nbytes; ++i) {
+      const char c = raw[i];
+      if (c == '\r') {
+	if (lastChar == '\r') {
+	  data[tail++ & (0x4000-1)] = '\r';
+	  data[tail++ & (0x4000-1)] = '\n';
+	}
+      } else if (c == '\n') {
+	data[tail++ & (0x4000-1)] = '\r';
+	data[tail++ & (0x4000-1)] = '\n';
+      } else {
+	if (lastChar == '\r') {
+	  data[tail++ & (0x4000-1)] = '\r';
+	  data[tail++ & (0x4000-1)] = '\n';
+	}
+
+	data[tail++ & (0x4000-1)] = c;
+      }
+      
+      lastChar = c;
+    }
+
+    return true;
+  }
+
+  inline void MimeInputSource::reset(void)
+  {
+    offset = head = tail = 0;
+    lastChar = '\0';
+
+    if (fd != -1)
+      lseek(fd, 0, SEEK_SET);
+  }
+
+  inline void MimeInputSource::seek(unsigned int seekToOffset)
+  {
+    if (offset > seekToOffset)
+      reset();
+   
+    char c;
+    int n = 0;
+    while (seekToOffset > offset) {
+      if (!getChar(&c))
+	break;
+      ++n;
+    }
+  }
+
+  inline bool MimeInputSource::getChar(char *c)
+  {
+    if (head == tail && !fillInputBuffer())
+      return false;
+
+    *c = data[head++ & (0x4000-1)];
+    ++offset;
+    return true;
+  }
+
+  inline void MimeInputSource::ungetChar()
+  {
+    --head;
+    --offset;
+  }
+
+  inline int MimeInputSource::getFileDescriptor(void) const
+  {
+    return fd;
+  }
+
+  inline unsigned int MimeInputSource::getOffset(void) const
+  {
+    return offset;
+  }
+
+    ///////////////////////////////////
+    class MimeInputSourceStream : public MimeInputSource {
+  public:
+    inline MimeInputSourceStream(istream& s, unsigned int start = 0);
+    virtual inline ssize_t fillRaw(char *raw, size_t nb);
+    virtual inline void reset(void);
+  private:
+      istream& s;
+  };
+
+  inline MimeInputSourceStream::MimeInputSourceStream(istream& si, 
+						      unsigned int start)
+      : MimeInputSource(-1, start), s(si)
+  {
+  }
+
+  inline ssize_t MimeInputSourceStream::fillRaw(char *raw, size_t nb)
+  {
+    // Why can't streams tell how many characters were actually read
+    // when hitting eof ?
+    std::streampos st = s.tellg();
+    s.seekg(0, ios::end);
+    std::streampos lst = s.tellg();
+    s.seekg(st);
+    size_t nbytes = size_t(lst - st);
+    if (nbytes > nb) {
+	nbytes = nb;
+    }
+    if (nbytes <= 0) {
+	return (ssize_t)-1;
+    }
+
+    s.read(raw, nbytes);
+    return static_cast(nbytes);
+  }
+
+  inline void MimeInputSourceStream::reset(void)
+  {
+      MimeInputSource::reset();
+      s.seekg(0);
+  }
+
+}
+
+#endif
diff --git a/src/bincimapmime/mime-parsefull.cc b/src/bincimapmime/mime-parsefull.cc
new file mode 100644
index 00000000..2c81b5a7
--- /dev/null
+++ b/src/bincimapmime/mime-parsefull.cc
@@ -0,0 +1,625 @@
+ /* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    mime-parsefull.cc
+ *  
+ *  Description:
+ *    Implementation of main mime parser components
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#ifndef NO_NAMESPACES
+using namespace ::std;
+#endif /* NO_NAMESPACES */
+
+#include "mime.h"
+#include "mime-utils.h"
+#include "mime-inputsource.h"
+#include "convert.h"
+
+// #define MPF
+#ifdef MPF
+#define MPFDEB(X) fprintf X
+#else
+#define MPFDEB(X)
+#endif
+
+//------------------------------------------------------------------------
+void Binc::MimeDocument::parseFull(int fd)
+{
+  if (allIsParsed)
+    return;
+
+  allIsParsed = true;
+
+  delete doc_mimeSource;
+  doc_mimeSource = new MimeInputSource(fd);
+
+  headerstartoffsetcrlf = 0;
+  headerlength = 0;
+  bodystartoffsetcrlf = 0;
+  bodylength = 0;
+  size = 0;
+  messagerfc822 = false;
+  multipart = false;
+
+  int bsize = 0;
+  string bound;
+  doParseFull(doc_mimeSource, bound, bsize);
+
+  // eat any trailing junk to get the correct size
+  char c;
+  while (doc_mimeSource->getChar(&c));
+
+  size = doc_mimeSource->getOffset();
+}
+
+void Binc::MimeDocument::parseFull(istream& s)
+{
+  if (allIsParsed)
+    return;
+
+  allIsParsed = true;
+
+  delete doc_mimeSource;
+  doc_mimeSource = new MimeInputSourceStream(s);
+
+  headerstartoffsetcrlf = 0;
+  headerlength = 0;
+  bodystartoffsetcrlf = 0;
+  bodylength = 0;
+  size = 0;
+  messagerfc822 = false;
+  multipart = false;
+
+  int bsize = 0;
+  string bound;
+  doParseFull(doc_mimeSource, bound, bsize);
+
+  // eat any trailing junk to get the correct size
+  char c;
+  while (doc_mimeSource->getChar(&c));
+
+  size = doc_mimeSource->getOffset();
+}
+
+//------------------------------------------------------------------------
+bool Binc::MimePart::parseOneHeaderLine(Binc::Header *header, 
+					unsigned int *nlines)
+{
+  using namespace ::Binc;
+  char c;
+  bool eof = false;
+  char cqueue[4];
+  string name;
+  string content;
+
+  while (mimeSource->getChar(&c)) {
+    // If we encounter a \r before we got to the first ':', then
+    // rewind back to the start of the line and assume we're at the
+    // start of the body.
+    if (c == '\r') {
+      for (int i = 0; i < (int) name.length() + 1; ++i)
+	mimeSource->ungetChar();
+      return false;
+    }
+
+    // A colon marks the end of the header name
+    if (c == ':') break;
+
+    // Otherwise add to the header name
+    name += c;
+  }
+
+  cqueue[0] = '\0';
+  cqueue[1] = '\0';
+  cqueue[2] = '\0';
+  cqueue[3] = '\0';
+
+  // Read until the end of the header.
+  bool endOfHeaders = false;
+  while (!endOfHeaders) {
+    if (!mimeSource->getChar(&c)) {
+      eof = true;
+      break;
+    }
+
+    if (c == '\n') ++*nlines;
+
+    for (int i = 0; i < 3; ++i)
+      cqueue[i] = cqueue[i + 1];
+    cqueue[3] = c;
+
+    if (strncmp(cqueue, "\r\n\r\n", 4) == 0) {
+      endOfHeaders = true;
+      break;
+    }
+
+    // If the last character was a newline, and the first now is not
+    // whitespace, then rewind one character and store the current
+    // key,value pair.
+    if (cqueue[2] == '\n' && c != ' ' && c != '\t') {
+      if (content.length() > 2)
+	content.resize(content.length() - 2);
+
+      trim(content);
+      header->add(name, content);
+
+      if (c != '\r') {
+	mimeSource->ungetChar();
+	if (c == '\n') --*nlines;
+	return true;
+      }
+	
+      mimeSource->getChar(&c);
+      return false;
+    }
+
+    content += c;
+  }
+
+  if (name != "") {
+    if (content.length() > 2)
+      content.resize(content.length() - 2);
+    header->add(name, content);
+  }
+
+  return !(eof || endOfHeaders);
+}
+
+//------------------------------------------------------------------------
+void Binc::MimePart::parseHeader(Binc::Header *header, unsigned int *nlines)
+{
+  while (parseOneHeaderLine(header, nlines))
+  { }
+}
+
+//------------------------------------------------------------------------
+void Binc::MimePart::analyzeHeader(Binc::Header *header, bool *multipart,
+				   bool *messagerfc822, string *subtype,
+				   string *boundary)
+{
+  using namespace ::Binc;
+
+  // Do simple parsing of headers to determine the
+  // type of message (multipart,messagerfc822 etc)
+  HeaderItem ctype;
+  if (header->getFirstHeader("content-type", ctype)) {
+    vector types;
+    split(ctype.getValue(), ";", types);
+
+    if (types.size() > 0) {
+      // first element should describe content type
+      string tmp = types[0];
+      trim(tmp);
+      vector v;
+      split(tmp, "/", v);
+      string key, value;
+
+      key = (v.size() > 0) ? v[0] : "text";
+      value = (v.size() > 1) ? v[1] : "plain";
+      lowercase(key);
+
+      if (key == "multipart") {
+	*multipart = true;
+	lowercase(value);
+	*subtype = value;
+      } else if (key == "message") {
+	lowercase(value);
+	if (value == "rfc822")
+	  *messagerfc822 = true;
+      }
+    }
+
+    for (vector::const_iterator i = types.begin();
+	 i != types.end(); ++i) {
+      string element = *i;
+      trim(element);
+
+      if (element.find("=") != string::npos) {
+	string::size_type pos = element.find('=');
+	string key = element.substr(0, pos);
+	string value = element.substr(pos + 1);
+	
+	lowercase(key);
+	trim(key);
+
+	if (key == "boundary") {
+	  trim(value, " \"");
+	  *boundary = value;
+	}
+      }
+    }
+  }
+}
+
+void Binc::MimePart::parseMessageRFC822(vector *members,
+					bool *foundendofpart,
+					unsigned int *bodylength,
+					unsigned int *nbodylines,
+					const string &toboundary)
+{
+  using namespace ::Binc;
+
+  // message rfc822 means a completely enclosed mime document. we
+  // call the parser recursively, and pass on the boundary string
+  // that we got. when parse() finds this boundary, it returns 0. if
+  // it finds the end boundary (boundary + "--"), it returns != 0.
+  MimePart m;
+
+  unsigned int bodystartoffsetcrlf = mimeSource->getOffset();
+    
+  // parsefull returns the number of bytes that need to be removed
+  // from the body because of the terminating boundary string.
+  int bsize = 0;
+  if (m.doParseFull(mimeSource, toboundary, bsize))
+    *foundendofpart = true;
+
+  // make sure bodylength doesn't overflow    
+  *bodylength = mimeSource->getOffset();
+  if (*bodylength >= bodystartoffsetcrlf) {
+    *bodylength -= bodystartoffsetcrlf;
+    if (*bodylength >= (unsigned int) bsize) {
+      *bodylength -= (unsigned int) bsize;
+    } else {
+      *bodylength = 0;
+    }
+  } else {
+    *bodylength = 0;
+  }
+
+  *nbodylines += m.getNofLines();
+
+  members->push_back(m);
+}
+
+bool Binc::MimePart::skipUntilBoundary(const string &delimiter,
+				       unsigned int *nlines, bool *eof)
+{
+  string::size_type endpos = delimiter.length();
+  char *delimiterqueue = 0;
+  string::size_type delimiterpos = 0;
+  const char *delimiterStr = delimiter.c_str();
+  if (delimiter != "") {
+    delimiterqueue = new char[endpos];
+    memset(delimiterqueue, 0, endpos);
+  }
+
+  // first, skip to the first delimiter string. Anything between the
+  // header and the first delimiter string is simply ignored (it's
+  // usually a text message intended for non-mime clients)
+  char c;
+
+  bool foundBoundary = false;
+  for (;;) {    
+    if (!mimeSource->getChar(&c)) {
+      *eof = true;
+      break;
+    }
+
+    if (c == '\n')
+      ++*nlines;
+
+    // if there is no delimiter, we just read until the end of the
+    // file.
+    if (!delimiterqueue)
+      continue;
+
+    delimiterqueue[delimiterpos++] = c;
+    if (delimiterpos ==  endpos)
+      delimiterpos = 0;
+      
+    if (compareStringToQueue(delimiterStr, delimiterqueue,
+			     delimiterpos, int(endpos))) {
+      foundBoundary = true;
+      break;
+    }
+  }
+
+  delete [] delimiterqueue;
+  delimiterqueue = 0;
+
+  return foundBoundary;
+}
+
+// JFD: Things we do after finding a boundary (something like CRLF--somestring)
+// Need to see if this is a final one (with an additional -- at the end),
+// and need to check if it is immediately followed by another boundary 
+// (in this case, we give up our final CRLF in its favour)
+inline void Binc::MimePart::postBoundaryProcessing(bool *eof,
+						   unsigned int *nlines,
+						   int *boundarysize,
+						   bool *foundendofpart)
+{
+    // Read two more characters. This may be CRLF, it may be "--" and
+    // it may be any other two characters.
+    char a = '\0';
+    if (!mimeSource->getChar(&a))
+      *eof = true;
+    if (a == '\n')
+      ++*nlines; 
+
+    char b = '\0';
+    if (!mimeSource->getChar(&b))
+      *eof = true;
+    if (b == '\n')
+      ++*nlines;
+    
+    // If eof, we're done here
+    if (*eof)
+      return;
+
+    // If we find two dashes after the boundary, then this is the end
+    // of boundary marker, and we need to get 2 more chars
+    if (a == '-' && b == '-') {
+      *foundendofpart = true;
+      *boundarysize += 2;
+	
+      if (!mimeSource->getChar(&a))
+	*eof = true;
+      if (a == '\n')
+	++*nlines; 
+	
+      if (!mimeSource->getChar(&b))
+	*eof = true;
+      if (b == '\n')
+	++*nlines;
+    }
+
+    // If the boundary is followed by CRLF, we need to handle the
+    // special case where another boundary line follows
+    // immediately. In this case we consider the CRLF to be part of
+    // the NEXT boundary.
+    if (a == '\r' && b == '\n') {
+      // Get 2 more
+      if (!mimeSource->getChar(&a) || !mimeSource->getChar(&b)) {
+	*eof = true; 
+      } else if (a == '-' && b == '-') {
+	MPFDEB((stderr, "BINC: consecutive delimiters, giving up CRLF\n"));
+	mimeSource->ungetChar();
+	mimeSource->ungetChar();
+	mimeSource->ungetChar();
+	mimeSource->ungetChar();
+      } else {
+	// We unget the 2 chars, and keep our crlf (increasing our own size)
+	MPFDEB((stderr, "BINC: keeping my CRLF\n"));
+	mimeSource->ungetChar();
+	mimeSource->ungetChar();
+	*boundarysize += 2;
+      }
+
+    } else {
+      // Boundary string not followed by CRLF, don't read more and let
+      // others skip the rest. Note that this is allowed but quite uncommon
+      mimeSource->ungetChar();
+      mimeSource->ungetChar();
+    }
+}
+
+void Binc::MimePart::parseMultipart(const string &boundary,
+				    const string &toboundary,
+				    bool *eof,
+				    unsigned int *nlines,
+				    int *boundarysize,
+				    bool *foundendofpart,
+				    unsigned int *bodylength,
+				    vector *members)
+{
+  MPFDEB((stderr, "BINC: ParseMultipart: boundary [%s], toboundary[%s]\n", 
+	  boundary.c_str(),
+	  toboundary.c_str()));
+  using namespace ::Binc;
+  unsigned int bodystartoffsetcrlf = mimeSource->getOffset();
+
+  // multipart parsing starts with skipping to the first
+  // boundary. then we call parse() for all parts. the last parse()
+  // command will return a code indicating that it found the last
+  // boundary of this multipart. Note that the first boundary does
+  // not have to start with CRLF.
+  string delimiter = "--" + boundary;
+
+  skipUntilBoundary(delimiter, nlines, eof);
+
+  if (!eof)
+    *boundarysize = int(delimiter.size());
+
+  postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart);
+
+  // read all mime parts.
+  if (!*foundendofpart && !*eof) {
+    bool quit = false;
+    do {
+      MimePart m;
+
+      // If parseFull returns != 0, then it encountered the multipart's
+      // final boundary.
+      int bsize = 0;
+      if (m.doParseFull(mimeSource, boundary, bsize)) {
+	quit = true;
+	*boundarysize = bsize;
+      }
+
+      members->push_back(m);
+
+    } while (!quit);
+  }
+
+  if (!*foundendofpart && !*eof) {
+    // multipart parsing starts with skipping to the first
+    // boundary. then we call parse() for all parts. the last parse()
+    // command will return a code indicating that it found the last
+    // boundary of this multipart. Note that the first boundary does
+    // not have to start with CRLF.
+    string delimiter = "\r\n--" + toboundary;
+    skipUntilBoundary(delimiter, nlines, eof);
+
+    if (!*eof)
+      *boundarysize = int(delimiter.size());
+
+    postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart);
+  }
+
+  // make sure bodylength doesn't overflow    
+  *bodylength = mimeSource->getOffset();
+  if (*bodylength >= bodystartoffsetcrlf) {
+    *bodylength -= bodystartoffsetcrlf;
+    if (*bodylength >= (unsigned int) *boundarysize) {
+      *bodylength -= (unsigned int) *boundarysize;
+    } else {
+      *bodylength = 0;
+    }
+  } else {
+    *bodylength = 0;
+  }
+  MPFDEB((stderr, "BINC: ParseMultipart return\n"));
+}
+
+void Binc::MimePart::parseSinglePart(const string &toboundary,
+			    int *boundarysize,
+			    unsigned int *nbodylines,
+			    unsigned int *nlines,
+			    bool *eof, bool *foundendofpart,
+			    unsigned int *bodylength)
+{
+  MPFDEB((stderr, "BINC: parseSinglePart, boundary [%s]\n", 
+	  toboundary.c_str()));
+  using namespace ::Binc;
+  unsigned int bodystartoffsetcrlf = mimeSource->getOffset();
+
+  // If toboundary is empty, then we read until the end of the
+  // file. Otherwise we will read until we encounter toboundary.
+  string _toboundary; 
+  if (toboundary != "") {
+    _toboundary = "\r\n--";
+    _toboundary += toboundary;
+  }
+
+  //  if (skipUntilBoundary(_toboundary, nlines, eof))
+  //    *boundarysize = _toboundary.length();
+
+  char *boundaryqueue = 0;
+  size_t endpos = _toboundary.length();
+  if (toboundary != "") {
+    boundaryqueue = new char[endpos];
+    memset(boundaryqueue, 0, endpos);
+  }
+
+  *boundarysize = 0;
+
+  const char *_toboundaryStr = _toboundary.c_str();
+  string line;
+  bool toboundaryIsEmpty = (toboundary == "");
+  char c;
+  string::size_type boundarypos = 0;
+  while (mimeSource->getChar(&c)) {
+    if (c == '\n') { ++*nbodylines; ++*nlines; }
+
+    if (toboundaryIsEmpty)
+      continue;
+
+    // find boundary
+    boundaryqueue[boundarypos++] = c;
+    if (boundarypos == endpos)
+      boundarypos = 0;
+      
+    if (compareStringToQueue(_toboundaryStr, boundaryqueue,
+			     boundarypos, int(endpos))) {
+      *boundarysize = static_cast(_toboundary.length());
+      break;
+    }
+  }
+
+  delete [] boundaryqueue;
+
+  if (toboundary != "") {
+    postBoundaryProcessing(eof, nlines, boundarysize, foundendofpart);
+  } else {
+    // Recoll: in the case of a multipart body with a null
+    // boundary (probably illegal but wtf), eof was not set and
+    // multipart went into a loop until bad alloc.
+    *eof = true;
+  }
+
+  // make sure bodylength doesn't overflow    
+  *bodylength = mimeSource->getOffset();
+  if (*bodylength >= bodystartoffsetcrlf) {
+    *bodylength -= bodystartoffsetcrlf;
+    if (*bodylength >= (unsigned int) *boundarysize) {
+      *bodylength -= (unsigned int) *boundarysize;
+    } else {
+      *bodylength = 0;
+    }
+  } else {
+    *bodylength = 0;
+  }
+  MPFDEB((stderr, "BINC: parseSimple ret: bodylength %d, boundarysize %d\n",
+	  *bodylength, *boundarysize));
+}
+
+//------------------------------------------------------------------------
+int Binc::MimePart::doParseFull(MimeInputSource *ms, const string &toboundary,
+				int &boundarysize)
+{
+  MPFDEB((stderr, "BINC: doParsefull, toboundary[%s]\n", toboundary.c_str()));
+  mimeSource = ms;
+  headerstartoffsetcrlf = mimeSource->getOffset();
+
+  // Parse the header of this mime part.
+  parseHeader(&h, &nlines);
+
+  // Headerlength includes the seperating CRLF. Body starts after the
+  // CRLF.
+  headerlength = mimeSource->getOffset() - headerstartoffsetcrlf;
+  bodystartoffsetcrlf = mimeSource->getOffset();
+  MPFDEB((stderr, "BINC: doParsefull, bodystartoffsetcrlf %d\n", bodystartoffsetcrlf));
+  bodylength = 0;
+
+  // Determine the type of mime part by looking at fields in the
+  // header.
+  analyzeHeader(&h, &multipart, &messagerfc822, &subtype, &boundary);
+
+  bool eof = false;
+  bool foundendofpart = false;
+
+  if (messagerfc822) {
+    parseMessageRFC822(&members, &foundendofpart, &bodylength,
+		       &nbodylines, toboundary);
+
+  } else if (multipart) {
+    parseMultipart(boundary, toboundary, &eof, &nlines, &boundarysize,
+		   &foundendofpart, &bodylength,
+		   &members);
+  } else {
+    parseSinglePart(toboundary, &boundarysize, &nbodylines, &nlines,
+		    &eof, &foundendofpart, &bodylength);
+  }
+
+  MPFDEB((stderr, "BINC: doParsefull ret, toboundary[%s]\n", toboundary.c_str()));
+  return (eof || foundendofpart) ? 1 : 0;
+}
diff --git a/src/bincimapmime/mime-parseonlyheader.cc b/src/bincimapmime/mime-parseonlyheader.cc
new file mode 100644
index 00000000..233cb858
--- /dev/null
+++ b/src/bincimapmime/mime-parseonlyheader.cc
@@ -0,0 +1,189 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    mime-parseonlyheader.cc
+ *  
+ *  Description:
+ *    Implementation of main mime parser components
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#include "mime.h"
+#include "mime-utils.h"
+#include "mime-inputsource.h"
+#include "convert.h"
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+
+#ifndef NO_NAMESPACES
+using namespace ::std;
+#endif /* NO_NAMESPACES */
+
+//------------------------------------------------------------------------
+void Binc::MimeDocument::parseOnlyHeader(int fd)
+{
+  if (allIsParsed || headerIsParsed)
+    return;
+  
+  headerIsParsed = true;
+
+  delete doc_mimeSource;
+  doc_mimeSource = new MimeInputSource(fd);
+
+  headerstartoffsetcrlf = 0;
+  headerlength = 0;
+  bodystartoffsetcrlf = 0;
+  bodylength = 0;
+  messagerfc822 = false;
+  multipart = false;
+
+  nlines = 0;
+  nbodylines = 0;
+
+  doParseOnlyHeader(doc_mimeSource, "");
+}
+
+void Binc::MimeDocument::parseOnlyHeader(istream& s)
+{
+  if (allIsParsed || headerIsParsed)
+    return;
+  
+  headerIsParsed = true;
+
+  delete doc_mimeSource;
+  doc_mimeSource = new MimeInputSourceStream(s);
+
+  headerstartoffsetcrlf = 0;
+  headerlength = 0;
+  bodystartoffsetcrlf = 0;
+  bodylength = 0;
+  messagerfc822 = false;
+  multipart = false;
+
+  nlines = 0;
+  nbodylines = 0;
+
+  doParseOnlyHeader(doc_mimeSource, "");
+}
+
+//------------------------------------------------------------------------
+int Binc::MimePart::doParseOnlyHeader(MimeInputSource *ms, 
+				      const string &toboundary)
+{
+  mimeSource = ms;
+  string name;
+  string content;
+  char cqueue[4];
+  memset(cqueue, 0, sizeof(cqueue));
+
+  headerstartoffsetcrlf = mimeSource->getOffset();
+
+  bool quit = false;
+  char c = '\0';
+
+  while (!quit) {
+    // read name
+    while (1) {
+      if (!mimeSource->getChar(&c)) {
+	quit = true;
+	break;
+      }
+
+      if (c == '\n') ++nlines;
+      if (c == ':') break;
+      if (c == '\n') {
+    for (int i = int(name.length()) - 1; i >= 0; --i)
+	  mimeSource->ungetChar();
+
+	quit = true;
+	name.clear();
+	break;
+      }
+
+      name += c;
+
+      if (name.length() == 2 && name.substr(0, 2) == "\r\n") {
+	name.clear();
+	quit = true;
+	break;
+      }
+    }
+
+    if (name.length() == 1 && name[0] == '\r') {
+      name.clear();
+      break;
+    }
+
+    if (quit) break;
+
+    while (!quit) {
+      if (!mimeSource->getChar(&c)) {
+	quit = true;
+	break;
+      }
+
+      if (c == '\n') ++nlines;
+
+      for (int i = 0; i < 3; ++i)
+	cqueue[i] = cqueue[i + 1];
+      cqueue[3] = c;
+
+      if (strncmp(cqueue, "\r\n\r\n", 4) == 0) {
+	quit = true;
+	break;
+      }
+
+      if (cqueue[2] == '\n') {
+
+	// guess the mime rfc says what can not appear on the beginning
+	// of a line.
+	if (!isspace(cqueue[3])) {
+	  if (content.length() > 2)
+	    content.resize(content.length() - 2);
+
+	  trim(content);
+	  h.add(name, content);
+
+	  name = c;
+	  content.clear();
+	  break;
+	}
+      }
+
+      content += c;
+    }
+  }
+
+  if (name != "") {
+    if (content.length() > 2)
+      content.resize(content.length() - 2);
+    h.add(name, content);
+  }
+
+  headerlength = mimeSource->getOffset() - headerstartoffsetcrlf;
+
+  return 1;
+}
diff --git a/src/bincimapmime/mime-printbody.cc b/src/bincimapmime/mime-printbody.cc
new file mode 100644
index 00000000..6f8268f6
--- /dev/null
+++ b/src/bincimapmime/mime-printbody.cc
@@ -0,0 +1,52 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    mime-printbody.cc
+ *  
+ *  Description:
+ *    Implementation of main mime parser components
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+
+#include "mime.h"
+#include "mime-utils.h"
+#include "mime-inputsource.h"
+
+#include 
+
+using namespace ::std;
+
+void Binc::MimePart::getBody(string &s,
+			     unsigned int startoffset,
+			     unsigned int length) const
+{
+  mimeSource->reset();
+  mimeSource->seek(bodystartoffsetcrlf + startoffset);
+  s.reserve(length);
+  if (startoffset + length > bodylength)
+    length = bodylength - startoffset;
+
+  char c = '\0';
+  for (unsigned int i = 0; i < length; ++i) {
+    if (!mimeSource->getChar(&c))
+      break;
+
+    s += (char)c;
+  }
+}
diff --git a/src/bincimapmime/mime-utils.h b/src/bincimapmime/mime-utils.h
new file mode 100644
index 00000000..93b5707f
--- /dev/null
+++ b/src/bincimapmime/mime-utils.h
@@ -0,0 +1,50 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    mime.cc
+ *  
+ *  Description:
+ *    Implementation of main mime parser components
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#ifndef mime_utils_h_included
+#define mime_utils_h_included
+#include 
+#include 
+#include 
+#include 
+
+#ifndef NO_NAMESPACES
+using namespace ::std;
+#endif /* NO_NAMESPACES */
+
+inline bool compareStringToQueue(const char *s_in, char *bqueue,
+				 int pos, int size)
+{
+  for (int i = 0; i < size; ++i)  {
+    if (s_in[i] != bqueue[pos])
+      return false;
+    if (++pos == size)
+      pos = 0;
+  }
+
+  return true;
+}
+
+#endif
diff --git a/src/bincimapmime/mime.cc b/src/bincimapmime/mime.cc
new file mode 100644
index 00000000..7b1ba842
--- /dev/null
+++ b/src/bincimapmime/mime.cc
@@ -0,0 +1,164 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    mime.cc
+ *  
+ *  Description:
+ *    Implementation of main mime parser components
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#ifndef NO_NAMESPACES
+using namespace ::std;
+#endif /* NO_NAMESPACES */
+
+
+#include "mime.h"
+#include "convert.h"
+#include "mime-inputsource.h"
+
+//------------------------------------------------------------------------
+Binc::MimeDocument::MimeDocument(void)
+{
+  allIsParsed = false;
+  headerIsParsed = false;
+  doc_mimeSource = 0;
+}
+
+//------------------------------------------------------------------------
+Binc::MimeDocument::~MimeDocument(void)
+{
+  delete doc_mimeSource;
+  doc_mimeSource = 0;
+}
+
+//------------------------------------------------------------------------
+void Binc::MimeDocument::clear(void)
+{
+  members.clear();
+  h.clear();
+  headerIsParsed = false;
+  allIsParsed = false;
+  delete doc_mimeSource;
+  doc_mimeSource = 0;
+}
+
+//------------------------------------------------------------------------
+void Binc::MimePart::clear(void)
+{
+  members.clear();
+  h.clear();
+  mimeSource = 0;
+}
+
+//------------------------------------------------------------------------
+Binc::MimePart::MimePart(void)
+{
+  size = 0;
+  messagerfc822 = false;
+  multipart = false;
+
+  nlines = 0;
+  nbodylines = 0;
+  mimeSource = 0;
+}
+
+//------------------------------------------------------------------------
+Binc::MimePart::~MimePart(void)
+{
+}
+
+//------------------------------------------------------------------------
+Binc::HeaderItem::HeaderItem(void)
+{
+}
+
+//------------------------------------------------------------------------
+Binc::HeaderItem::HeaderItem(const string &key, const string &value)
+{
+  this->key = key;
+  this->value = value;
+}
+
+//------------------------------------------------------------------------
+Binc::Header::Header(void)
+{
+}
+
+//------------------------------------------------------------------------
+Binc::Header::~Header(void)
+{
+}
+
+//------------------------------------------------------------------------
+bool Binc::Header::getFirstHeader(const string &key, HeaderItem &dest) const
+{
+  string k = key;
+  lowercase(k);
+
+  for (vector::const_iterator i = content.begin();
+       i != content.end(); ++i) {
+    string tmp = (*i).getKey();
+    lowercase(tmp);
+
+    if (tmp == k) {
+      dest = *i;
+      return true;
+    }
+  }
+  return false;
+}
+
+//------------------------------------------------------------------------
+bool Binc::Header::getAllHeaders(const string &key, vector &dest) const
+{
+  string k = key;
+  lowercase(k);
+
+  for (vector::const_iterator i = content.begin();
+       i != content.end(); ++i) {
+    string tmp = (*i).getKey();
+    lowercase(tmp);
+    if (tmp == k)
+      dest.push_back(*i);
+  }
+
+  return (dest.size() != 0);
+}
+
+//------------------------------------------------------------------------
+void Binc::Header::clear(void)
+{
+  content.clear();
+}
+
+//------------------------------------------------------------------------
+void Binc::Header::add(const string &key, const string &value)
+{
+  content.push_back(HeaderItem(key, value));
+}
diff --git a/src/bincimapmime/mime.h b/src/bincimapmime/mime.h
new file mode 100644
index 00000000..d047c917
--- /dev/null
+++ b/src/bincimapmime/mime.h
@@ -0,0 +1,187 @@
+/* -*- mode:c++;c-basic-offset:2 -*- */
+/*  --------------------------------------------------------------------
+ *  Filename:
+ *    src/parsers/mime/mime.h
+ *  
+ *  Description:
+ *    Declaration of main mime parser components
+ *  --------------------------------------------------------------------
+ *  Copyright 2002-2005 Andreas Aardal Hanssen
+ *
+ *  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 Street #330, Boston, MA 02111-1307, USA.
+ *  --------------------------------------------------------------------
+ */
+#ifndef mime_h_included
+#define mime_h_included
+#include 
+#include 
+#include 
+#include 
+
+namespace Binc {
+
+  class MimeInputSource;
+
+
+  //---------------------------------------------------------------------- 
+  class HeaderItem {
+  private:
+    mutable std::string key;
+    mutable std::string value;
+
+  public:
+    inline const std::string &getKey(void) const { return key; }
+    inline const std::string &getValue(void) const { return value; }
+
+    //--
+    HeaderItem(void);
+    HeaderItem(const std::string &key, const std::string &value);
+  };
+
+  //---------------------------------------------------------------------- 
+  class Header {
+  private:
+    mutable std::vector content;
+
+  public:
+    bool getFirstHeader(const std::string &key, HeaderItem &dest) const;
+    bool getAllHeaders(const std::string &key, std::vector &dest) const;
+    void add(const std::string &name, const std::string &content);
+    void clear(void);
+
+    //--
+    Header(void);
+    ~Header(void);
+  };
+
+  //----------------------------------------------------------------------
+  class IODevice;
+  class MimeDocument;
+  class MimePart {
+  protected:
+  public:
+    mutable bool multipart;
+    mutable bool messagerfc822;
+    mutable std::string subtype;
+    mutable std::string boundary;
+
+    mutable unsigned int headerstartoffsetcrlf;
+    mutable unsigned int headerlength;
+
+    mutable unsigned int bodystartoffsetcrlf;
+    mutable unsigned int bodylength;
+    mutable unsigned int nlines;
+    mutable unsigned int nbodylines;
+    mutable unsigned int size;
+
+  public:
+    enum FetchType {
+      FetchBody,
+      FetchHeader,
+      FetchMime
+    };
+
+    mutable Header h;
+
+    mutable std::vector members;
+
+    inline const std::string &getSubType(void) const { return subtype; }
+    inline bool isMultipart(void) const { return multipart; }
+    inline bool isMessageRFC822(void) const { return messagerfc822; }
+    inline unsigned int getSize(void) const { return bodylength; }
+    inline unsigned int getNofLines(void) const { return nlines; }
+    inline unsigned int getNofBodyLines(void) const { return nbodylines; }
+    inline unsigned int getBodyLength(void) const { return bodylength; }
+    inline unsigned int getBodyStartOffset(void) const { return bodystartoffsetcrlf; }
+
+    void printBody(Binc::IODevice &output, unsigned int startoffset, unsigned int length) const;
+      void getBody(std::string& s, unsigned int startoffset, unsigned int length) const;
+    virtual void clear(void);
+
+    virtual int doParseOnlyHeader(MimeInputSource *ms, 
+				  const std::string &toboundary);
+    virtual int doParseFull(MimeInputSource *ms, 
+			    const std::string &toboundary, int &boundarysize);
+
+    MimePart(void);
+    virtual ~MimePart(void);
+
+  private:
+    MimeInputSource *mimeSource;
+
+    bool parseOneHeaderLine(Binc::Header *header, unsigned int *nlines);
+
+    bool skipUntilBoundary(const std::string &delimiter,
+			   unsigned int *nlines, bool *eof);
+    inline void postBoundaryProcessing(bool *eof,
+				       unsigned int *nlines,
+				       int *boundarysize,
+				       bool *foundendofpart);
+      void parseMultipart(const std::string &boundary,
+			   const std::string &toboundary,
+			   bool *eof,
+			   unsigned int *nlines,
+			   int *boundarysize,
+			   bool *foundendofpart,
+			   unsigned int *bodylength,
+			  std::vector *members);
+      void parseSinglePart(const std::string &toboundary,
+			    int *boundarysize,
+			    unsigned int *nbodylines,
+			    unsigned int *nlines,
+			    bool *eof, bool *foundendofpart,
+			   unsigned int *bodylength);
+    void parseHeader(Binc::Header *header, unsigned int *nlines);
+    void analyzeHeader(Binc::Header *header, bool *multipart,
+		       bool *messagerfc822, std::string *subtype,
+		       std::string *boundary);
+    void parseMessageRFC822(std::vector *members,
+			    bool *foundendofpart,
+			    unsigned int *bodylength,
+			    unsigned int *nbodylines,
+			    const std::string &toboundary);
+  };
+
+  //----------------------------------------------------------------------
+  class MimeDocument : public MimePart {
+  public:
+    MimeDocument(void);
+    ~MimeDocument(void);
+
+    void parseOnlyHeader(int fd);
+    void parseFull(int fd);
+    void parseOnlyHeader(std::istream& s);
+    void parseFull(std::istream& s);
+
+    void clear(void);
+    
+    bool isHeaderParsed(void) const 
+    {
+      return headerIsParsed; 
+    }
+    bool isAllParsed(void) const 
+    { 
+      return allIsParsed; 
+    }
+
+  private:
+    bool headerIsParsed;
+    bool allIsParsed;
+    MimeInputSource *doc_mimeSource;
+  };
+
+};
+
+#endif
diff --git a/src/bincimapmime/trbinc.cc b/src/bincimapmime/trbinc.cc
new file mode 100644
index 00000000..fe2db3d1
--- /dev/null
+++ b/src/bincimapmime/trbinc.cc
@@ -0,0 +1,126 @@
+/* Copyright (C) 2006 J.F.Dockes
+ *   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.
+ */
+
+#include 
+#include 
+#include 
+#include "safefcntl.h"
+#include "safeunistd.h"
+#include 
+
+#include 
+
+#ifndef NO_NAMESPACES
+using namespace std;
+#endif /* NO_NAMESPACES */
+
+#include "mime.h"
+
+static char *thisprog;
+
+static char usage [] =
+    "trbinc  \n\n"
+    ;
+static void
+Usage(void)
+{
+    fprintf(stderr, "%s: usage:\n%s", thisprog, usage);
+    exit(1);
+}
+
+static int     op_flags;
+#define OPT_MOINS 0x1
+#define OPT_s	  0x2 
+#define OPT_b	  0x4 
+
+#define DEFCOUNT 10
+
+const char *hnames[] = {"Subject", "Content-type"};
+int nh = sizeof(hnames) / sizeof(char *);
+
+int main(int argc, char **argv)
+{
+    int count = DEFCOUNT;
+    
+    thisprog = argv[0];
+    argc--; argv++;
+
+    while (argc > 0 && **argv == '-') {
+	(*argv)++;
+	if (!(**argv))
+	    /* Cas du "adb - core" */
+	    Usage();
+	while (**argv)
+	    switch (*(*argv)++) {
+	    case 's':	op_flags |= OPT_s; break;
+	    case 'b':	op_flags |= OPT_b; if (argc < 2)  Usage();
+		if ((sscanf(*(++argv), "%d", &count)) != 1) 
+		    Usage(); 
+		argc--; 
+		goto b1;
+	    default: Usage();	break;
+	    }
+    b1: argc--; argv++;
+    }
+
+    if (argc != 1)
+	Usage();
+
+    char *mfile = *argv++;argc--;
+    int fd;
+    if ((fd = open(mfile, 0)) < 0) {
+	perror("Opening");
+	exit(1);
+    }
+    Binc::MimeDocument doc;
+
+#if 0
+    doc.parseFull(fd);
+#else
+    char *cp;
+    int size = lseek(fd, 0, SEEK_END);
+    lseek(fd, 0, 0);
+    fprintf(stderr, "Size: %d\n", size);
+    cp = (char *)malloc(size);
+    if (cp==0) {
+	fprintf(stderr, "Malloc %d failed\n", size);
+	exit(1);
+    }
+    int n;
+    if ((n=read(fd, cp, size)) != size) {
+	fprintf(stderr, "Read failed: requested %d, got %d\n", size, n);
+	exit(1);
+    }
+    std::stringstream s(string(cp, size), ios::in);
+    doc.parseFull(s);
+#endif
+
+    if (!doc.isHeaderParsed() && !doc.isAllParsed()) {
+	fprintf(stderr, "Parse error\n");
+	exit(1);
+    }
+    close(fd);
+    Binc::HeaderItem hi;
+    for (int i = 0; i < nh ; i++) {
+	if (!doc.h.getFirstHeader(hnames[i], hi)) {
+	    fprintf(stderr, "No %s\n", hnames[i]);
+	    exit(1);
+	}
+	printf("%s: %s\n", hnames[i], hi.getValue().c_str());
+    }
+    exit(0);
+}
diff --git a/src/common/Makefile b/src/common/Makefile
new file mode 100644
index 00000000..c30268bc
--- /dev/null
+++ b/src/common/Makefile
@@ -0,0 +1,33 @@
+
+PROGS = unacpp textsplit rclconfig syngroups
+
+all: $(PROGS) 
+
+UNACPP_OBJS= trunacpp.o
+unacpp : $(UNACPP_OBJS)
+	$(CXX) $(ALL_CXXFLAGS) -o unacpp $(UNACPP_OBJS) $(LIBRECOLL)
+trunacpp.o : unacpp.cpp unacpp.h
+	$(CXX) $(ALL_CXXFLAGS) -DTEST_UNACPP -c -o trunacpp.o unacpp.cpp
+
+TEXTSPLIT_OBJS= trtextsplit.o  
+textsplit : $(TEXTSPLIT_OBJS)
+	$(CXX) $(ALL_CXXFLAGS) -o textsplit $(TEXTSPLIT_OBJS) $(LIBRECOLL)
+trtextsplit.o : textsplit.cpp 
+	$(CXX) $(ALL_CXXFLAGS) -DTEST_TEXTSPLIT -c -o trtextsplit.o \
+	       textsplit.cpp
+
+RCLCONFIG_OBJS= trrclconfig.o 
+rclconfig : $(RCLCONFIG_OBJS) 
+	$(CXX) $(ALL_CXXFLAGS) -o rclconfig $(RCLCONFIG_OBJS) $(LIBRECOLL) 
+trrclconfig.o : rclconfig.cpp 
+	$(CXX) $(ALL_CXXFLAGS) -DTEST_RCLCONFIG -c -o trrclconfig.o \
+	       rclconfig.cpp
+
+SYNGROUPS_OBJS= trsyngroups.o 
+syngroups : $(SYNGROUPS_OBJS) 
+	$(CXX) $(ALL_CXXFLAGS) -o syngroups $(SYNGROUPS_OBJS) $(LIBRECOLL) 
+trsyngroups.o : syngroups.cpp 
+	$(CXX) $(ALL_CXXFLAGS) -DTEST_SYNGROUPS -c -o trsyngroups.o \
+	       syngroups.cpp
+
+include ../utils/utmkdefs.mk
diff --git a/src/common/autoconfig-win.h b/src/common/autoconfig-win.h
new file mode 100644
index 00000000..03a9c8a4
--- /dev/null
+++ b/src/common/autoconfig-win.h
@@ -0,0 +1,186 @@
+/* Manually edited version of autoconfig.h for windows. Many things are
+overriden in the c++ code by ifdefs _WIN32 anyway  */
+#ifndef _AUTOCONFIG_H_INCLUDED
+#define _AUTOCONFIG_H_INCLUDED
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* Path to the aspell api include file */
+/* #undef ASPELL_INCLUDE "aspell-local.h" */
+
+/* Path to the aspell program */
+/* #define ASPELL_PROG "/usr/bin/aspell" */
+
+/* No X11 session monitoring support */
+#define DISABLE_X11MON
+
+/* Path to the fam api include file */
+/* #undef FAM_INCLUDE */
+
+/* Path to the file program */
+#define FILE_PROG "/usr/bin/file"
+
+/* "Have C++0x" */
+#define HAVE_CXX0X_UNORDERED 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#define HAVE_LIBDL 1
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if you have the `z' library (-lz). */
+#define HAVE_LIBZ 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mkdtemp' function. */
+/* #undef HAVE_MKDTEMP */
+
+/* Define to 1 if you have the `posix_spawn,' function. */
+/* #undef HAVE_POSIX_SPAWN_ */
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Has std::shared_ptr */
+#define HAVE_SHARED_PTR_STD
+
+/* Has std::tr1::shared_ptr */
+/* #undef HAVE_SHARED_PTR_TR1 */
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_SPAWN_H 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the  header file. */
+/* #undef HAVE_SYS_MOUNT_H */
+
+/* Define to 1 if you have the  header file. */
+/* #undef HAVE_SYS_PARAM_H_ */
+
+/* Define to 1 if you have the  header file. */
+/* #undef HAVE_SYS_STATFS_H */
+
+/* Define to 1 if you have the  header file. */
+/* #undef HAVE_SYS_STATVFS_H */
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the  header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the  header file. */
+/* #undef HAVE_SYS_VFS_H */
+
+/* "Have tr1" */
+/* #undef HAVE_TR1_UNORDERED */
+
+/* Define to 1 if you have the  header file. */
+/* #undef HAVE_UNISTD_H */
+
+/* Use multiple threads for indexing */
+#define IDX_THREADS 1
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "Recoll"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "Recoll 1.22.0"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "recoll"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.22.0"
+
+/* putenv parameter is const */
+/* #undef PUTENV_ARG_CONST */
+
+/* iconv parameter 2 is const char** */
+#define RCL_ICONV_INBUF_CONST 1
+
+/* Real time monitoring option */
+#undef RCL_MONITOR
+
+/* Split camelCase words */
+/* #undef RCL_SPLIT_CAMELCASE */
+
+/* Compile the aspell interface */
+/* #undef RCL_USE_ASPELL */
+
+/* Compile the fam interface */
+/* #undef RCL_USE_FAM */
+
+/* Compile the inotify interface */
+#define RCL_USE_INOTIFY 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Use posix_spawn() */
+/* #undef USE_POSIX_SPAWN */
+
+/* Enable using the system's 'file' command to id mime if we fail internally
+   */
+/* #undef USE_SYSTEM_FILE_COMMAND */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* #  undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to 1 if the X Window System is missing or not being used. */
+/* #undef X_DISPLAY_MISSING */
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+#define DISABLE_WEB_INDEXER
+
+#include "conf_post.h"
+#endif // already included
diff --git a/src/common/autoconfig.h.in b/src/common/autoconfig.h.in
new file mode 100644
index 00000000..e6ced0ff
--- /dev/null
+++ b/src/common/autoconfig.h.in
@@ -0,0 +1,181 @@
+/* common/autoconfig.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Path to the aspell api include file */
+#undef ASPELL_INCLUDE
+
+/* Path to the aspell program */
+#undef ASPELL_PROG
+
+/* No X11 session monitoring support */
+#undef DISABLE_X11MON
+
+/* Path to the fam api include file */
+#undef FAM_INCLUDE
+
+/* Path to the file program */
+#undef FILE_PROG
+
+/* "Have C++0x" */
+#undef HAVE_CXX0X_UNORDERED
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+#undef HAVE_LIBDL
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
+/* Define to 1 if you have the `z' library (-lz). */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkdtemp' function. */
+#undef HAVE_MKDTEMP
+
+/* Define to 1 if you have the `posix_spawn,' function. */
+#undef HAVE_POSIX_SPAWN_
+
+/* Define to 1 if you have the `setrlimit' function. */
+#undef HAVE_SETRLIMIT
+
+/* Has std::shared_ptr */
+#undef HAVE_SHARED_PTR_STD
+
+/* Has std::tr1::shared_ptr */
+#undef HAVE_SHARED_PTR_TR1
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SPAWN_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_MOUNT_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_PARAM_H_
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_STATFS_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_STATVFS_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_SYS_VFS_H
+
+/* "Have tr1" */
+#undef HAVE_TR1_UNORDERED
+
+/* Define to 1 if you have the  header file. */
+#undef HAVE_UNISTD_H
+
+/* Use multiple threads for indexing */
+#undef IDX_THREADS
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* putenv parameter is const */
+#undef PUTENV_ARG_CONST
+
+/* iconv parameter 2 is const char** */
+#undef RCL_ICONV_INBUF_CONST
+
+/* Real time monitoring option */
+#undef RCL_MONITOR
+
+/* Split camelCase words */
+#undef RCL_SPLIT_CAMELCASE
+
+/* Compile the aspell interface */
+#undef RCL_USE_ASPELL
+
+/* Compile the fam interface */
+#undef RCL_USE_FAM
+
+/* Compile the inotify interface */
+#undef RCL_USE_INOTIFY
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Use posix_spawn() */
+#undef USE_POSIX_SPAWN
+
+/* Enable using the system's 'file' command to id mime if we fail internally
+   */
+#undef USE_SYSTEM_FILE_COMMAND
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+#include "conf_post.h"
diff --git a/src/common/beaglequeuecache.cpp b/src/common/beaglequeuecache.cpp
new file mode 100644
index 00000000..99b165b5
--- /dev/null
+++ b/src/common/beaglequeuecache.cpp
@@ -0,0 +1,95 @@
+/* Copyright (C) 2011 J.F.Dockes
+ *   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.
+ */
+
+#include "autoconfig.h"
+
+#include "cstr.h"
+#include "beaglequeuecache.h"
+#include "circache.h"
+#include "debuglog.h"
+#include "rclconfig.h"
+#include "pathut.h"
+#include "rcldoc.h"
+
+const string cstr_bgc_mimetype("mimetype");
+
+BeagleQueueCache::BeagleQueueCache(RclConfig *cnf) 
+{
+    string ccdir;
+    cnf->getConfParam("webcachedir", ccdir);
+    if (ccdir.empty())
+        ccdir = "webcache";
+    ccdir = path_tildexpand(ccdir);
+    // If not an absolute path, compute relative to config dir
+    if (!path_isabsolute(ccdir))
+        ccdir = path_cat(cnf->getConfDir(), ccdir);
+
+    int maxmbs = 40;
+    cnf->getConfParam("webcachemaxmbs", &maxmbs);
+    if ((m_cache = new CirCache(ccdir)) == 0) {
+	LOGERR(("BeagleQueueCache: cant create CirCache object\n"));
+	return;
+    }
+    if (!m_cache->create(off_t(maxmbs)*1000*1024, CirCache::CC_CRUNIQUE)) {
+	LOGERR(("BeagleQueueCache: cache file creation failed: %s\n",
+		m_cache->getReason().c_str()));
+	delete m_cache;
+	m_cache = 0;
+	return;
+    }
+}
+
+BeagleQueueCache::~BeagleQueueCache()
+{
+    delete m_cache;
+}
+
+// Read  document from cache. Return the metadata as an Rcl::Doc
+// @param htt Beagle Hit Type 
+bool BeagleQueueCache::getFromCache(const string& udi, Rcl::Doc &dotdoc, 
+				    string& data, string *htt)
+{
+    string dict;
+
+    if (m_cache == 0) {
+	LOGERR(("BeagleQueueCache::getFromCache: cache is null\n"));
+	return false;
+    }
+    if (!m_cache->get(udi, dict, data)) {
+	LOGDEB(("BeagleQueueCache::getFromCache: get failed\n"));
+	return false;
+    }
+
+    ConfSimple cf(dict, 1);
+    
+    if (htt)
+        cf.get(Rcl::Doc::keybght, *htt, cstr_null);
+
+    // Build a doc from saved metadata 
+    cf.get(cstr_url, dotdoc.url, cstr_null);
+    cf.get(cstr_bgc_mimetype, dotdoc.mimetype, cstr_null);
+    cf.get(cstr_fmtime, dotdoc.fmtime, cstr_null);
+    cf.get(cstr_fbytes, dotdoc.pcbytes, cstr_null);
+    dotdoc.sig.clear();
+    vector names = cf.getNames(cstr_null);
+    for (vector::const_iterator it = names.begin();
+         it != names.end(); it++) {
+        cf.get(*it, dotdoc.meta[*it], cstr_null);
+    }
+    dotdoc.meta[Rcl::Doc::keyudi] = udi;
+    return true;
+}
diff --git a/src/common/beaglequeuecache.h b/src/common/beaglequeuecache.h
new file mode 100644
index 00000000..5297d61c
--- /dev/null
+++ b/src/common/beaglequeuecache.h
@@ -0,0 +1,50 @@
+/* Copyright (C) 2009 J.F.Dockes
+ *   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.
+ */
+#ifndef _beaglequeuecache_h_included_
+#define _beaglequeuecache_h_included_
+
+#include 
+using std::string;
+
+class RclConfig;
+namespace Rcl {
+    class Db;
+    class Doc;
+}
+class CirCache;
+
+/**
+ * Manage the CirCache for the Beagle Queue indexer. Separated from the main
+ * indexer code because it's also used for querying (getting the data for a
+ * preview 
+ */
+class BeagleQueueCache {
+public:
+    BeagleQueueCache(RclConfig *config);
+    ~BeagleQueueCache();
+
+    bool getFromCache(const string& udi, Rcl::Doc &doc, string& data,
+                      string *hittype = 0);
+    // We could write proxies for all the circache ops, but why bother?
+    CirCache *cc() {return m_cache;}
+
+private:
+    CirCache *m_cache;
+};
+extern const string cstr_bgc_mimetype;
+
+#endif /* _beaglequeuecache_h_included_ */
diff --git a/src/common/conf_post.h b/src/common/conf_post.h
new file mode 100644
index 00000000..6c552d63
--- /dev/null
+++ b/src/common/conf_post.h
@@ -0,0 +1,80 @@
+#ifdef  HAVE_CXX0X_UNORDERED
+#  define UNORDERED_MAP_INCLUDE 
+#  define UNORDERED_SET_INCLUDE 
+#  define STD_UNORDERED_MAP std::unordered_map
+#  define STD_UNORDERED_SET std::unordered_set
+#elif defined(HAVE_TR1_UNORDERED)
+#  define UNORDERED_MAP_INCLUDE 
+#  define UNORDERED_SET_INCLUDE 
+#  define STD_UNORDERED_MAP std::tr1::unordered_map
+#  define STD_UNORDERED_SET std::tr1::unordered_set
+#else
+#  define UNORDERED_MAP_INCLUDE 
+#  define UNORDERED_SET_INCLUDE 
+#  define STD_UNORDERED_MAP std::map
+#  define STD_UNORDERED_SET std::set
+#endif
+
+#ifdef HAVE_SHARED_PTR_STD
+#  define MEMORY_INCLUDE 
+#  define STD_SHARED_PTR    std::shared_ptr
+#elif defined(HAVE_SHARED_PTR_TR1)
+#  define MEMORY_INCLUDE 
+#  define STD_SHARED_PTR    std::tr1::shared_ptr
+#else
+#  define MEMORY_INCLUDE "refcntr.h"
+#  define STD_SHARED_PTR    RefCntr
+#endif
+
+#ifdef _WIN32
+#include "safewindows.h"
+
+#undef RCL_ICONV_INBUF_CONST
+
+#ifdef _MSC_VER
+// gmtime is supposedly thread-safe on windows
+#define gmtime_r(A, B) gmtime(A)
+#define localtime_r(A,B) localtime(A)
+typedef int mode_t;
+#define fseeko _fseeki64
+#define ftello (off_t)_ftelli64
+#define ftruncate _chsize_s
+#define PATH_MAX MAX_PATH
+#define RCL_ICONV_INBUF_CONST 1
+#define HAVE_STRUCT_TIMESPEC
+#define strdup _strdup
+#define timegm _mkgmtime
+
+#else // End _MSC_VER -> Gminw
+
+#define timegm portable_timegm
+
+#undef RCL_ICONV_INBUF_CONST
+
+#endif // GMinw only
+
+typedef int pid_t;
+inline int readlink(const char *cp, void *buf, int cnt) {
+	return -1;
+}
+
+#define MAXPATHLEN PATH_MAX
+typedef DWORD32 u_int32_t;
+typedef DWORD64 u_int64_t;
+typedef unsigned __int8 u_int8_t;
+typedef int ssize_t;
+#define strncasecmp _strnicmp
+#define strcasecmp _stricmp
+#define chdir _chdir
+
+#define R_OK 4
+#define W_OK 2
+#ifndef X_OK
+#define X_OK 4
+#endif
+#define RECOLL_DATADIR "C:\\recoll\\"
+#define S_ISLNK(X) false
+#define lstat stat
+#endif
+
+
diff --git a/src/common/cstr.cpp b/src/common/cstr.cpp
new file mode 100644
index 00000000..0119e809
--- /dev/null
+++ b/src/common/cstr.cpp
@@ -0,0 +1,6 @@
+
+#include "cstr.h"
+#define RCLIN_CSTR_CPPFILE
+#undef _CSTR_H_INCLUDED_
+#include "cstr.h"
+
diff --git a/src/common/cstr.h b/src/common/cstr.h
new file mode 100644
index 00000000..c3c55ca1
--- /dev/null
+++ b/src/common/cstr.h
@@ -0,0 +1,86 @@
+/* Copyright (C) 2011 J.F.Dockes
+ *   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.
+ */
+
+#ifndef _CSTR_H_INCLUDED_
+#define _CSTR_H_INCLUDED_
+
+// recoll mostly uses STL strings. In many places we had automatic
+// conversion from a C string to an STL one. This costs, and can
+// become significant if used often.
+//
+// This file and the associated .cpp file declares/defines constant
+// strings used in the program. Strings are candidates for a move here
+// when they are used in a fast loop or are shared.
+
+#include 
+using std::string;
+
+// The following slightly hacky preprocessing directives and the
+// companion code in the cpp file looks complicated, but it just
+// ensures that we only have to write the strings once to get the
+// extern declaration and the definition.
+#ifdef RCLIN_CSTR_CPPFILE
+#undef DEF_CSTR
+#define DEF_CSTR(NM, STR) const string cstr_##NM(STR)
+#else
+#define DEF_CSTR(NM, STR) extern const string cstr_##NM
+#endif
+
+DEF_CSTR(caption, "caption");
+DEF_CSTR(colon, ":");
+DEF_CSTR(dmtime, "dmtime");
+DEF_CSTR(dquote, "\"");
+DEF_CSTR(fbytes, "fbytes");
+DEF_CSTR(fileu, "file://");
+DEF_CSTR(fmtime, "fmtime");
+DEF_CSTR(iso_8859_1, "ISO-8859-1");
+DEF_CSTR(utf8, "UTF-8");
+DEF_CSTR(cp1252, "CP1252");
+DEF_CSTR(minwilds, "*?[");
+DEF_CSTR(newline, "\n");
+DEF_CSTR(null, "");
+DEF_CSTR(plus, "+");
+DEF_CSTR(textplain, "text/plain");
+DEF_CSTR(url, "url");
+// Marker for HTML format fields
+DEF_CSTR(fldhtm, "\007");
+// Characters that can -begin- a wildcard or regexp expression. 
+DEF_CSTR(wildSpecStChars, "*?[");
+DEF_CSTR(regSpecStChars, "(.[{");
+
+// Values used as keys inside Dijon::Filter::metaData[]. This structure is 
+// used to store all data generated by format-translating filters. It is
+// different from Rcl::Doc for mostly historical reasons. The translation
+// from Filter to Doc occurs inside internfile.cpp
+DEF_CSTR(dj_keyds, "description");
+DEF_CSTR(dj_keyfn, "filename");
+DEF_CSTR(dj_keymd, "modificationdate");
+DEF_CSTR(dj_keyorigcharset, "origcharset");
+DEF_CSTR(dj_keytitle, "title");
+DEF_CSTR(dj_keyrecipient, "recipient");
+DEF_CSTR(dj_keymsgid, "msgid");
+DEF_CSTR(dj_keyabstract, "abstract");
+DEF_CSTR(dj_keyauthor, "author");
+DEF_CSTR(dj_keycharset, "charset");
+DEF_CSTR(dj_keycontent, "content");
+DEF_CSTR(dj_keyipath, "ipath");
+DEF_CSTR(dj_keymd5, "md5");
+DEF_CSTR(dj_keymt, "mimetype");
+DEF_CSTR(dj_keydocsize, "docsize");
+DEF_CSTR(dj_keyanc, "rclanc");
+
+#endif /* _CSTR_H_INCLUDED_ */
diff --git a/src/common/rclconfig.cpp b/src/common/rclconfig.cpp
new file mode 100644
index 00000000..638308ed
--- /dev/null
+++ b/src/common/rclconfig.cpp
@@ -0,0 +1,1684 @@
+/* Copyright (C) 2004 J.F.Dockes 
+ *   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.
+ */
+#ifndef TEST_RCLCONFIG
+#include "autoconfig.h"
+
+#include 
+#include 
+#ifndef _WIN32
+#include 
+#include 
+#endif
+#include 
+#include "safesysstat.h"
+#include "safeunistd.h"
+#ifdef __FreeBSD__
+#include 
+#endif
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "cstr.h"
+#include "pathut.h"
+#include "rclconfig.h"
+#include "conftree.h"
+#include "debuglog.h"
+#include "smallut.h"
+#include "textsplit.h"
+#include "readfile.h"
+#include "fstreewalk.h"
+#include "cpuconf.h"
+#include "execmd.h"
+
+using namespace std;
+
+typedef pair RclPII;
+
+// Static, logically const, RclConfig members are initialized once from the
+// first object build during process initialization.
+
+// We default to a case- and diacritics-less index for now
+bool o_index_stripchars = true;
+
+bool o_uptodate_test_use_mtime = false;
+
+string RclConfig::o_localecharset; 
+string RclConfig::o_origcwd; 
+
+bool ParamStale::needrecompute()
+{
+    LOGDEB2(("ParamStale:: needrecompute. parent gen %d mine %d\n", 
+	     parent->m_keydirgen, savedkeydirgen));
+    if (active && parent->m_keydirgen != savedkeydirgen) {
+	LOGDEB2(("ParamState:: needrecompute. conffile %p\n", conffile));
+
+        savedkeydirgen = parent->m_keydirgen;
+        string newvalue;
+        if (!conffile)
+            return false;
+        conffile->get(paramname, newvalue, parent->m_keydir);
+        if (newvalue.compare(savedvalue)) {
+            savedvalue = newvalue;
+	    LOGDEB2(("ParamState:: needrecompute. return true newvalue [%s]\n",
+		     newvalue.c_str()));
+            return true;
+        }
+    }
+    return false;
+}
+
+void ParamStale::init(ConfNull *cnf)
+{
+    conffile = cnf;
+    active = false;
+    if (conffile)
+      active = conffile->hasNameAnywhere(paramname);
+    savedkeydirgen = -1;
+}
+
+ParamStale::ParamStale(RclConfig *rconf, const string& nm)
+    : parent(rconf), conffile(0), paramname(nm),
+      active(false), savedkeydirgen(-1)
+{
+}
+
+void RclConfig::zeroMe() {
+    m_ok = false; 
+    m_keydirgen = 0;
+    m_conf = 0; 
+    mimemap = 0; 
+    mimeconf = 0; 
+    mimeview = 0; 
+    m_fields = 0;
+    m_ptrans = 0;
+    m_stopsuffixes = 0;
+    m_maxsufflen = 0;
+    initParamStale(0, 0);
+}
+
+bool RclConfig::isDefaultConfig() const
+{
+    string defaultconf = path_cat(path_homedata(),
+                                  path_defaultrecollconfsubdir());
+    string specifiedconf = path_canon(m_confdir);
+    path_catslash(specifiedconf);
+    return !defaultconf.compare(specifiedconf);
+}
+
+RclConfig::RclConfig(const string *argcnf)
+    : m_oldstpsuffstate(this, "recoll_noindex"),
+      m_stpsuffstate(this, "noContentSuffixes"),
+      m_skpnstate(this, "skippedNames"),
+      m_rmtstate(this, "indexedmimetypes"),
+      m_xmtstate(this, "excludedmimetypes"),
+      m_mdrstate(this, "metadatacmds")
+{
+    zeroMe();
+
+    if (o_origcwd.empty()) {
+	char buf[MAXPATHLEN];
+	if (getcwd(buf, MAXPATHLEN)) {
+	    o_origcwd = string(buf);
+	} else {
+	    fprintf(stderr, "recollxx: can't retrieve current working directory: relative path translations will fail\n");
+	}
+    }
+
+    // Compute our data dir name, typically /usr/local/share/recoll
+    m_datadir = path_sharedatadir();
+    // We only do the automatic configuration creation thing for the default
+    // config dir, not if it was specified through -c or RECOLL_CONFDIR
+    bool autoconfdir = false;
+
+    // Command line config name overrides environment
+    if (argcnf && !argcnf->empty()) {
+	m_confdir = path_absolute(*argcnf);
+	if (m_confdir.empty()) {
+	    m_reason = 
+		string("Cant turn [") + *argcnf + "] into absolute path";
+	    return;
+	}
+    } else {
+	const char *cp = getenv("RECOLL_CONFDIR");
+	if (cp) {
+	    m_confdir = path_canon(cp);
+	} else {
+	    autoconfdir = true;
+	    m_confdir = path_cat(path_homedata(), path_defaultrecollconfsubdir());
+	}
+    }
+
+    // Note: autoconfdir and isDefaultConfig() are normally the same. We just 
+    // want to avoid the imperfect test in isDefaultConfig() if we actually know
+    // this is the default conf
+    if (!autoconfdir && !isDefaultConfig()) {
+	if (!path_exists(m_confdir)) {
+	    m_reason = "Explicitly specified configuration "
+		"directory must exist"
+		" (won't be automatically created). Use mkdir first";
+	    return;
+	}
+    }
+
+    if (!path_exists(m_confdir)) {
+	if (!initUserConfig()) 
+	    return;
+    }
+
+    // This can't change once computed inside a process. It would be
+    // nicer to move this to a static class initializer to avoid
+    // possible threading issues but this doesn't work (tried) as
+    // things would not be ready. In practise we make sure that this
+    // is called from the main thread at once, by constructing a config
+    // from recollinit
+    if (o_localecharset.empty()) {
+#ifndef _WIN32
+	const char *cp;
+	cp = nl_langinfo(CODESET);
+	// We don't keep US-ASCII. It's better to use a superset
+	// Ie: me have a C locale and some french file names, and I
+	// can't imagine a version of iconv that couldn't translate
+	// from iso8859?
+	// The 646 thing is for solaris. 
+	if (cp && *cp && strcmp(cp, "US-ASCII") 
+#ifdef sun
+	    && strcmp(cp, "646")
+#endif
+	    ) {
+	    o_localecharset = string(cp);
+	} else {
+	    // Use cp1252 instead of iso-8859-1, it's a superset.
+	    o_localecharset = string(cstr_cp1252);
+	}
+#else
+        o_localecharset = "UTF-8";
+#endif
+	LOGDEB1(("RclConfig::getDefCharset: localecharset [%s]\n",
+		 o_localecharset.c_str()));
+    }
+
+    const char *cp;
+
+    // Additional config directory, values override user ones
+    if ((cp = getenv("RECOLL_CONFTOP"))) {
+	m_cdirs.push_back(cp);
+    } 
+
+    // User config
+    m_cdirs.push_back(m_confdir);
+
+    // Additional config directory, overrides system's, overridden by user's
+    if ((cp = getenv("RECOLL_CONFMID"))) {
+	m_cdirs.push_back(cp);
+    } 
+
+    // Base/installation config
+    m_cdirs.push_back(path_cat(m_datadir, "examples"));
+
+    string cnferrloc;
+    for (vector::const_iterator it = m_cdirs.begin();
+	 it != m_cdirs.end(); it++) {
+	if (it != m_cdirs.begin())
+	    cnferrloc += string(" or ");
+	cnferrloc += *it;
+    }
+
+    // Read and process "recoll.conf"
+    if (!updateMainConfig())
+	return;
+    // Other files
+    mimemap = new ConfStack("mimemap", m_cdirs, true);
+    if (mimemap == 0 || !mimemap->ok()) {
+	m_reason = string("No or bad mimemap file in: ") + cnferrloc;
+	return;
+    }
+    mimeconf = new ConfStack("mimeconf", m_cdirs, true);
+    if (mimeconf == 0 || !mimeconf->ok()) {
+	m_reason = string("No/bad mimeconf in: ") + cnferrloc;
+	return;
+    }
+    mimeview = new ConfStack("mimeview", m_cdirs, false);
+    if (mimeview == 0)
+	mimeview = new ConfStack("mimeview", m_cdirs, true);
+    if (mimeview == 0 || !mimeview->ok()) {
+	m_reason = string("No/bad mimeview in: ") + cnferrloc;
+	return;
+    }
+    if (!readFieldsConfig(cnferrloc))
+	return;
+
+    // Default is no threading
+    m_thrConf = create_vector
+	(RclPII(-1, 0))(RclPII(-1, 0))(RclPII(-1, 0));
+
+    m_ptrans = new ConfSimple(path_cat(m_confdir, "ptrans").c_str());
+
+    m_ok = true;
+    setKeyDir(cstr_null);
+
+    initParamStale(m_conf, mimemap);
+
+    return;
+}
+
+bool RclConfig::updateMainConfig()
+{
+    ConfStack *newconf = 
+	new ConfStack("recoll.conf", m_cdirs, true);
+    if (newconf == 0 || !newconf->ok()) {
+	if (m_conf)
+	    return false;
+	string where;
+	stringsToString(m_cdirs, where);
+	m_reason = string("No/bad main configuration file in: ") + where;
+	m_ok = false;
+        initParamStale(0, 0);
+	return false;
+    }
+
+    delete m_conf;
+    m_conf = newconf;
+
+    initParamStale(m_conf, mimemap);
+
+    setKeyDir(cstr_null);
+
+    bool bvalue = false;
+    if (getConfParam("nocjk", &bvalue) && bvalue == true) {
+	TextSplit::cjkProcessing(false);
+    } else {
+	int ngramlen;
+	if (getConfParam("cjkngramlen", &ngramlen)) {
+	    TextSplit::cjkProcessing(true, (unsigned int)ngramlen);
+	} else {
+	    TextSplit::cjkProcessing(true);
+	}
+    }
+
+    bvalue = false;
+    if (getConfParam("nonumbers", &bvalue) && bvalue == true) {
+	TextSplit::noNumbers();
+    }
+
+    bvalue = false;
+    if (getConfParam("dehyphenate", &bvalue)) {
+	TextSplit::deHyphenate(bvalue);
+    }
+
+    bvalue = true;
+    if (getConfParam("skippedPathsFnmPathname", &bvalue) && bvalue == false) {
+	FsTreeWalker::setNoFnmPathname();
+    }
+
+    static int m_index_stripchars_init = 0;
+    if (!m_index_stripchars_init) {
+	getConfParam("indexStripChars", &o_index_stripchars);
+        getConfParam("testmodifusemtime", &o_uptodate_test_use_mtime);
+	m_index_stripchars_init = 1;
+    }
+
+    return true;
+}
+
+ConfNull *RclConfig::cloneMainConfig()
+{
+    ConfNull *conf = new ConfStack("recoll.conf", m_cdirs, false);
+    if (conf == 0 || !conf->ok()) {
+	m_reason = string("Can't read config");
+	return 0;
+    }
+    return conf;
+}
+
+// Remember what directory we're under (for further conf->get()s), and 
+// prefetch a few common values.
+void RclConfig::setKeyDir(const string &dir) 
+{
+    if (!dir.compare(m_keydir))
+        return;
+
+    m_keydirgen++;
+    m_keydir = dir;
+    if (m_conf == 0)
+	return;
+
+    if (!m_conf->get("defaultcharset", m_defcharset, m_keydir))
+	m_defcharset.erase();
+}
+
+bool RclConfig::getConfParam(const string &name, int *ivp, bool shallow) const
+{
+    string value;
+    if (!getConfParam(name, value, shallow))
+	return false;
+    errno = 0;
+    long lval = strtol(value.c_str(), 0, 0);
+    if (lval == 0 && errno)
+	return 0;
+    if (ivp)
+	*ivp = int(lval);
+    return true;
+}
+
+bool RclConfig::getConfParam(const string &name, bool *bvp, bool shallow) const
+{
+    if (!bvp) 
+	return false;
+
+    *bvp = false;
+    string s;
+    if (!getConfParam(name, s, shallow))
+	return false;
+    *bvp = stringToBool(s);
+    return true;
+}
+
+bool RclConfig::getConfParam(const string &name, vector *svvp,
+    bool shallow) const
+{
+    if (!svvp) 
+	return false;
+    svvp->clear();
+    string s;
+    if (!getConfParam(name, s, shallow))
+	return false;
+    return stringToStrings(s, *svvp);
+}
+
+bool RclConfig::getConfParam(const string &name, vector *vip,
+    bool shallow) const
+{
+    if (!vip) 
+	return false;
+    vip->clear();
+    vector vs;
+    if (!getConfParam(name, &vs, shallow))
+	return false;
+    vip->reserve(vs.size());
+    for (unsigned int i = 0; i < vs.size(); i++) {
+	char *ep;
+	vip->push_back(strtol(vs[i].c_str(), &ep, 0));
+	if (ep == vs[i].c_str()) {
+	    LOGDEB(("RclConfig::getConfParam: bad int value in [%s]\n",
+		    name.c_str()));
+	    return false;
+	}
+    }
+    return true;
+}
+
+void RclConfig::initThrConf()
+{
+    // Default is no threading
+    m_thrConf = create_vector
+	(RclPII(-1, 0))(RclPII(-1, 0))(RclPII(-1, 0));
+
+    vector vq;
+    vector vt;
+    if (!getConfParam("thrQSizes", &vq)) {
+	LOGINFO(("RclConfig::initThrConf: no thread info (queues)\n"));
+	goto out;
+    }
+
+    // If the first queue size is 0, autoconf is requested.
+    if (vq.size() > 0 && vq[0] == 0) {
+	LOGDEB(("RclConfig::initThrConf: autoconf requested\n"));
+	CpuConf cpus;
+	if (!getCpuConf(cpus) || cpus.ncpus < 1) {
+	    LOGERR(("RclConfig::initThrConf: could not retrieve cpu conf\n"));
+	    cpus.ncpus = 1;
+	}
+	// Arbitrarily set threads config based on number of CPUS. This also
+	// depends on the IO setup actually, so we're bound to be wrong...
+	if (cpus.ncpus == 1) {
+	    // Somewhat counter-intuitively (because of possible IO//)
+	    // it seems that the best config here is no threading
+	} else if (cpus.ncpus < 4) {
+	    // Untested so let's guess...
+	    m_thrConf = create_vector
+		(RclPII(2, 2))(RclPII(2, 2))(RclPII(2, 1));
+	} else if (cpus.ncpus < 6) {
+	    m_thrConf = create_vector
+		(RclPII(2, 4))(RclPII(2, 2))(RclPII(2, 1));
+	} else {
+	    m_thrConf = create_vector
+		(RclPII(2, 5))(RclPII(2, 3))(RclPII(2, 1));
+	}
+	goto out;
+    } else if (vq.size() > 0 && vq[0] < 0) {
+	// threads disabled by config
+	goto out;
+    }
+
+    if (!getConfParam("thrTCounts", &vt) ) {
+	LOGINFO(("RclConfig::initThrConf: no thread info (threads)\n"));
+	goto out;
+    }
+
+    if (vq.size() != 3 || vt.size() != 3) {
+	LOGINFO(("RclConfig::initThrConf: bad thread info vector sizes\n"));
+	goto out;
+    }
+
+    // Normal case: record info from config
+    m_thrConf.clear();
+    for (unsigned int i = 0; i < 3; i++) {
+	m_thrConf.push_back(RclPII(vq[i], vt[i]));
+    }
+
+out:
+    ostringstream sconf;
+    for (unsigned int i = 0; i < 3; i++) {
+	sconf << "(" << m_thrConf[i].first << ", " << m_thrConf[i].second <<
+	    ") ";
+    }
+
+    LOGDEB(("RclConfig::initThrConf: chosen config (ql,nt): %s\n", 
+	    sconf.str().c_str()));
+}
+
+pair RclConfig::getThrConf(ThrStage who) const
+{
+    if (m_thrConf.size() != 3) {
+	LOGERR(("RclConfig::getThrConf: bad data in rclconfig\n"));
+	return pair(-1,-1);
+    }
+    return m_thrConf[who];
+}
+
+vector RclConfig::getTopdirs() const
+{
+    vector tdl;
+    if (!getConfParam("topdirs", &tdl)) {
+	LOGERR(("RclConfig::getTopdirs: no top directories in config or "
+		"bad list format\n"));
+	return tdl;
+    }
+
+    for (vector::iterator it = tdl.begin(); it != tdl.end(); it++) {
+	*it = path_tildexpand(*it);
+	*it = path_canon(*it);
+    }
+    return tdl;
+}
+
+// Get charset to be used for transcoding to utf-8 if unspecified by doc
+// For document contents:
+//  If defcharset was set (from the config or a previous call, this
+//   is done in setKeydir), use it.
+//  Else, try to guess it from the locale
+//  Use cp1252 (as a superset of iso8859-1) as ultimate default
+//
+// For filenames, same thing except that we do not use the config file value
+// (only the locale).
+const string& RclConfig::getDefCharset(bool filename) const
+{
+    if (filename) {
+	return o_localecharset;
+    } else {
+	return m_defcharset.empty() ? o_localecharset : m_defcharset;
+    }
+}
+
+// Get all known document mime values. We get them from the mimeconf
+// 'index' submap.
+// It's quite possible that there are other mime types in the index
+// (defined in mimemap and not mimeconf, or output by "file -i"). We
+// just ignore them, because there may be myriads, and their contents
+// are not indexed. 
+//
+// This unfortunately means that searches by file names and mime type
+// filtering don't work well together.
+vector RclConfig::getAllMimeTypes() const
+{
+    return mimeconf ? mimeconf->getNames("index") : vector();
+}
+
+// Things for suffix comparison. We define a string class and string 
+// comparison with suffix-only sensitivity
+class SfString {
+public:
+    SfString(const string& s) : m_str(s) {}
+    bool operator==(const SfString& s2) {
+	string::const_reverse_iterator r1 = m_str.rbegin(), re1 = m_str.rend(),
+	    r2 = s2.m_str.rbegin(), re2 = s2.m_str.rend();
+	while (r1 != re1 && r2 != re2) {
+	    if (*r1 != *r2) {
+		return 0;
+	    }
+	    ++r1; ++r2;
+	}
+	return 1;
+    }
+    string m_str;
+};
+
+class SuffCmp {
+public:
+    int operator()(const SfString& s1, const SfString& s2) {
+	//cout << "Comparing " << s1.m_str << " and " << s2.m_str << endl;
+	string::const_reverse_iterator 
+	    r1 = s1.m_str.rbegin(), re1 = s1.m_str.rend(),
+	    r2 = s2.m_str.rbegin(), re2 = s2.m_str.rend();
+	while (r1 != re1 && r2 != re2) {
+	    if (*r1 != *r2) {
+		return *r1 < *r2 ? 1 : 0;
+	    }
+	    ++r1; ++r2;
+	}
+	return 0;
+    }
+};
+typedef multiset SuffixStore;
+
+#define STOPSUFFIXES ((SuffixStore *)m_stopsuffixes)
+
+bool RclConfig::inStopSuffixes(const string& fni)
+{
+    LOGDEB2(("RclConfig::inStopSuffixes(%s)\n", fni.c_str()));
+    // Beware: both needrecompute() need to be called always hence the
+    // bizarre way we do things
+    bool needrecompute = m_stpsuffstate.needrecompute();
+    needrecompute = m_oldstpsuffstate.needrecompute() || needrecompute;
+    if (needrecompute || m_stopsuffixes == 0) {
+	// Need to initialize the suffixes
+        delete STOPSUFFIXES;
+	if ((m_stopsuffixes = new SuffixStore) == 0) {
+	    LOGERR(("RclConfig::inStopSuffixes: out of memory\n"));
+	    return false;
+	}
+        // Let the old customisation have priority: if recoll_noindex
+        // from mimemap is set, it the user's (the default value is
+        // gone). Else use the new variable
+	vector stoplist;
+        if (!m_oldstpsuffstate.savedvalue.empty()) {
+            stringToStrings(m_oldstpsuffstate.savedvalue, stoplist);
+        } else {
+            stringToStrings(m_stpsuffstate.savedvalue, stoplist);
+        }
+	for (vector::const_iterator it = stoplist.begin(); 
+	     it != stoplist.end(); it++) {
+	    STOPSUFFIXES->insert(SfString(stringtolower(*it)));
+	    if (m_maxsufflen < it->length())
+		m_maxsufflen = int(it->length());
+	}
+    }
+
+    // Only need a tail as long as the longest suffix.
+    int pos = MAX(0, int(fni.length() - m_maxsufflen));
+    string fn(fni, pos);
+
+    stringtolower(fn);
+    SuffixStore::const_iterator it = STOPSUFFIXES->find(fn);
+    if (it != STOPSUFFIXES->end()) {
+	LOGDEB2(("RclConfig::inStopSuffixes: Found (%s) [%s]\n", 
+		fni.c_str(), (*it).m_str.c_str()));
+	return true;
+    } else {
+	LOGDEB2(("RclConfig::inStopSuffixes: not found [%s]\n", fni.c_str()));
+	return false;
+    }
+}
+
+string RclConfig::getMimeTypeFromSuffix(const string& suff) const
+{
+    string mtype;
+    mimemap->get(suff, mtype, m_keydir);
+    return mtype;
+}
+
+string RclConfig::getSuffixFromMimeType(const string &mt) const
+{
+    string suffix;
+    vectorsfs = mimemap->getNames(cstr_null);
+    string mt1;
+    for (vector::const_iterator it = sfs.begin(); 
+	 it != sfs.end(); it++) {
+	if (mimemap->get(*it, mt1, cstr_null))
+	    if (!stringicmp(mt, mt1))
+		return *it;
+    }
+    return cstr_null;
+}
+
+/** Get list of file categories from mimeconf */
+bool RclConfig::getMimeCategories(vector& cats) const
+{
+    if (!mimeconf)
+	return false;
+    cats = mimeconf->getNames("categories");
+    return true;
+}
+
+bool RclConfig::isMimeCategory(string& cat) const
+{
+    vectorcats;
+    getMimeCategories(cats);
+    for (vector::iterator it = cats.begin(); it != cats.end(); it++) {
+	if (!stringicmp(*it,cat))
+	    return true;
+    }
+    return false;
+}
+
+/** Get list of mime types for category from mimeconf */
+bool RclConfig::getMimeCatTypes(const string& cat, vector& tps) const
+{
+    tps.clear();
+    if (!mimeconf)
+	return false;
+    string slist;
+    if (!mimeconf->get(cat, slist, "categories"))
+	return false;
+
+    stringToStrings(slist, tps);
+    return true;
+}
+
+string RclConfig::getMimeHandlerDef(const string &mtype, bool filtertypes)
+{
+    string hs;
+
+    if (filtertypes) {
+        if(m_rmtstate.needrecompute()) {
+            m_restrictMTypes.clear();
+            stringToStrings(stringtolower((const string&)m_rmtstate.savedvalue),
+                            m_restrictMTypes);
+        }
+        if (m_xmtstate.needrecompute()) {
+            m_excludeMTypes.clear();
+            stringToStrings(stringtolower((const string&)m_xmtstate.savedvalue),
+                            m_excludeMTypes);
+        }
+        if (!m_restrictMTypes.empty() && 
+            !m_restrictMTypes.count(stringtolower(mtype))) {
+            LOGDEB2(("RclConfig::getMimeHandlerDef: not in mime type list\n"));
+            return hs;
+        }
+        if (!m_excludeMTypes.empty() && 
+            m_excludeMTypes.count(stringtolower(mtype))) {
+            LOGDEB2(("RclConfig::getMimeHandlerDef: in excluded mime list\n"));
+            return hs;
+        }
+    }
+
+    if (!mimeconf->get(mtype, hs, "index")) {
+	LOGDEB1(("getMimeHandler: no handler for '%s'\n", mtype.c_str()));
+    }
+    return hs;
+}
+
+const vector& RclConfig::getMDReapers()
+{
+    string hs;
+    if (m_mdrstate.needrecompute()) {
+        m_mdreapers.clear();
+	// New value now stored in m_mdrstate.savedvalue
+	string& sreapers = m_mdrstate.savedvalue;
+	if (sreapers.empty())
+	  return m_mdreapers;
+	string value;
+	ConfSimple attrs;
+	valueSplitAttributes(sreapers, value, attrs);
+	vector nmlst = attrs.getNames(cstr_null);
+	for (vector::const_iterator it = nmlst.begin();
+	     it != nmlst.end(); it++) {
+	  MDReaper reaper;
+	  reaper.fieldname = fieldCanon(*it);
+	  string s;
+	  attrs.get(*it, s);
+	  stringToStrings(s, reaper.cmdv);
+	  m_mdreapers.push_back(reaper);
+	}
+    }
+    return m_mdreapers;
+}
+
+bool RclConfig::getGuiFilterNames(vector& cats) const
+{
+    if (!mimeconf)
+	return false;
+    cats = mimeconf->getNamesShallow("guifilters");
+    return true;
+}
+
+bool RclConfig::getGuiFilter(const string& catfiltername, string& frag) const
+{
+    frag.clear();
+    if (!mimeconf)
+	return false;
+    if (!mimeconf->get(catfiltername, frag, "guifilters"))
+	return false;
+    return true;
+}
+
+bool RclConfig::valueSplitAttributes(const string& whole, string& value, 
+				     ConfSimple& attrs)
+{
+    /* There is currently no way to escape a semi-colon */
+    string::size_type semicol0 = whole.find_first_of(";");
+    value = whole.substr(0, semicol0);
+    trimstring(value);
+    string attrstr;
+    if (semicol0 != string::npos && semicol0 < whole.size() - 1) {
+        attrstr = whole.substr(semicol0+1);
+    }
+
+    // Handle additional attributes. We substitute the semi-colons
+    // with newlines and use a ConfSimple
+    if (!attrstr.empty()) {
+        for (string::size_type i = 0; i < attrstr.size(); i++) {
+            if (attrstr[i] == ';')
+                attrstr[i] = '\n';
+	}
+        attrs.reparse(attrstr);
+    } else {
+	attrs.clear();
+    }
+    
+    return true;
+}
+
+bool RclConfig::getMissingHelperDesc(string& out) const
+{
+    string fmiss = path_cat(getConfDir(), "missing");
+    out.clear();
+    if (!file_to_string(fmiss, out))
+	return false;
+    return true;
+}
+
+void RclConfig::storeMissingHelperDesc(const string &s)
+{
+    string fmiss = path_cat(getConfDir(), "missing");
+    FILE *fp = fopen(fmiss.c_str(), "w");
+    if (fp) {
+	if (s.size() > 0 && fwrite(s.c_str(), s.size(), 1, fp) != 1) {
+            LOGERR(("storeMissingHelperDesc: fwrite failed\n"));
+        }
+	fclose(fp);
+    }
+}
+
+// Read definitions for field prefixes, aliases, and hierarchy and arrange 
+// things for speed (theses are used a lot during indexing)
+bool RclConfig::readFieldsConfig(const string& cnferrloc)
+{
+    LOGDEB2(("RclConfig::readFieldsConfig\n"));
+    m_fields = new ConfStack("fields", m_cdirs, true);
+    if (m_fields == 0 || !m_fields->ok()) {
+	m_reason = string("No/bad fields file in: ") + cnferrloc;
+	return false;
+    }
+
+    // Build a direct map avoiding all indirections for field to
+    // prefix translation
+    // Add direct prefixes from the [prefixes] section
+    vectortps = m_fields->getNames("prefixes");
+    for (vector::const_iterator it = tps.begin(); 
+	 it != tps.end(); it++) {
+	string val;
+	m_fields->get(*it, val, "prefixes");
+	ConfSimple attrs;
+	FieldTraits ft;
+	if (!valueSplitAttributes(val, ft.pfx, attrs)) {
+	    LOGERR(("readFieldsConfig: bad config line for [%s]: [%s]\n", 
+		    it->c_str(), val.c_str()));
+	    return 0;
+	}
+	string tval;
+	if (attrs.get("wdfinc", tval))
+	    ft.wdfinc = atoi(tval.c_str());
+	if (attrs.get("boost", tval))
+	    ft.boost = atof(tval.c_str());
+	if (attrs.get("pfxonly", tval))
+	    ft.pfxonly = stringToBool(tval);
+	if (attrs.get("noterms", tval))
+	    ft.noterms = stringToBool(tval);
+	m_fldtotraits[stringtolower(*it)] = ft;
+	LOGDEB2(("readFieldsConfig: [%s] -> [%s] %d %.1f\n", 
+		it->c_str(), ft.pfx.c_str(), ft.wdfinc, ft.boost));
+    }
+
+    // Add prefixes for aliases and build alias-to-canonic map while
+    // we're at it. Having the aliases in the prefix map avoids an
+    // additional indirection at index time.
+    tps = m_fields->getNames("aliases");
+    for (vector::const_iterator it = tps.begin(); 
+         it != tps.end(); it++){
+	string canonic = stringtolower(*it); // canonic name
+	FieldTraits ft;
+	map::const_iterator pit = 
+	    m_fldtotraits.find(canonic);
+	if (pit != m_fldtotraits.end()) {
+	    ft = pit->second;
+	}
+	string aliases;
+	m_fields->get(canonic, aliases, "aliases");
+	vector l;
+	stringToStrings(aliases, l);
+	for (vector::const_iterator ait = l.begin();
+	     ait != l.end(); ait++) {
+	    if (pit != m_fldtotraits.end())
+		m_fldtotraits[stringtolower(*ait)] = ft;
+	    m_aliastocanon[stringtolower(*ait)] = canonic;
+	}
+    }
+
+    // Query aliases map
+    tps = m_fields->getNames("queryaliases");
+    for (vector::const_iterator it = tps.begin(); 
+         it != tps.end(); it++){
+	string canonic = stringtolower(*it); // canonic name
+	string aliases;
+	m_fields->get(canonic, aliases, "queryaliases");
+	vector l;
+	stringToStrings(aliases, l);
+	for (vector::const_iterator ait = l.begin();
+	     ait != l.end(); ait++) {
+	    m_aliastoqcanon[stringtolower(*ait)] = canonic;
+	}
+    }
+
+#if 0
+    for (map::const_iterator it = m_fldtotraits.begin();
+	 it != m_fldtotraits.end(); it++) {
+	LOGDEB(("readFieldsConfig: [%s] -> [%s] %d %.1f\n", 
+		it->c_str(), it->second.pfx.c_str(), it->second.wdfinc, 
+		it->second.boost));
+    }
+#endif
+
+    vector sl = m_fields->getNames("stored");
+    if (!sl.empty()) {
+	for (vector::const_iterator it = sl.begin(); 
+	     it != sl.end(); it++) {
+	    string fld = fieldCanon(stringtolower(*it));
+	    m_storedFields.insert(fld);
+	}
+    }
+
+    // Extended file attribute to field translations
+    vectorxattrs = m_fields->getNames("xattrtofields");
+    for (vector::const_iterator it = xattrs.begin(); 
+	 it != xattrs.end(); it++) {
+	string val;
+	m_fields->get(*it, val, "xattrtofields");
+	m_xattrtofld[*it] = val;
+    }
+
+    return true;
+}
+
+// Return specifics for field name:
+bool RclConfig::getFieldTraits(const string& _fld, const FieldTraits **ftpp,
+    bool isquery) const
+{
+    string fld = isquery ? fieldQCanon(_fld) : fieldCanon(_fld);
+    map::const_iterator pit = m_fldtotraits.find(fld);
+    if (pit != m_fldtotraits.end()) {
+	*ftpp = &pit->second;
+	LOGDEB1(("RclConfig::getFieldTraits: [%s]->[%s]\n", 
+		 _fld.c_str(), pit->second.pfx.c_str()));
+	return true;
+    } else {
+	LOGDEB1(("RclConfig::getFieldTraits: no prefix for field [%s]\n",
+		 fld.c_str()));
+	*ftpp = 0;
+	return false;
+    }
+}
+
+set RclConfig::getIndexedFields() const
+{
+    set flds;
+    if (m_fields == 0)
+	return flds;
+
+    vector sl = m_fields->getNames("prefixes");
+    flds.insert(sl.begin(), sl.end());
+    return flds;
+}
+
+string RclConfig::fieldCanon(const string& f) const
+{
+    string fld = stringtolower(f);
+    map::const_iterator it = m_aliastocanon.find(fld);
+    if (it != m_aliastocanon.end()) {
+	LOGDEB1(("RclConfig::fieldCanon: [%s] -> [%s]\n", 
+		 f.c_str(), it->second.c_str()));
+	return it->second;
+    }
+    LOGDEB1(("RclConfig::fieldCanon: [%s] -> [%s]\n", f.c_str(), fld.c_str()));
+    return fld;
+}
+
+string RclConfig::fieldQCanon(const string& f) const
+{
+    string fld = stringtolower(f);
+    map::const_iterator it = m_aliastoqcanon.find(fld);
+    if (it != m_aliastoqcanon.end()) {
+	LOGDEB1(("RclConfig::fieldQCanon: [%s] -> [%s]\n", 
+                f.c_str(), it->second.c_str()));
+	return it->second;
+    }
+    return fieldCanon(f);
+}
+
+vector RclConfig::getFieldSectNames(const string &sk, const char* patrn)
+    const
+{
+    if (m_fields == 0)
+        return vector();
+    return m_fields->getNames(sk, patrn);
+}
+
+bool RclConfig::getFieldConfParam(const string &name, const string &sk, 
+                                  string &value) const
+{
+    if (m_fields == 0)
+        return false;
+    return m_fields->get(name, value, sk);
+}
+
+string RclConfig::getMimeViewerAllEx() const
+{
+    string hs;
+    if (mimeview == 0)
+	return hs;
+    mimeview->get("xallexcepts", hs, "");
+    return hs;
+}
+
+bool RclConfig::setMimeViewerAllEx(const string& allex)
+{
+    if (mimeview == 0)
+        return false;
+    if (!mimeview->set("xallexcepts", allex, "")) {
+	m_reason = string("RclConfig:: cant set value. Readonly?");
+	return false;
+    }
+
+    return true;
+}
+
+string RclConfig::getMimeViewerDef(const string &mtype, const string& apptag,
+				   bool useall) const
+{
+    LOGDEB2(("RclConfig::getMimeViewerDef: mtype [%s] apptag [%s]\n",
+	     mtype.c_str(), apptag.c_str()));
+    string hs;
+    if (mimeview == 0)
+	return hs;
+
+    if (useall) {
+	// Check for exception
+	string excepts = getMimeViewerAllEx();
+	vector vex;
+	stringToTokens(excepts, vex);
+	bool isexcept = false;
+	for (vector::iterator it = vex.begin();
+	     it != vex.end(); it++) {
+	    vector mita;
+	    stringToTokens(*it, mita, "|");
+	    if ((mita.size() == 1 && apptag.empty() && mita[0] == mtype) ||
+		(mita.size() == 2 && mita[1] == apptag && mita[0] == mtype)) {
+		// Exception to x-all
+		isexcept = true;
+		break;
+	    }
+	}
+
+	if (isexcept == false) {
+	    mimeview->get("application/x-all", hs, "view");
+	    return hs;
+	}
+	// Fallthrough to normal case.
+    }
+
+    if (apptag.empty() || !mimeview->get(mtype + string("|") + apptag,
+                                         hs, "view"))
+        mimeview->get(mtype, hs, "view");
+    return hs;
+}
+
+bool RclConfig::getMimeViewerDefs(vector >& defs) const
+{
+    if (mimeview == 0)
+	return false;
+    vectortps = mimeview->getNames("view");
+    for (vector::const_iterator it = tps.begin(); 
+	 it != tps.end();it++) {
+	defs.push_back(pair(*it, getMimeViewerDef(*it, "", 0)));
+    }
+    return true;
+}
+
+bool RclConfig::setMimeViewerDef(const string& mt, const string& def)
+{
+    if (mimeview == 0)
+        return false;
+    bool status;
+    if (!def.empty()) 
+	status = mimeview->set(mt, def, "view");
+    else 
+	status = mimeview->erase(mt, "view");
+
+    if (!status) {
+	m_reason = string("RclConfig:: cant set value. Readonly?");
+	return false;
+    }
+    return true;
+}
+
+bool RclConfig::mimeViewerNeedsUncomp(const string &mimetype) const
+{
+    string s;
+    vector v;
+    if (mimeview != 0 && mimeview->get("nouncompforviewmts", s, "") && 
+        stringToStrings(s, v) && 
+        find_if(v.begin(), v.end(), StringIcmpPred(mimetype)) != v.end()) 
+        return false;
+    return true;
+}
+
+string RclConfig::getMimeIconPath(const string &mtype, const string &apptag)
+    const
+{
+    string iconname;
+    if (!apptag.empty())
+	mimeconf->get(mtype + string("|") + apptag, iconname, "icons");
+    if (iconname.empty())
+        mimeconf->get(mtype, iconname, "icons");
+    if (iconname.empty())
+	iconname = "document";
+
+    string iconpath;
+#if defined (__FreeBSD__) && __FreeBSD_version < 500000
+    // gcc 2.95 dies if we call getConfParam here ??
+    if (m_conf) m_conf->get(string("iconsdir"), iconpath, m_keydir);
+#else
+    getConfParam("iconsdir", iconpath);
+#endif
+
+    if (iconpath.empty()) {
+	iconpath = path_cat(m_datadir, "images");
+    } else {
+	iconpath = path_tildexpand(iconpath);
+    }
+    return path_cat(iconpath, iconname) + ".png";
+}
+
+// Return path defined by varname. May be absolute or relative to
+// confdir, with default in confdir
+string RclConfig::getConfdirPath(const char *varname, const char *dflt) const
+{
+    string result;
+    if (!getConfParam(varname, result)) {
+	result = path_cat(getConfDir(), dflt);
+    } else {
+	result = path_tildexpand(result);
+	// If not an absolute path, compute relative to config dir
+	if (!path_isabsolute(result)) {
+	    result = path_cat(getConfDir(), result);
+	}
+    }
+    return path_canon(result);
+
+}
+
+string RclConfig::getDbDir() const
+{
+    return getConfdirPath("dbdir", "xapiandb");
+}
+
+string RclConfig::getStopfile() const
+{
+    return getConfdirPath("stoplistfile", "stoplist.txt");
+}
+
+string RclConfig::getSynGroupsFile() const
+{
+    return getConfdirPath("syngroupsfile", "syngroups.txt");
+}
+
+// The index status file is fast changing, so it's possible to put it outside
+// of the config directory (for ssds, not sure this is really useful).
+string RclConfig::getIdxStatusFile() const
+{
+    return getConfdirPath("idxstatusfile", "idxstatus.txt");
+}
+
+void RclConfig::urlrewrite(const string& dbdir, string& url) const
+{
+    LOGDEB2(("RclConfig::urlrewrite: dbdir [%s] url [%s]\n",
+	    dbdir.c_str(), url.c_str()));
+
+    // Do path translations exist for this index ?
+    if (m_ptrans == 0 || !m_ptrans->hasSubKey(dbdir)) {
+	LOGDEB2(("RclConfig::urlrewrite: no paths translations (m_ptrans %p)\n",
+		m_ptrans));
+	return;
+    }
+
+    string path = fileurltolocalpath(url);
+    if (path.empty()) {
+	LOGDEB2(("RclConfig::urlrewrite: not file url\n"));
+	return;
+    }
+
+    // For each translation check if the prefix matches the input path,
+    // replace and return the result if it does.
+    vector opaths = m_ptrans->getNames(dbdir);
+    for (vector::const_iterator it = opaths.begin(); 
+	 it != opaths.end(); it++) {
+	if (it->size() <= path.size() && !path.compare(0, it->size(), *it)) {
+	    string npath;
+	    // This call always succeeds because the key comes from getNames()
+	    if (m_ptrans->get(*it, npath, dbdir)) { 
+		path = path.replace(0, it->size(), npath);
+		url = path_pathtofileurl(path);
+	    }
+	    break;
+	}
+    }
+}
+
+bool RclConfig::sourceChanged() const
+{
+    if (m_conf && m_conf->sourceChanged())
+	return true;
+    if (mimemap && mimemap->sourceChanged())
+	return true;
+    if (mimeconf && mimeconf->sourceChanged())
+	return true;
+    if (mimeview && mimeview->sourceChanged())
+	return true;
+    if (m_fields && m_fields->sourceChanged())
+	return true;
+    if (m_ptrans && m_ptrans->sourceChanged())
+	return true;
+    return false;
+}
+
+string RclConfig::getPidfile() const
+{
+    return path_cat(getConfDir(), "index.pid");
+}
+
+string RclConfig::getWebQueueDir() const
+{
+    string webqueuedir;
+    if (!getConfParam("webqueuedir", webqueuedir))
+	webqueuedir = "~/.recollweb/ToIndex/";
+    webqueuedir = path_tildexpand(webqueuedir);
+    return webqueuedir;
+}
+
+vector& RclConfig::getSkippedNames()
+{
+    if (m_skpnstate.needrecompute()) {
+	stringToStrings(m_skpnstate.savedvalue, m_skpnlist);
+    }
+    return m_skpnlist;
+}
+
+vector RclConfig::getSkippedPaths() const
+{
+    vector skpl;
+    getConfParam("skippedPaths", &skpl);
+
+    // Always add the dbdir and confdir to the skipped paths. This is 
+    // especially important for the rt monitor which will go into a loop if we
+    // don't do this.
+    skpl.push_back(getDbDir());
+    skpl.push_back(getConfDir());
+    // And the web queue dir
+    skpl.push_back(getWebQueueDir());
+    for (vector::iterator it = skpl.begin(); it != skpl.end(); it++) {
+	*it = path_tildexpand(*it);
+	*it = path_canon(*it);
+    }
+    sort(skpl.begin(), skpl.end());
+    vector::iterator uit = unique(skpl.begin(), skpl.end());
+    skpl.resize(uit - skpl.begin());
+    return skpl;
+}
+
+vector RclConfig::getDaemSkippedPaths() const
+{
+    vector dskpl;
+    getConfParam("daemSkippedPaths", &dskpl);
+
+    for (vector::iterator it = dskpl.begin(); it != dskpl.end(); it++) {
+	*it = path_tildexpand(*it);
+	*it = path_canon(*it);
+    }
+
+    vector skpl1 = getSkippedPaths();
+    vector skpl;
+    if (dskpl.empty()) {
+	skpl = skpl1;
+    } else {
+	sort(dskpl.begin(), dskpl.end());
+	merge(dskpl.begin(), dskpl.end(), skpl1.begin(), skpl1.end(), 
+	      skpl.begin());
+	vector::iterator uit = unique(skpl.begin(), skpl.end());
+	skpl.resize(uit - skpl.begin());
+    }
+    return skpl;
+}
+
+
+// Look up an executable filter.  We add $RECOLL_FILTERSDIR,
+// and filtersdir from the config file to the PATH, then use execmd::which()
+string RclConfig::findFilter(const string &icmd) const
+{
+    // If the path is absolute, this is it
+    if (path_isabsolute(icmd))
+	return icmd;
+
+    const char *cp = getenv("PATH");
+    if (!cp) //??
+        cp = "";
+    string PATH(cp);
+
+    // For historical reasons: check in personal config directory
+    PATH = getConfDir() + path_PATHsep() + PATH;
+
+    string temp;
+    // Prepend $datadir/filters
+    temp = path_cat(m_datadir, "filters");
+    PATH = temp + path_PATHsep() + PATH;
+
+    // Prepend possible configuration parameter?
+    if (getConfParam(string("filtersdir"), temp)) {
+        temp = path_tildexpand(temp);
+        PATH = temp + path_PATHsep() + PATH;
+    }
+
+    // Prepend possible environment variable
+    if ((cp = getenv("RECOLL_FILTERSDIR"))) {
+        PATH = string(cp) + path_PATHsep() + PATH;
+    } 
+
+    string cmd;
+    if (ExecCmd::which(icmd, cmd, PATH.c_str())) {
+        return cmd;
+    } else {
+        // Let the shell try to find it...
+        return icmd;
+    }
+}
+
+/** 
+ * Return decompression command line for given mime type
+ */
+bool RclConfig::getUncompressor(const string &mtype, vector& cmd) const
+{
+    string hs;
+
+    mimeconf->get(mtype, hs, cstr_null);
+    if (hs.empty())
+	return false;
+    vector tokens;
+    stringToStrings(hs, tokens);
+    if (tokens.empty()) {
+	LOGERR(("getUncompressor: empty spec for mtype %s\n", mtype.c_str()));
+	return false;
+    }
+    vector::iterator it = tokens.begin();
+    if (tokens.size() < 2)
+	return false;
+    if (stringlowercmp("uncompress", *it++)) 
+	return false;
+    cmd.clear();
+    cmd.push_back(findFilter(*it));
+
+    // Special-case python and perl on windows: we need to also locate the
+    // first argument which is the script name "python somescript.py". 
+    // On Unix, thanks to #!, we usually just run "somescript.py", but need
+    // the same change if we ever want to use the same cmdling as windows
+    if (!stringlowercmp("python", *it) || !stringlowercmp("perl", *it)) {
+        it++;
+        if (tokens.size() < 3) {
+            LOGERR(("getUncpressor: python/perl cmd: no script?. [%s]\n", mtype.c_str()));
+        } else {
+            *it = findFilter(*it);
+        }
+    } else {
+        it++;
+    }
+    
+    cmd.insert(cmd.end(), it, tokens.end());
+    return true;
+}
+
+static const char blurb0[] = 
+"# The system-wide configuration files for recoll are located in:\n"
+"#   %s\n"
+"# The default configuration files are commented, you should take a look\n"
+"# at them for an explanation of what can be set (you could also take a look\n"
+"# at the manual instead).\n"
+"# Values set in this file will override the system-wide values for the file\n"
+"# with the same name in the central directory. The syntax for setting\n"
+"# values is identical.\n"
+    ;
+
+// Use uni2ascii -a K to generate these from the utf-8 strings
+// Swedish and Danish. 
+static const char swedish_ex[] = "unac_except_trans = \303\244\303\244 \303\204\303\244 \303\266\303\266 \303\226\303\266 \303\274\303\274 \303\234\303\274 \303\237ss \305\223oe \305\222oe \303\246ae \303\206ae \357\254\201fi \357\254\202fl \303\245\303\245 \303\205\303\245";
+// German:
+static const char german_ex[] = "unac_except_trans = \303\244\303\244 \303\204\303\244 \303\266\303\266 \303\226\303\266 \303\274\303\274 \303\234\303\274 \303\237ss \305\223oe \305\222oe \303\246ae \303\206ae \357\254\201fi \357\254\202fl";
+
+// Create initial user config by creating commented empty files
+static const char *configfiles[] = {"recoll.conf", "mimemap", "mimeconf", 
+				    "mimeview"};
+static int ncffiles = sizeof(configfiles) / sizeof(char *);
+bool RclConfig::initUserConfig()
+{
+    // Explanatory text
+    const int bs = sizeof(blurb0)+PATH_MAX+1;
+    char blurb[bs];
+    string exdir = path_cat(m_datadir, "examples");
+    snprintf(blurb, bs, blurb0, exdir.c_str());
+
+    // Use protective 700 mode to create the top configuration
+    // directory: documents can be reconstructed from index data.
+    if (!path_exists(m_confdir) && 
+	mkdir(m_confdir.c_str(), 0700) < 0) {
+	m_reason += string("mkdir(") + m_confdir + ") failed: " + 
+	    strerror(errno);
+	return false;
+    }
+    string lang = localelang();
+    for (int i = 0; i < ncffiles; i++) {
+	string dst = path_cat(m_confdir, string(configfiles[i])); 
+	if (!path_exists(dst)) {
+	    FILE *fp = fopen(dst.c_str(), "w");
+	    if (fp) {
+		fprintf(fp, "%s\n", blurb);
+		if (!strcmp(configfiles[i], "recoll.conf")) {
+		    // Add improved unac_except_trans for some languages
+		    if (lang == "se" || lang == "dk" || lang == "no" || 
+			lang == "fi") {
+			fprintf(fp, "%s\n", swedish_ex);
+		    } else if (lang == "de") {
+			fprintf(fp, "%s\n", german_ex);
+		    }
+		}
+		fclose(fp);
+	    } else {
+		m_reason += string("fopen ") + dst + ": " + strerror(errno);
+		return false;
+	    }
+	}
+    }
+    return true;
+}
+
+void RclConfig::freeAll() 
+{
+    delete m_conf;
+    delete mimemap;
+    delete mimeconf; 
+    delete mimeview; 
+    delete m_fields;
+    delete m_ptrans;
+    delete STOPSUFFIXES;
+    // just in case
+    zeroMe();
+}
+
+void RclConfig::initFrom(const RclConfig& r)
+{
+    zeroMe();
+    if (!(m_ok = r.m_ok))
+	return;
+    m_reason = r.m_reason;
+    m_confdir = r.m_confdir;
+    m_datadir = r.m_datadir;
+    m_keydir = r.m_keydir;
+    m_cdirs = r.m_cdirs;
+    if (r.m_conf)
+	m_conf = new ConfStack(*(r.m_conf));
+    if (r.mimemap)
+	mimemap = new ConfStack(*(r.mimemap));
+    if (r.mimeconf)
+	mimeconf = new ConfStack(*(r.mimeconf));
+    if (r.mimeview)
+	mimeview = new ConfStack(*(r.mimeview));
+    if (r.m_fields)
+	m_fields = new ConfStack(*(r.m_fields));
+    if (r.m_ptrans)
+	m_ptrans = new ConfSimple(*(r.m_ptrans));
+    m_fldtotraits = r.m_fldtotraits;
+    m_aliastocanon = r.m_aliastocanon;
+    m_aliastoqcanon = r.m_aliastoqcanon;
+    m_storedFields = r.m_storedFields;
+    m_xattrtofld = r.m_xattrtofld;
+    if (r.m_stopsuffixes)
+	m_stopsuffixes = new SuffixStore(*((SuffixStore*)r.m_stopsuffixes));
+    m_maxsufflen = r.m_maxsufflen;
+    m_defcharset = r.m_defcharset;
+
+    initParamStale(m_conf, mimemap);
+
+    m_thrConf = r.m_thrConf;
+}
+
+void RclConfig::initParamStale(ConfNull *cnf, ConfNull *mimemap)
+{
+    m_oldstpsuffstate.init(mimemap);
+    m_stpsuffstate.init(cnf);
+    m_skpnstate.init(cnf);
+    m_rmtstate.init(cnf);
+    m_xmtstate.init(cnf);
+    m_mdrstate.init(cnf);
+}
+
+#else // -> Test
+
+#include 
+#include 
+
+#include 
+#include 
+#include 
+
+using namespace std;
+
+#include "debuglog.h"
+#include "rclinit.h"
+#include "rclconfig.h"
+#include "cstr.h"
+
+static char *thisprog;
+
+static char usage [] = "\n"
+"-c: check a few things in the configuration files\n"
+"[-s subkey] -q param : query parameter value\n"
+"-f : print some field data\n"
+"  : default: print parameters\n"
+
+;
+static void
+Usage(void)
+{
+    fprintf(stderr, "%s: usage: %s\n", thisprog, usage);
+    exit(1);
+}
+
+static int     op_flags;
+#define OPT_MOINS 0x1
+#define OPT_s	  0x2 
+#define OPT_q	  0x4 
+#define OPT_c     0x8
+#define OPT_f     0x10
+
+int main(int argc, char **argv)
+{
+    string pname, skey;
+    
+    thisprog = argv[0];
+    argc--; argv++;
+
+    while (argc > 0 && **argv == '-') {
+	(*argv)++;
+	if (!(**argv))
+	    /* Cas du "adb - core" */
+	    Usage();
+	while (**argv)
+	    switch (*(*argv)++) {
+	    case 'c':	op_flags |= OPT_c; break;
+	    case 'f':	op_flags |= OPT_f; break;
+	    case 's':	op_flags |= OPT_s; if (argc < 2)  Usage();
+		skey = *(++argv);
+		argc--; 
+		goto b1;
+	    case 'q':	op_flags |= OPT_q; if (argc < 2)  Usage();
+		pname = *(++argv);
+		argc--; 
+		goto b1;
+	    default: Usage();	break;
+	    }
+    b1: argc--; argv++;
+    }
+
+    if (argc != 0)
+	Usage();
+
+    string reason;
+    RclConfig *config = recollinit(0, 0, reason);
+    if (config == 0 || !config->ok()) {
+	cerr << "Configuration problem: " << reason << endl;
+	exit(1);
+    }
+    if (op_flags & OPT_s)
+	config->setKeyDir(skey);
+    if (op_flags & OPT_q) {
+	string value;
+	if (!config->getConfParam(pname, value)) {
+	    fprintf(stderr, "getConfParam failed for [%s]\n", pname.c_str());
+	    exit(1);
+	}
+	printf("[%s] -> [%s]\n", pname.c_str(), value.c_str());
+    } else if (op_flags & OPT_f) {
+	set stored = config->getStoredFields();
+	set indexed = config->getIndexedFields();
+	cout << "Stored fields: ";
+        for (set::const_iterator it = stored.begin(); 
+             it != stored.end(); it++) {
+            cout << "[" << *it << "] ";
+        }
+	cout << endl;	
+	cout << "Indexed fields: ";
+        for (set::const_iterator it = indexed.begin(); 
+             it != indexed.end(); it++) {
+	    const FieldTraits *ftp;
+	    config->getFieldTraits(*it, &ftp);
+	    if (ftp)
+		cout << "[" << *it << "]" << " -> [" << ftp->pfx << "] ";
+	    else 
+		cout << "[" << *it << "]" << " -> [" << "(none)" << "] ";
+
+        }
+	cout << endl;	
+    } else if (op_flags & OPT_c) {
+	// Checking the configuration consistency
+	
+	// Find and display category names
+        vector catnames;
+        config->getMimeCategories(catnames);
+        cout << "Categories: ";
+        for (vector::const_iterator it = catnames.begin(); 
+             it != catnames.end(); it++) {
+            cout << *it << " ";
+        }
+        cout << endl;
+
+	// Compute union of all types from each category. Check that there
+	// are no duplicates while we are at it.
+        set allmtsfromcats;
+        for (vector::const_iterator it = catnames.begin(); 
+             it != catnames.end(); it++) {
+            vector cts;
+            config->getMimeCatTypes(*it, cts);
+            for (vector::const_iterator it1 = cts.begin(); 
+                 it1 != cts.end(); it1++) {
+                // Already in map -> duplicate
+                if (allmtsfromcats.find(*it1) != allmtsfromcats.end()) {
+                    cout << "Duplicate: [" << *it1 << "]" << endl;
+                }
+                allmtsfromcats.insert(*it1);
+            }
+        }
+
+	// Retrieve complete list of mime types 
+        vector mtypes = config->getAllMimeTypes();
+
+	// And check that each mime type is found in exactly one category
+        for (vector::const_iterator it = mtypes.begin();
+             it != mtypes.end(); it++) {
+            if (allmtsfromcats.find(*it) == allmtsfromcats.end()) {
+                cout << "Not found in catgs: [" << *it << "]" << endl;
+            }
+        }
+
+	// List mime types not in mimeview
+        for (vector::const_iterator it = mtypes.begin();
+             it != mtypes.end(); it++) {
+	    if (config->getMimeViewerDef(*it, "", false).empty()) {
+		cout << "No viewer: [" << *it << "]" << endl;
+	    }
+        }
+
+	// Check that each mime type has an indexer
+        for (vector::const_iterator it = mtypes.begin();
+             it != mtypes.end(); it++) {
+	    if (config->getMimeHandlerDef(*it, false).empty()) {
+		cout << "No filter: [" << *it << "]" << endl;
+	    }
+        }
+
+	// Check that each mime type has a defined icon
+        for (vector::const_iterator it = mtypes.begin();
+             it != mtypes.end(); it++) {
+	    if (config->getMimeIconPath(*it, "") == "document") {
+		cout << "No or generic icon: [" << *it << "]" << endl;
+	    }
+        }
+
+    } else {
+        config->setKeyDir(cstr_null);
+	vector names = config->getConfNames();
+	for (vector::iterator it = names.begin(); 
+	     it != names.end();it++) {
+	    string value;
+	    config->getConfParam(*it, value);
+	    cout << *it << " -> [" << value << "]" << endl;
+	}
+    }
+    exit(0);
+}
+
+#endif // TEST_RCLCONFIG
diff --git a/src/common/rclconfig.h b/src/common/rclconfig.h
new file mode 100644
index 00000000..91117143
--- /dev/null
+++ b/src/common/rclconfig.h
@@ -0,0 +1,409 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#ifndef _RCLCONFIG_H_INCLUDED_
+#define _RCLCONFIG_H_INCLUDED_
+#include "autoconfig.h"
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include UNORDERED_SET_INCLUDE
+
+using std::string;
+using std::vector;
+using std::pair;
+using std::set;
+using std::map;
+
+#include "conftree.h"
+#include "smallut.h"
+
+class RclConfig;
+
+// A small class used for parameters that need to be computed from the
+// config string, and which can change with the keydir. Minimize work
+// by using the keydirgen and a saved string to avoid unneeded
+// recomputations
+class ParamStale {
+public:
+    RclConfig *parent;
+    ConfNull  *conffile;
+    string    paramname;
+    bool      active; // Check at init if config defines name at all
+    int       savedkeydirgen;
+    string    savedvalue;
+
+    ParamStale(RclConfig *rconf, const string& nm);
+    void init(ConfNull *cnf);
+    bool needrecompute();
+};
+
+// Hold the description for an external metadata-gathering command
+struct MDReaper {
+  string fieldname;
+  vector cmdv;
+};
+
+// Data associated to a indexed field name: 
+struct FieldTraits {
+    string pfx; // indexing prefix, 
+    int    wdfinc; // Index time term frequency increment (default 1)
+    double boost; // Query time boost (default 1.0)
+    bool   pfxonly; // Suppress prefix-less indexing
+    bool   noterms; // Don't add term to highlight data (e.g.: rclbes)
+    FieldTraits() 
+        : wdfinc(1), boost(1.0), pfxonly(false), noterms(false)
+        {}
+};
+
+class RclConfig {
+ public:
+
+    // Constructor: we normally look for a configuration file, except
+    // if this was specified on the command line and passed through
+    // argcnf
+    RclConfig(const string *argcnf = 0);
+
+    RclConfig(const RclConfig &r) 
+    : m_oldstpsuffstate(this, "recoll_noindex"),
+      m_stpsuffstate(this, "noContentSuffixes"),
+      m_skpnstate(this, "skippedNames"),
+      m_rmtstate(this, "indexedmimetypes"),
+      m_xmtstate(this, "excludedmimetypes"),
+      m_mdrstate(this, "metadatacmds") {
+        initFrom(r);
+    }
+
+    ~RclConfig() {
+	freeAll();
+    }
+
+    // Return a writable clone of the main config. This belongs to the
+    // caller (must delete it when done)
+    ConfNull *cloneMainConfig();
+
+    /** (re)Read recoll.conf */
+    bool updateMainConfig();
+
+    bool ok() const {return m_ok;}
+    const string &getReason() const {return m_reason;}
+
+    /** Return the directory where this configuration is stored. 
+     *  This was possibly silently created by the rclconfig
+     *  constructor it it is the default one (~/.recoll) and it did 
+     *  not exist yet. */
+    string getConfDir() const {return m_confdir;}
+
+    /** Check if the config files were modified since we read them */
+    bool sourceChanged() const;
+
+    /** Returns true if this is ~/.recoll */
+    bool isDefaultConfig() const;
+    /** Get the local value for /usr/local/share/recoll/ */
+    const string& getDatadir() const {return m_datadir;}
+
+    /** Set current directory reference, and fetch automatic parameters. */
+    void setKeyDir(const string &dir);
+    string getKeyDir() const {return m_keydir;}
+
+    /** Get generic configuration parameter according to current keydir */
+    bool getConfParam(const string &name, string &value, 
+                      bool shallow=false) const
+    {
+	if (m_conf == 0)
+	    return false;
+	return m_conf->get(name, value, m_keydir, shallow);
+    }
+    /** Variant with autoconversion to int */
+    bool getConfParam(const string &name, int *value, bool shallow=false) const;
+    /** Variant with autoconversion to bool */
+    bool getConfParam(const string &name, bool *value, 
+                      bool shallow=false) const;
+    /** Variant with conversion to vector
+     *  (stringToStrings). Can fail if the string is malformed. */
+    bool getConfParam(const string &name, vector *value, 
+                      bool shallow=false) const;
+    /** Variant with conversion to vector */
+    bool getConfParam(const string &name, vector *value, 
+                      bool shallow=false) const;
+
+    enum ThrStage {ThrIntern=0, ThrSplit=1, ThrDbWrite=2};
+    pair getThrConf(ThrStage who) const;
+
+    /** 
+     * Get list of config names under current sk, with possible 
+     * wildcard filtering 
+     */
+    vector getConfNames(const char *pattern = 0) const
+    {
+	return m_conf->getNames(m_keydir, pattern);
+    }
+
+    /** Check if name exists anywhere in config */
+    bool hasNameAnywhere(const string& nm) const
+    {
+        return m_conf? m_conf->hasNameAnywhere(nm) : false;
+    }
+
+
+    /** Get default charset for current keydir (was set during setKeydir) 
+     * filenames are handled differently */
+    const string &getDefCharset(bool filename = false) const;
+
+    /** Get list of top directories. This is needed from a number of places
+     * and needs some cleaning-up code. An empty list is always an error, no
+     * need for other status */
+    vector getTopdirs() const;
+
+    string getConfdirPath(const char *varname, const char *dflt) const;
+    /** Get database directory */
+    string getDbDir() const;
+    /** Get stoplist file name */
+    string getStopfile() const;
+    /** Get synonym groups file name */
+    string getSynGroupsFile() const;
+    /** Get indexing pid file name */
+    string getPidfile() const;
+    /** Get indexing status file name */
+    string getIdxStatusFile() const;
+    /** Do path translation according to the ptrans table */
+    void urlrewrite(const string& dbdir, string& url) const;
+    ConfSimple *getPTrans()
+    {
+	return m_ptrans;
+    }
+    /** Get Web Queue directory name */
+    string getWebQueueDir() const;
+
+    /** Get list of skipped file names for current keydir */
+    vector& getSkippedNames();
+
+    /** Get list of skipped paths patterns. Doesn't depend on the keydir */
+    vector getSkippedPaths() const;
+    /** Get list of skipped paths patterns, daemon version (may add some)
+	Doesn't depend on the keydir */
+    vector getDaemSkippedPaths() const;
+
+    /** 
+     * mimemap: Check if file name should be ignored because of suffix
+     *
+     * The list of ignored suffixes is initialized on first call, and
+     * not changed for subsequent setKeydirs.
+     */
+    bool inStopSuffixes(const string& fn);
+
+    /** 
+     * Check in mimeconf if input mime type is a compressed one, and
+     * return command to uncompress if it is.
+     *
+     * The returned command has substitutable places for input file name 
+     * and temp dir name, and will return output name
+     */
+    bool getUncompressor(const string &mtpe, vector& cmd) const;
+
+    /** mimemap: compute mimetype */
+    string getMimeTypeFromSuffix(const string &suffix) const;
+    /** mimemap: get a list of all indexable mime types defined */
+    vector getAllMimeTypes() const;
+    /** mimemap: Get appropriate suffix for mime type. This is inefficient */
+    string getSuffixFromMimeType(const string &mt) const;
+
+    /** mimeconf: get input filter for mimetype */
+    string getMimeHandlerDef(const string &mimetype, bool filtertypes=false);
+
+    /** For lines like: "name = some value; attr1 = value1; attr2 = val2"
+     * Separate the value and store the attributes in a ConfSimple 
+     * @param whole the raw value. No way to escape a semi-colon in there.
+     */
+    static bool valueSplitAttributes(const string& whole, string& value, 
+				     ConfSimple& attrs) ;
+
+    /** Return icon path for mime type and tag */
+    string getMimeIconPath(const string &mt, const string& apptag) const;
+
+    /** mimeconf: get list of file categories */
+    bool getMimeCategories(vector&) const;
+    /** mimeconf: is parameter one of the categories ? */
+    bool isMimeCategory(string&) const;
+    /** mimeconf: get list of mime types for category */
+    bool getMimeCatTypes(const string& cat, vector&) const;
+
+    /** mimeconf: get list of gui filters (doc cats by default */
+    bool getGuiFilterNames(vector&) const;
+    /** mimeconf: get query lang frag for named filter */
+    bool getGuiFilter(const string& filtername, string& frag) const;
+
+    /** fields: get field prefix from field name. Use additional query
+       aliases if isquery is set */
+    bool getFieldTraits(const string& fldname, const FieldTraits **,
+        bool isquery = false) const;
+
+    const set& getStoredFields() const {return m_storedFields;}
+
+    set getIndexedFields() const;
+
+    /** Get canonic name for possible alias */
+    string fieldCanon(const string& fld) const;
+
+    /** Get canonic name for possible alias, including query-only aliases */
+    string fieldQCanon(const string& fld) const;
+
+    /** Get xattr name to field names translations */
+    const map& getXattrToField() const {return m_xattrtofld;}
+
+    /** Get value of a parameter inside the "fields" file. Only some filters 
+     * use this (ie: mh_mail). The information specific to a given filter
+     * is typically stored in a separate section(ie: [mail]) 
+     */
+    vector getFieldSectNames(const string &sk, const char* = 0) const;
+    bool getFieldConfParam(const string &name, const string &sk, string &value)
+    const;
+
+    /** mimeview: get/set external viewer exec string(s) for mimetype(s) */
+    string getMimeViewerDef(const string &mimetype, const string& apptag, 
+			    bool useall) const;
+    string getMimeViewerAllEx() const;
+    bool setMimeViewerAllEx(const string& allex);
+    bool getMimeViewerDefs(vector >&) const;
+    bool setMimeViewerDef(const string& mimetype, const string& cmd);
+    /** Check if mime type is designated as needing no uncompress before view
+     * (if a file of this type is found compressed). Default is true,
+     *  exceptions are found in the nouncompforviewmts mimeview list */
+    bool mimeViewerNeedsUncomp(const string &mimetype) const;
+
+    /** Retrieve extra metadata-gathering commands */
+    const vector& getMDReapers();
+
+    /** Store/retrieve missing helpers description string */
+    bool getMissingHelperDesc(string&) const;
+    void storeMissingHelperDesc(const string &s);
+
+    /** Find exec file for external filter. 
+     *
+     * If the input is an absolute path, we just return it. Else We
+     * look in $RECOLL_FILTERSDIR, "filtersdir" from the config file,
+     * $RECOLL_CONFDIR/. If nothing is found, we return the input with
+     * the assumption that this will be used with a PATH-searching
+     * exec.
+     *
+     * @param cmd is normally the command name from the command string 
+     *    returned by getMimeHandlerDef(), but this could be used for any 
+     *    command. If cmd begins with a /, we return cmd without
+     *    further processing.
+     */
+    string findFilter(const string& cmd) const;
+
+    /** Thread config init is not done automatically because not all
+	programs need it and it uses debuglog so that it's better to
+	call it after primary init */
+    void initThrConf();
+
+    const string& getOrigCwd() 
+    {
+	return o_origcwd;
+    }
+
+    RclConfig& operator=(const RclConfig &r) {
+	if (this != &r) {
+	    freeAll();
+	    initFrom(r);
+	}
+	return *this;
+    }
+
+    friend class ParamStale;
+
+ private:
+    int m_ok;
+    string m_reason;    // Explanation for bad state
+    string m_confdir;   // User directory where the customized files are stored
+    string m_datadir;   // Example: /usr/local/share/recoll
+    string m_keydir;    // Current directory used for parameter fetches.
+    int    m_keydirgen; // To help with knowing when to update computed data.
+
+    vector m_cdirs; // directory stack for the confstacks
+
+    ConfStack *m_conf;   // Parsed configuration files
+    ConfStack *mimemap;  // The files don't change with keydir, 
+    ConfStack *mimeconf; // but their content may depend on it.
+    ConfStack *mimeview; // 
+    ConfStack *m_fields;
+    ConfSimple            *m_ptrans; // Paths translations
+    map  m_fldtotraits; // Field to field params
+    map  m_aliastocanon;
+    map  m_aliastoqcanon;
+    set          m_storedFields;
+    map  m_xattrtofld;
+
+    void        *m_stopsuffixes;
+    unsigned int m_maxsufflen;
+    ParamStale   m_oldstpsuffstate; // Values from user mimemap, now obsolete
+    ParamStale   m_stpsuffstate;
+
+    ParamStale   m_skpnstate;
+    vector m_skpnlist;
+
+    // Original current working directory. Set once at init before we do any
+    // chdir'ing and used for converting user args to absolute paths.
+    static string o_origcwd;
+
+    // Parameters auto-fetched on setkeydir
+    string m_defcharset;
+    static string o_localecharset;
+    // Limiting set of mime types to be processed. Normally empty.
+    ParamStale    m_rmtstate;
+    STD_UNORDERED_SET   m_restrictMTypes; 
+    // Exclusion set of mime types. Normally empty
+    ParamStale    m_xmtstate;
+    STD_UNORDERED_SET   m_excludeMTypes; 
+
+    vector > m_thrConf;
+
+    // Same idea with the metadata-gathering external commands,
+    // (e.g. used to reap tagging info: "tmsu tags %f")
+    ParamStale    m_mdrstate;
+    vector m_mdreapers;
+
+    /** Create initial user configuration */
+    bool initUserConfig();
+    /** Init all ParamStale members */
+    void initParamStale(ConfNull *cnf, ConfNull *mimemap);
+    /** Copy from other */
+    void initFrom(const RclConfig& r);
+    /** Init pointers to 0 */
+    void zeroMe();
+    /** Free data then zero pointers */
+    void freeAll();
+    bool readFieldsConfig(const string& errloc);
+};
+
+// This global variable defines if we are running with an index
+// stripped of accents and case or a raw one. Ideally, it should be
+// constant, but it needs to be initialized from the configuration, so
+// there is no way to do this. It never changes after initialization
+// of course. Changing the value on a given index imposes a
+// reset. When using multiple indexes, all must have the same value
+extern bool o_index_stripchars;
+
+// This global variable defines if we use mtime instead of ctime for
+// up-to-date tests. This is mostly incompatible with xattr indexing,
+// in addition to other issues. See recoll.conf comments. 
+extern bool o_uptodate_test_use_mtime;
+
+#endif /* _RCLCONFIG_H_INCLUDED_ */
diff --git a/src/common/rclinit.cpp b/src/common/rclinit.cpp
new file mode 100644
index 00000000..145a7520
--- /dev/null
+++ b/src/common/rclinit.cpp
@@ -0,0 +1,392 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#include "autoconfig.h"
+
+#include 
+#ifdef _WIN32
+#include "safewindows.h"
+#endif
+#include 
+#include 
+#include 
+#include 
+#if !defined(PUTENV_ARG_CONST)
+#include 
+#endif
+
+#include "debuglog.h"
+#include "rclconfig.h"
+#include "rclinit.h"
+#include "pathut.h"
+#include "unac.h"
+#include "smallut.h"
+#include "execmd.h"
+
+static pthread_t mainthread_id;
+
+// Signal etc. processing. We want to be able to properly close the
+// index if we are currently writing to it.
+//
+// This is active if the sigcleanup parameter to recollinit is set,
+// which only recollindex does. We arrange for the handler to be
+// called when process termination is requested either by the system
+// or a user keyboard intr.
+//
+// The recollindex handler just sets a global termination flag (plus
+// the cancelcheck thing), which are tested in all timeout loops
+// etc. When the flag is seen, the main thread processing returns, and
+// recollindex calls exit().
+//
+// The other parameter, to recollinit(), cleanup, is set as an
+// atexit() routine, it does the job of actually signalling the
+// workers to stop and tidy up. It's automagically called by exit().
+
+#ifndef _WIN32
+static void siglogreopen(int)
+{
+    if (recoll_ismainthread())
+	DebugLog::reopen();
+}
+
+// We would like to block SIGCHLD globally, but we can't because
+// QT uses it. Have to block it inside execmd.cpp
+static const int catchedSigs[] = {SIGINT, SIGQUIT, SIGTERM, SIGUSR1, SIGUSR2};
+void initAsyncSigs(void (*sigcleanup)(int))
+{
+    // We ignore SIGPIPE always. All pieces of code which can write to a pipe
+    // must check write() return values.
+    signal(SIGPIPE, SIG_IGN);
+
+    // Install app signal handler
+    if (sigcleanup) {
+	struct sigaction action;
+	action.sa_handler = sigcleanup;
+	action.sa_flags = 0;
+	sigemptyset(&action.sa_mask);
+	for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++)
+	    if (signal(catchedSigs[i], SIG_IGN) != SIG_IGN) {
+		if (sigaction(catchedSigs[i], &action, 0) < 0) {
+		    perror("Sigaction failed");
+		}
+	    }
+    }
+
+    // Install log rotate sig handler
+    {
+	struct sigaction action;
+	action.sa_handler = siglogreopen;
+	action.sa_flags = 0;
+	sigemptyset(&action.sa_mask);
+	if (signal(SIGHUP, SIG_IGN) != SIG_IGN) {
+	    if (sigaction(SIGHUP, &action, 0) < 0) {
+		perror("Sigaction failed");
+	    }
+	}
+    }
+}
+void recoll_exitready()
+{
+}
+
+#else // _WIN32 ->
+
+// Windows signals etc.
+//
+// ^C can be caught by the signal() emulation, but not ^Break
+// apparently, which is why we use the native approach too
+//
+// When a keyboard interrupt occurs, windows creates a thread inside
+// the process and calls the handler. The process exits when the
+// handler returns or after at most 10S
+//
+// This should also work, with different signals (CTRL_LOGOFF_EVENT,
+// CTRL_SHUTDOWN_EVENT) when the user exits or the system shuts down).
+//
+// Unfortunately, this is not the end of the story. It seems that in
+// recent Windows version "some kinds" of apps will not reliably
+// receive the signals. "Some kind" is variably defined, for example a
+// simple test program works when built with vs 2015, but not
+// mingw. See the following discussion thread for tentative
+// explanations, it seems that importing or not from user32.dll is the
+// determining factor.
+// https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/abf09824-4e4c-4f2c-ae1e-5981f06c9c6e/windows-7-console-application-has-no-way-of-trapping-logoffshutdown-event?forum=windowscompatibility
+// In any case, it appears that the only reliable way to be advised of
+// system shutdown or user exit is to create an "invisible window" and
+// process window messages, which we now do.
+
+static void (*l_sigcleanup)(int);
+static HANDLE eWorkFinished = INVALID_HANDLE_VALUE;
+
+static BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
+{
+    LOGDEB(("CtrlHandler\n"));
+    if (l_sigcleanup == 0)
+        return FALSE;
+
+    switch(fdwCtrlType) { 
+    case CTRL_C_EVENT: 
+    case CTRL_CLOSE_EVENT: 
+    case CTRL_BREAK_EVENT: 
+    case CTRL_LOGOFF_EVENT: 
+    case CTRL_SHUTDOWN_EVENT:
+    {
+        l_sigcleanup(SIGINT);
+        LOGDEB0(("CtrlHandler: waiting for exit ready\n"));
+	DWORD res = WaitForSingleObject(eWorkFinished, INFINITE);
+	if (res != WAIT_OBJECT_0) {
+            LOGERR(("CtrlHandler: exit ack wait failed\n"));
+	}
+        LOGDEB0(("CtrlHandler: got exit ready event, exiting\n"));
+        return TRUE;
+    }
+    default: 
+        return FALSE; 
+    } 
+} 
+
+LRESULT CALLBACK MainWndProc(HWND hwnd , UINT msg , WPARAM wParam,
+                             LPARAM lParam)
+{
+    switch (msg) {
+    case WM_QUERYENDSESSION:
+    case WM_ENDSESSION:
+    case WM_DESTROY:
+    case WM_CLOSE:
+    {
+        l_sigcleanup(SIGINT);
+        LOGDEB(("MainWndProc: got end message, waiting for work finished\n"));
+	DWORD res = WaitForSingleObject(eWorkFinished, INFINITE);
+	if (res != WAIT_OBJECT_0) {
+            LOGERR(("MainWndProc: exit ack wait failed\n"));
+	}
+        LOGDEB(("MainWindowProc: got exit ready event, exiting\n"));
+        return TRUE;
+    }
+    default:
+        return DefWindowProc(hwnd, msg, wParam, lParam);
+    }
+    return TRUE;
+}
+
+bool CreateInvisibleWindow()
+{
+    HWND hwnd;
+    WNDCLASS wc = {0};
+
+    wc.lpfnWndProc = (WNDPROC)MainWndProc;
+    wc.hInstance = GetModuleHandle(NULL);
+    wc.hIcon = LoadIcon(GetModuleHandle(NULL), "TestWClass");
+    wc.lpszClassName = "TestWClass";
+    RegisterClass(&wc);
+
+    hwnd =
+        CreateWindowEx(0, "TestWClass", "TestWClass", WS_OVERLAPPEDWINDOW,
+                       CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
+                       CW_USEDEFAULT, (HWND) NULL, (HMENU) NULL,
+                       GetModuleHandle(NULL), (LPVOID) NULL);
+    if (!hwnd) {
+        return FALSE;
+    }
+    return TRUE;
+}
+
+DWORD WINAPI RunInvisibleWindowThread(LPVOID lpParam)
+{
+    MSG msg;
+    CreateInvisibleWindow();
+    while (GetMessage(&msg, (HWND) NULL , 0 , 0)) {
+        TranslateMessage(&msg);
+        DispatchMessage(&msg);
+    }
+    return 0;
+}
+
+static const int catchedSigs[] = {SIGINT, SIGTERM};
+void initAsyncSigs(void (*sigcleanup)(int))
+{
+    DWORD tid;
+    // Install app signal handler
+    if (sigcleanup) {
+        l_sigcleanup = sigcleanup;
+	for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++) {
+	    if (signal(catchedSigs[i], SIG_IGN) != SIG_IGN) {
+		signal(catchedSigs[i], sigcleanup);
+	    }
+        }
+    }
+    HANDLE hInvisiblethread =
+        CreateThread(NULL, 0, RunInvisibleWindowThread, NULL, 0, &tid);
+    SetConsoleCtrlHandler((PHANDLER_ROUTINE)CtrlHandler, TRUE);
+    eWorkFinished = CreateEvent(NULL, TRUE, FALSE, NULL);
+    if (eWorkFinished == INVALID_HANDLE_VALUE) {
+        LOGERR(("initAsyncSigs: error creating exitready event\n"));
+    }
+}
+void recoll_exitready()
+{
+    LOGDEB(("recoll_exitready()\n"));
+    if (!SetEvent(eWorkFinished)) {
+        LOGERR(("recoll_exitready: SetEvent failed\n"));
+    }
+}
+
+#endif
+
+RclConfig *recollinit(RclInitFlags flags, 
+		      void (*cleanup)(void), void (*sigcleanup)(int), 
+		      string &reason, const string *argcnf)
+{
+    if (cleanup)
+	atexit(cleanup);
+
+    // Make sure the locale is set. This is only for converting file names 
+    // to utf8 for indexing.
+    setlocale(LC_CTYPE, "");
+
+    DebugLog::getdbl()->setloglevel(DEBDEB1);
+    DebugLog::setfilename("stderr");
+    if (getenv("RECOLL_LOGDATE"))
+        DebugLog::getdbl()->logdate(1);
+
+    initAsyncSigs(sigcleanup);
+    
+    RclConfig *config = new RclConfig(argcnf);
+    if (!config || !config->ok()) {
+	reason = "Configuration could not be built:\n";
+	if (config)
+	    reason += config->getReason();
+	else
+	    reason += "Out of memory ?";
+	return 0;
+    }
+
+    // Retrieve the log file name and level. Daemon and batch indexing
+    // processes may use specific values, else fall back on common
+    // ones.
+    string logfilename, loglevel;
+    if (flags & RCLINIT_DAEMON) {
+	config->getConfParam(string("daemlogfilename"), logfilename);
+	config->getConfParam(string("daemloglevel"), loglevel);
+    }
+    if ((flags & RCLINIT_IDX) && logfilename.empty())
+	config->getConfParam(string("idxlogfilename"), logfilename);
+    if ((flags & RCLINIT_IDX) && loglevel.empty()) 
+	config->getConfParam(string("idxloglevel"), loglevel);
+
+    if (logfilename.empty())
+	config->getConfParam(string("logfilename"), logfilename);
+    if (loglevel.empty())
+	config->getConfParam(string("loglevel"), loglevel);
+
+    // Initialize logging
+    if (!logfilename.empty()) {
+	logfilename = path_tildexpand(logfilename);
+	// If not an absolute path or , compute relative to config dir
+	if (!path_isabsolute(logfilename) && 
+	    !DebugLog::DebugLog::isspecialname(logfilename.c_str())) {
+	    logfilename = path_cat(config->getConfDir(), logfilename);
+	}
+	DebugLog::setfilename(logfilename.c_str());
+    }
+    if (!loglevel.empty()) {
+	int lev = atoi(loglevel.c_str());
+	DebugLog::getdbl()->setloglevel(lev);
+    }
+
+    // Make sure the locale charset is initialized (so that multiple
+    // threads don't try to do it at once).
+    config->getDefCharset();
+
+    mainthread_id = pthread_self();
+
+    // Init unac locking
+    unac_init_mt();
+    // Init smallut and pathut static values
+    pathut_init_mt();
+    smallut_init_mt();
+    // Init execmd.h static PATH and PATHELT splitting
+    {string bogus;
+        ExecCmd::which("nosuchcmd", bogus);
+    }
+    
+    // Init Unac translation exceptions
+    string unacex;
+    if (config->getConfParam("unac_except_trans", unacex) && !unacex.empty()) 
+	unac_set_except_translations(unacex.c_str());
+
+#ifndef IDX_THREADS
+    ExecCmd::useVfork(true);
+#else
+    // Keep threads init behind log init, but make sure it's done before
+    // we do the vfork choice ! The latter is not used any more actually, 
+    // we always use vfork except if forbidden by config.
+    config->initThrConf();
+
+    bool novfork;
+    config->getConfParam("novfork", &novfork);
+    if (novfork) {
+	LOGDEB0(("rclinit: will use fork() for starting commands\n"));
+        ExecCmd::useVfork(false);
+    } else {
+	LOGDEB0(("rclinit: will use vfork() for starting commands\n"));
+	ExecCmd::useVfork(true);
+    }
+#endif
+
+    int flushmb;
+    if (config->getConfParam("idxflushmb", &flushmb) && flushmb > 0) {
+	LOGDEB1(("rclinit: idxflushmb=%d, set XAPIAN_FLUSH_THRESHOLD to 10E6\n",
+		 flushmb));
+	static const char *cp = "XAPIAN_FLUSH_THRESHOLD=1000000";
+#ifdef PUTENV_ARG_CONST
+	::putenv(cp);
+#else
+	::putenv(strdup(cp));
+#endif
+    }
+
+    return config;
+}
+
+// Signals are handled by the main thread. All others should call this
+// routine to block possible signals
+void recoll_threadinit()
+{
+#ifndef _WIN32
+    sigset_t sset;
+    sigemptyset(&sset);
+
+    for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++)
+	sigaddset(&sset, catchedSigs[i]);
+    sigaddset(&sset, SIGHUP);
+    pthread_sigmask(SIG_BLOCK, &sset, 0);
+#else
+    // Not sure that this is needed at all or correct under windows.
+    for (unsigned int i = 0; i < sizeof(catchedSigs) / sizeof(int); i++) {
+        if (signal(catchedSigs[i], SIG_IGN) != SIG_IGN) {
+            signal(catchedSigs[i], SIG_IGN);
+        }
+    }
+#endif
+}
+
+bool recoll_ismainthread()
+{
+    return pthread_equal(pthread_self(), mainthread_id);
+}
+
+
diff --git a/src/common/rclinit.h b/src/common/rclinit.h
new file mode 100644
index 00000000..5a41f67e
--- /dev/null
+++ b/src/common/rclinit.h
@@ -0,0 +1,66 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#ifndef _RCLINIT_H_INCLUDED_
+#define _RCLINIT_H_INCLUDED_
+
+#include 
+#ifndef NO_NAMESPACES
+using std::string;
+#endif
+
+class RclConfig;
+/**
+ * Initialize by reading configuration, opening log file, etc.
+ * 
+ * This must be called from the main thread before starting any others. It sets
+ * up the global signal handling. other threads must call recoll_threadinit()
+ * when starting.
+ *
+ * @param flags   misc modifiers. These are currently only used to customize 
+ *      the log file and verbosity.
+ * @param cleanup function to call before exiting (atexit)
+ * @param sigcleanup function to call on terminal signal (INT/HUP...) This 
+ *       should typically set a flag which tells the program (recoll, 
+ *       recollindex etc.. to exit as soon as possible (after closing the db, 
+ *       etc.). cleanup will then be called by exit().
+ * @param reason in case of error: output string explaining things
+ * @param argcnf Configuration directory name from the command line (overriding
+ *               default and environment
+ * @return the parsed configuration.
+ */
+enum RclInitFlags {RCLINIT_NONE=0, RCLINIT_DAEMON=1, RCLINIT_IDX=2};
+extern RclConfig *recollinit(RclInitFlags flags,
+			     void (*cleanup)(void), void (*sigcleanup)(int), 
+			     string &reason, const string *argcnf = 0);
+inline RclConfig *recollinit(void (*cleanup)(void), void (*sigcleanup)(int), 
+			     string &reason, const string *argcnf = 0) {
+    return recollinit(RCLINIT_NONE, cleanup, sigcleanup, reason, argcnf);
+}
+
+// Threads need to call this to block signals.  
+// The main thread handles all signals.
+extern void recoll_threadinit();
+
+// Check if main thread
+extern bool recoll_ismainthread();
+
+// Should be called while exiting asap when critical cleanup (db
+// close) has been performed. Only useful for the indexer (writes to
+// the db), and only actually does something on Windows.
+extern void recoll_exitready();
+
+#endif /* _RCLINIT_H_INCLUDED_ */
diff --git a/src/common/rclversion.h.in b/src/common/rclversion.h.in
new file mode 100644
index 00000000..4b8fe507
--- /dev/null
+++ b/src/common/rclversion.h.in
@@ -0,0 +1 @@
+static const char *rclversionstr = "@RCLVERSION@";
diff --git a/src/common/syngroups.cpp b/src/common/syngroups.cpp
new file mode 100644
index 00000000..798b9249
--- /dev/null
+++ b/src/common/syngroups.cpp
@@ -0,0 +1,254 @@
+/* Copyright (C) 2014 J.F.Dockes
+ *   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.
+ */
+#ifndef TEST_SYNGROUPS
+#include "autoconfig.h"
+
+#include "syngroups.h"
+
+#include "debuglog.h"
+#include "smallut.h"
+
+#include 
+#include UNORDERED_MAP_INCLUDE
+#include 
+#include 
+#include 
+
+using namespace std;
+
+// Note that we are storing each term twice. I don't think that the
+// size could possibly be a serious issue, but if it was, we could
+// reduce the storage a bit by storing (short hash)-> vector
+// correspondances in the direct map, and then checking all the
+// resulting groups for the input word.
+//
+// As it is, a word can only index one group (the last it is found
+// in). It can be part of several groups though (appear in
+// expansions). I really don't know what we should do with multiple
+// groups anyway
+class SynGroups::Internal {
+public:
+    Internal() : ok(false) {
+    }
+    bool ok;
+    // Term to group num 
+    STD_UNORDERED_MAP terms;
+    // Group num to group
+    vector > groups;
+};
+
+bool SynGroups::ok() 
+{
+    return m && m->ok;
+}
+
+SynGroups::~SynGroups()
+{
+    delete m;
+}
+
+SynGroups::SynGroups()
+    : m(new Internal)
+{
+}
+
+bool SynGroups::setfile(const string& fn)
+{
+    LOGDEB(("SynGroups::setfile(%s)\n", fn.c_str()));
+    if (!m) {
+        m = new Internal;
+        if (!m) {
+            LOGERR(("SynGroups:setfile:: new Internal failed: no mem ?\n"));
+            return false;
+        }
+    }
+
+    if (fn.empty()) {
+        delete m;
+        m = 0;
+	return true;
+    }
+
+    ifstream input;
+    input.open(fn.c_str(), ios::in);
+    if (!input.is_open()) {
+	LOGERR(("SynGroups:setfile:: could not open %s errno %d\n",
+		fn.c_str(), errno));
+	return false;
+    }	    
+
+    string cline;
+    bool appending = false;
+    string line;
+    bool eof = false;
+    int lnum = 0;
+
+    for (;;) {
+        cline.clear();
+	getline(input, cline);
+	if (!input.good()) {
+	    if (input.bad()) {
+                LOGERR(("Syngroup::setfile(%s):Parse: input.bad()\n",
+                        fn.c_str()));
+		return false;
+	    }
+	    // Must be eof ? But maybe we have a partial line which
+	    // must be processed. This happens if the last line before
+	    // eof ends with a backslash, or there is no final \n
+            eof = true;
+	}
+	lnum++;
+
+        {
+            string::size_type pos = cline.find_last_not_of("\n\r");
+            if (pos == string::npos) {
+                cline.clear();
+            } else if (pos != cline.length()-1) {
+                cline.erase(pos+1);
+            }
+        }
+
+	if (appending)
+	    line += cline;
+	else
+	    line = cline;
+
+	// Note that we trim whitespace before checking for backslash-eol
+	// This avoids invisible whitespace problems.
+	trimstring(line);
+	if (line.empty() || line.at(0) == '#') {
+            if (eof)
+                break;
+	    continue;
+	}
+	if (line[line.length() - 1] == '\\') {
+	    line.erase(line.length() - 1);
+	    appending = true;
+	    continue;
+	}
+	appending = false;
+
+	vector words;
+	if (!stringToStrings(line, words)) {
+	    LOGERR(("SynGroups:setfile: %s: bad line %d: %s\n",
+		    fn.c_str(), lnum, line.c_str()));
+	    continue;
+	}
+
+	if (words.empty())
+	    continue;
+	if (words.size() == 1) {
+	    LOGERR(("Syngroup::setfile(%s):single term group at line %d ??\n",
+		    fn.c_str(), lnum));
+	    continue;
+	}
+
+	m->groups.push_back(words);
+	for (vector::const_iterator it = words.begin();
+	     it != words.end(); it++) {
+	    m->terms[*it] = m->groups.size()-1;
+	}
+	LOGDEB1(("SynGroups::setfile: group: [%s]\n", 
+		stringsToString(m->groups.back()).c_str()));
+    }
+    m->ok = true;
+    return true;
+}
+
+vector SynGroups::getgroup(const string& term)
+{
+    vector ret;
+    if (!ok())
+	return ret;
+
+    STD_UNORDERED_MAP::const_iterator it1 =
+        m->terms.find(term);
+    if (it1 == m->terms.end()) {
+	LOGDEB1(("SynGroups::getgroup: [%s] not found in direct map\n", 
+		 term.c_str()));
+	return ret;
+    }
+
+    unsigned int idx = it1->second;
+    if (idx >= m->groups.size()) {
+        LOGERR(("SynGroups::getgroup: line index higher than line count !\n"));
+        return ret;
+    }
+    return m->groups[idx];
+}
+
+#else
+
+#include "syngroups.h"
+#include "debuglog.h"
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+using namespace std;
+
+static char *thisprog;
+
+static char usage [] =
+    "syngroups  \n"
+    "  \n\n"
+    ;
+static void Usage(void)
+{
+    fprintf(stderr, "%s: usage:\n%s", thisprog, usage);
+    exit(1);
+}
+
+static int     op_flags;
+#define OPT_MOINS 0x1
+#define OPT_s     0x2
+#define OPT_b     0x4
+
+int main(int argc, char **argv)
+{
+    thisprog = argv[0];
+    argc--; argv++;
+
+    if (argc != 2) {
+        Usage();
+    }
+    string fn = *argv++;argc--;
+    string word = *argv++;argc--;
+
+    DebugLog::getdbl()->setloglevel(DEBDEB1);
+    DebugLog::setfilename("stderr");
+    SynGroups syns;
+    syns.setfile(fn);
+    if (!syns.ok()) {
+	cerr << "Initialization failed\n";
+	return 1;
+    }
+
+    vector group = syns.getgroup(word);
+    cout << group.size() << " terms in group\n";
+    for (vector::const_iterator it = group.begin();
+	 it != group.end(); it++) {
+	cout << "[" << *it << "] ";
+    }
+    cout << endl;
+    return 0;
+}
+
+#endif
diff --git a/src/common/syngroups.h b/src/common/syngroups.h
new file mode 100644
index 00000000..62a71523
--- /dev/null
+++ b/src/common/syngroups.h
@@ -0,0 +1,41 @@
+/* Copyright (C) 2015 J.F.Dockes
+ *   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.
+ */
+
+#ifndef _SYNGROUPS_H_INCLUDED_
+#define _SYNGROUPS_H_INCLUDED_
+
+#include 
+#include 
+
+// Manage synonym groups. This is very different from stemming and
+// case/diac expansion because there is no reference form: all terms
+// in a group are equivalent.
+class SynGroups {
+public:
+    SynGroups();
+    ~SynGroups();
+    bool setfile(const std::string& fname);
+    std::vector getgroup(const std::string& term);
+    bool ok();
+private:
+    class Internal;
+    Internal *m;
+    SynGroups(const SynGroups&);
+    SynGroups& operator=(const SynGroups&);
+};
+
+#endif /* _SYNGROUPS_H_INCLUDED_ */
diff --git a/src/common/textsplit.cpp b/src/common/textsplit.cpp
new file mode 100644
index 00000000..a2eb993f
--- /dev/null
+++ b/src/common/textsplit.cpp
@@ -0,0 +1,1240 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#ifndef TEST_TEXTSPLIT
+#include "autoconfig.h"
+
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include UNORDERED_SET_INCLUDE
+
+#include "textsplit.h"
+#include "debuglog.h"
+//#define UTF8ITER_CHECK
+#include "utf8iter.h"
+#include "uproplist.h"
+
+using namespace std;
+
+/**
+ * Splitting a text into words. The code in this file works with utf-8
+ * in a semi-clean way (see uproplist.h). Ascii still gets special
+ * treatment in the sense that many special characters can only be
+ * ascii (e.g. @, _,...). However, this compromise works quite well
+ * while being much more light-weight than a full-blown Unicode
+ * approach (ICU...)
+ */
+
+// Ascii character classes: we have three main groups, and then some chars
+// are their own class because they want special handling.
+// 
+// We have an array with 256 slots where we keep the character types. 
+// The array could be fully static, but we use a small function to fill it 
+// once.
+// The array is actually a remnant of the original version which did no utf8.
+// Only the lower 127 slots are  now used, but keep it at 256
+// because it makes some tests in the code simpler.
+const unsigned int charclasses_size = 256;
+enum CharClass {LETTER=256, SPACE=257, DIGIT=258, WILD=259, 
+                A_ULETTER=260, A_LLETTER=261, SKIP=262};
+static int charclasses[charclasses_size];
+
+// Non-ascii UTF-8 characters are handled with sets holding all
+// characters with interesting properties. This is far from full-blown
+// management of Unicode properties, but seems to do the job well
+// enough in most common cases
+static vector vpuncblocks;
+static STD_UNORDERED_SET spunc;
+static STD_UNORDERED_SET visiblewhite;
+static STD_UNORDERED_SET sskip;
+
+class CharClassInit {
+public:
+    CharClassInit() 
+    {
+	unsigned int i;
+
+	// Set default value for all: SPACE
+	for (i = 0 ; i < 256 ; i ++)
+	    charclasses[i] = SPACE;
+
+	char digits[] = "0123456789";
+	for (i = 0; i  < strlen(digits); i++)
+	    charclasses[int(digits[i])] = DIGIT;
+
+	char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+	for (i = 0; i  < strlen(upper); i++)
+	    charclasses[int(upper[i])] = A_ULETTER;
+
+	char lower[] = "abcdefghijklmnopqrstuvwxyz";
+	for (i = 0; i  < strlen(lower); i++)
+	    charclasses[int(lower[i])] = A_LLETTER;
+
+	char wild[] = "*?[]";
+	for (i = 0; i  < strlen(wild); i++)
+	    charclasses[int(wild[i])] = WILD;
+
+        // Characters with special treatment:
+        //
+        // The first ones are mostly span-constructing "glue"
+        // characters, for example those typically allowing us to
+        // search for an email address as a whole (bob@isp.org instead
+        // of as a phrase "bob isp org"
+        //
+        // The case of the minus sign is a complicated one. It went
+        // from glue to non-glue to glue along Recoll versions. 
+        // See minus-hyphen-dash.txt in doc/notes
+	char special[] = ".@+-#'_\n\r\f";
+	for (i = 0; i  < strlen(special); i++)
+	    charclasses[int(special[i])] = special[i];
+
+	for (i = 0; i < sizeof(unipunc) / sizeof(int); i++) {
+	    spunc.insert(unipunc[i]);
+	}
+	spunc.insert((unsigned int)-1);
+
+	for (i = 0; i < sizeof(unipuncblocks) / sizeof(int); i++) {
+	    vpuncblocks.push_back(unipuncblocks[i]);
+	}
+	assert((vpuncblocks.size() % 2) == 0);
+
+	for (i = 0; i < sizeof(avsbwht) / sizeof(int); i++) {
+	    visiblewhite.insert(avsbwht[i]);
+	}
+	for (i = 0; i < sizeof(uniskip) / sizeof(int); i++) {
+	    sskip.insert(uniskip[i]);
+	}
+    }
+};
+static const CharClassInit charClassInitInstance;
+
+static inline int whatcc(unsigned int c)
+{
+    if (c <= 127) {
+	return charclasses[c]; 
+    } else {
+        if (c == 0x2010) {
+            // Special treatment for hyphen: handle as ascii minus. See
+            // doc/notes/minus-hyphen-dash.txt
+            return 0x2010;
+        } else if (sskip.find(c) != sskip.end()) {
+	    return SKIP;
+	} else if (spunc.find(c) != spunc.end()) {
+	    return SPACE;
+	} else {
+	    vector::iterator it = 
+		lower_bound(vpuncblocks.begin(), vpuncblocks.end(), c);
+		if (it == vpuncblocks.end())
+			return LETTER;
+	    if (c == *it)
+		return SPACE;
+	    if ((it - vpuncblocks.begin()) % 2 == 1) {
+		return SPACE;
+	    } else {
+		return LETTER;
+	    }
+	} 
+    }
+}
+
+// testing whatcc...
+#if 0
+  unsigned int testvalues[] = {'a', '0', 0x80, 0xbf, 0xc0, 0x05c3, 0x1000, 
+			       0x2000, 0x2001, 0x206e, 0x206f, 0x20d0, 0x2399, 
+			       0x2400, 0x2401, 0x243f, 0x2440, 0xff65};
+  int ntest = sizeof(testvalues) / sizeof(int);
+  for (int i = 0; i < ntest; i++) {
+      int ret = whatcc(testvalues[i]);
+      printf("Tested value 0x%x, returned value %d %s\n",
+	     testvalues[i], ret, ret == LETTER ? "LETTER" : 
+	     ret == SPACE ? "SPACE" : "OTHER");
+  }
+#endif
+
+// CJK Unicode character detection:
+//
+// 2E80..2EFF; CJK Radicals Supplement
+// 3000..303F; CJK Symbols and Punctuation
+// 3040..309F; Hiragana
+// 30A0..30FF; Katakana
+// 3100..312F; Bopomofo
+// 3130..318F; Hangul Compatibility Jamo
+// 3190..319F; Kanbun
+// 31A0..31BF; Bopomofo Extended
+// 31C0..31EF; CJK Strokes
+// 31F0..31FF; Katakana Phonetic Extensions
+// 3200..32FF; Enclosed CJK Letters and Months
+// 3300..33FF; CJK Compatibility
+// 3400..4DBF; CJK Unified Ideographs Extension A
+// 4DC0..4DFF; Yijing Hexagram Symbols
+// 4E00..9FFF; CJK Unified Ideographs
+// A700..A71F; Modifier Tone Letters
+// AC00..D7AF; Hangul Syllables
+// F900..FAFF; CJK Compatibility Ideographs
+// FE30..FE4F; CJK Compatibility Forms
+// FF00..FFEF; Halfwidth and Fullwidth Forms
+// 20000..2A6DF; CJK Unified Ideographs Extension B
+// 2F800..2FA1F; CJK Compatibility Ideographs Supplement
+// Note: the p > 127 test is not necessary, but optimizes away the ascii case
+#define UNICODE_IS_CJK(p)						\
+    ((p) > 127 &&							\
+     (((p) >= 0x2E80 && (p) <= 0x2EFF) ||				\
+      ((p) >= 0x3000 && (p) <= 0x9FFF) ||				\
+      ((p) >= 0xA700 && (p) <= 0xA71F) ||				\
+      ((p) >= 0xAC00 && (p) <= 0xD7AF) ||				\
+      ((p) >= 0xF900 && (p) <= 0xFAFF) ||				\
+      ((p) >= 0xFE30 && (p) <= 0xFE4F) ||				\
+      ((p) >= 0xFF00 && (p) <= 0xFFEF) ||				\
+      ((p) >= 0x20000 && (p) <= 0x2A6DF) ||				\
+      ((p) >= 0x2F800 && (p) <= 0x2FA1F)))
+
+bool TextSplit::isCJK(int c)
+{
+    return UNICODE_IS_CJK(c);
+}
+
+bool          TextSplit::o_processCJK = true;
+unsigned int  TextSplit::o_CJKNgramLen = 2;
+bool          TextSplit::o_noNumbers = false;
+bool          TextSplit::o_deHyphenate = false;
+
+// Final term checkpoint: do some checking (the kind which is simpler
+// to do here than in the main loop), then send term to our client.
+inline bool TextSplit::emitterm(bool isspan, string &w, int pos, 
+				size_t btstart, size_t btend)
+{
+    LOGDEB2(("TextSplit::emitterm: [%s] pos %d\n", w.c_str(), pos));
+
+    int l = int(w.length());
+
+#ifdef TEXTSPLIT_STATS
+    // Update word length statistics. Do this before we filter out
+    // long words because stats are used to detect bad text
+    if (!isspan || m_wordLen == m_span.length())
+	m_stats.newsamp(m_wordChars);
+#endif
+
+    if (l > 0 && l < m_maxWordLength) {
+	// 1 byte word: we index single ascii letters and digits, but
+	// nothing else. We might want to turn this into a test for a
+	// single utf8 character instead ?
+	if (l == 1) {
+	    unsigned int c = ((unsigned int)w[0]) & 0xff;
+	    if (charclasses[c] != A_ULETTER && charclasses[c] != A_LLETTER && 
+                charclasses[c] != DIGIT &&
+		(!(m_flags & TXTS_KEEPWILD) || charclasses[c] != WILD)
+		) {
+		//cerr << "ERASING single letter term " << c << endl;
+		return true;
+	    }
+	}
+	if (pos != m_prevpos || l != m_prevlen) {
+	    bool ret = takeword(w, pos, int(btstart), int(btend));
+	    m_prevpos = pos;
+	    m_prevlen = int(w.length());
+	    return ret;
+	}
+	LOGDEB2(("TextSplit::emitterm:dup: [%s] pos %d\n", w.c_str(), pos));
+    }
+    return true;
+}
+
+// Check for an acronym/abbreviation ie I.B.M. This only works with
+// ascii (no non-ascii utf-8 acronym are possible)
+bool TextSplit::span_is_acronym(string *acronym)
+{
+    bool acron = false;
+
+    if (m_wordLen != m_span.length() && 
+        m_span.length() > 2 && m_span.length() <= 20) {
+        acron = true;
+        // Check odd chars are '.'
+        for (unsigned int i = 1 ; i < m_span.length(); i += 2) {
+            if (m_span[i] != '.') {
+                acron = false;
+                break;
+            }
+        }
+        if (acron) {
+            // Check that even chars are letters
+            for (unsigned int i = 0 ; i < m_span.length(); i += 2) {
+                int c = m_span[i];
+                if (!((c >= 'a' && c <= 'z')||(c >= 'A' && c <= 'Z'))) {
+                    acron = false;
+                    break;
+                }
+            }
+        }
+    }
+    if (acron) {
+        for (unsigned int i = 0; i < m_span.length(); i += 2) {
+            *acronym += m_span[i];
+        }
+    }
+    return acron;
+}
+
+
+// Generate terms from span. Have to take into account the
+// flags: ONLYSPANS, NOSPANS, noNumbers
+bool TextSplit::words_from_span(size_t bp)
+{
+#if 0
+    cerr << "Span: [" << m_span << "] " << " w_i_s size: " << 
+        m_words_in_span.size() <<  " : ";
+    for (unsigned int i = 0; i < m_words_in_span.size(); i++) {
+        cerr << " [" << m_words_in_span[i].first << " " <<
+            m_words_in_span[i].second << "] ";
+                
+    }
+    cerr << endl;
+#endif
+    int spanwords = int(m_words_in_span.size());
+    int pos = m_spanpos;
+    // Byte position of the span start
+    size_t spboffs = bp - m_span.size();
+
+    if (o_deHyphenate && spanwords == 2 && 
+	m_span[m_words_in_span[0].second] == '-') {
+	unsigned int s0 = m_words_in_span[0].first;
+	unsigned int l0 = m_words_in_span[0].second - m_words_in_span[0].first;
+	unsigned int s1 = m_words_in_span[1].first;
+	unsigned int l1 = m_words_in_span[1].second - m_words_in_span[1].first;
+	string word = m_span.substr(s0, l0) + m_span.substr(s1, l1);
+	if (l0 && l1) 
+	    emitterm(false, word,
+		     m_spanpos, spboffs, spboffs + m_words_in_span[1].second);
+    }
+
+    for (int i = 0; 
+         i < ((m_flags&TXTS_ONLYSPANS) ? 1 : spanwords); 
+         i++, pos++) {
+
+        int deb = m_words_in_span[i].first;
+
+        for (int j = ((m_flags&TXTS_ONLYSPANS) ? spanwords-1 : i);
+             j < ((m_flags&TXTS_NOSPANS) ? i+1 : spanwords);
+             j++) {
+
+            int fin = m_words_in_span[j].second;
+            //cerr << "i " << i << " j " << j << " deb " << deb << 
+            // " fin " << fin << endl;
+            if (fin - deb > int(m_span.size()))
+                break;
+            string word(m_span.substr(deb, fin-deb));
+            if (!emitterm(j != i+1, word, pos, spboffs+deb, spboffs+fin))
+                return false;
+        }
+    }
+    return true;
+}
+
+/**
+ * A method called at word boundaries (different places in
+ * text_to_words()), to adjust the current state of the parser, and
+ * possibly generate term(s). While inside a span (words linked by
+ * glue characters), we just keep track of the word boundaries. Once
+ * actual white-space is reached, we get called with spanerase set to
+ * true, and we process the span, calling the emitterm() routine for
+ * each generated term.
+ * 
+ * The object flags can modify our behaviour, deciding if we only emit
+ * single words (bill, recoll, org), only spans (bill@recoll.org), or
+ * words and spans (bill@recoll.org, recoll.org, jf, recoll...)
+ * 
+ * @return true if ok, false for error. Splitting should stop in this case.
+ * @param spanerase Set if the current span is at its end. Process it.
+ * @param bp        The current BYTE position in the stream
+ */
+inline bool TextSplit::doemit(bool spanerase, size_t _bp)
+{
+    int bp = int(_bp);
+    LOGDEB2(("TextSplit::doemit: sper %d bp %d spp %d spanwords %u wS %d wL %d "
+            "inn %d span [%s]\n",
+             spanerase, bp, m_spanpos, m_words_in_span.size(), 
+            m_wordStart, m_wordLen, m_inNumber, m_span.c_str()));
+
+    if (m_wordLen) {
+        // We have a current word. Remember it
+
+        // Limit max span word count
+        if (m_words_in_span.size() >= 6) {
+            spanerase = true;
+        } 
+
+        m_words_in_span.push_back(pair(m_wordStart, 
+                                                m_wordStart + m_wordLen));
+	m_wordpos++;
+	m_wordLen = m_wordChars = 0;
+    }
+
+    if (spanerase) {
+        // We encountered a span-terminating character. Produce terms.
+
+        string acronym;
+        if (span_is_acronym(&acronym)) {
+            if (!emitterm(false, acronym, m_spanpos, bp - m_span.length(), bp))
+                return false;
+        }
+
+	// Maybe trim at end. These are chars that we might keep
+	// inside a span, but not at the end.
+	while (m_span.length() > 0) {
+	    switch (*(m_span.rbegin())) {
+	    case '.':
+	    case '-':
+	    case ',':
+	    case '@':
+	    case '_':
+	    case '\'':
+		m_span.resize(m_span.length()-1);
+                if (m_words_in_span.size() &&
+                    m_words_in_span.back().second > int(m_span.size()))
+                    m_words_in_span.back().second = int(m_span.size());
+		if (--bp < 0) 
+		    bp = 0;
+		break;
+	    default:
+		goto breaktrimloop;
+	    }
+	}
+    breaktrimloop:
+
+        if (!words_from_span(bp)) {
+            return false;
+        }
+	discardspan();
+
+    } else {
+    
+	m_wordStart = int(m_span.length());
+
+    }
+
+    return true;
+}
+
+void TextSplit::discardspan()
+{
+    m_words_in_span.clear();
+    m_span.erase();
+    m_spanpos = m_wordpos;
+    m_wordStart = 0;
+    m_wordLen = m_wordChars = 0;
+}
+
+static inline bool isalphanum(int what, unsigned int flgs)
+{
+    return what == A_LLETTER || what == A_ULETTER ||
+	what == DIGIT || what == LETTER ||
+	((flgs & TextSplit::TXTS_KEEPWILD) && what == WILD);
+}
+static inline bool isdigit(int what, unsigned int flgs)
+{
+    return what == DIGIT || ((flgs & TextSplit::TXTS_KEEPWILD) && what == WILD);
+}
+
+#ifdef TEXTSPLIT_STATS
+#define STATS_INC_WORDCHARS ++m_wordChars
+#else
+#define STATS_INC_WORDCHARS
+#endif
+
+/** 
+ * Splitting a text into terms to be indexed.
+ * We basically emit a word every time we see a separator, but some chars are
+ * handled specially so that special cases, ie, c++ and jfd@recoll.com etc, 
+ * are handled properly,
+ */
+bool TextSplit::text_to_words(const string &in)
+{
+    LOGDEB1(("TextSplit::text_to_words: docjk %d (%d) %s%s%s [%s]\n", 
+	     o_processCJK, o_CJKNgramLen,
+	     m_flags & TXTS_NOSPANS ? " nospans" : "",
+	     m_flags & TXTS_ONLYSPANS ? " onlyspans" : "",
+	     m_flags & TXTS_KEEPWILD ? " keepwild" : "",
+	     in.substr(0,50).c_str()));
+
+    if (in.empty())
+	return true;
+
+    m_span.erase();
+    m_inNumber = false;
+    m_wordStart = m_wordLen = m_wordChars = m_prevpos = m_prevlen = m_wordpos 
+	= m_spanpos = 0;
+    bool pagepending = false;
+    bool softhyphenpending = false;
+
+    // Running count of non-alphanum chars. Reset when we see one;
+    int nonalnumcnt = 0;
+
+    Utf8Iter it(in);
+
+    for (; !it.eof(); it++) {
+	unsigned int c = *it;
+	nonalnumcnt++;
+
+	if (c == (unsigned int)-1) {
+	    LOGERR(("Textsplit: error occured while scanning UTF-8 string\n"));
+	    return false;
+	}
+
+	if (o_processCJK && UNICODE_IS_CJK(c)) {
+	    // CJK character hit. 
+	    // Do like at EOF with the current non-cjk data.
+	    if (m_wordLen || m_span.length()) {
+		if (!doemit(true, it.getBpos()))
+		    return false;
+	    }
+
+	    // Hand off situation to the cjk routine.
+	    if (!cjk_to_words(&it, &c)) {
+		LOGERR(("Textsplit: scan error in cjk handler\n"));
+		return false;
+	    }
+
+	    // Check for eof, else c contains the first non-cjk
+	    // character after the cjk sequence, just go on.
+	    if (it.eof())
+		break;
+	}
+
+	int cc = whatcc(c);
+
+	switch (cc) {
+	case SKIP:
+	    // Special-case soft-hyphen. To work, this depends on the
+	    // fact that only SKIP calls "continue" inside the
+	    // switch. All the others will do the softhyphenpending
+	    // reset after the switch
+	    if (c == 0xad) {
+		softhyphenpending = true;
+	    } else {
+		softhyphenpending = false;
+	    }
+	    // Skips the softhyphenpending reset
+	    continue;
+
+	case DIGIT:
+	    nonalnumcnt = 0;
+	    if (m_wordLen == 0)
+		m_inNumber = true;
+	    m_wordLen += it.appendchartostring(m_span);
+	    STATS_INC_WORDCHARS;
+	    break;
+
+	case SPACE:
+	    nonalnumcnt = 0;
+	SPACE:
+	    if (m_wordLen || m_span.length()) {
+		if (!doemit(true, it.getBpos()))
+		    return false;
+		m_inNumber = false;
+	    }
+	    if (pagepending) {
+		pagepending = false;
+		newpage(m_wordpos);
+	    }
+	    break;
+
+	case WILD:
+	    if (m_flags & TXTS_KEEPWILD)
+		goto NORMALCHAR;
+	    else
+		goto SPACE;
+	    break;
+
+	case '-':
+	case '+':
+	    if (m_wordLen == 0) {
+		// + or - don't start a term except if this looks like
+		// it's going to be to be a number
+		if (isdigit(whatcc(it[it.getCpos()+1]), m_flags)) {
+		    // -10
+		    m_inNumber = true;
+		    m_wordLen += it.appendchartostring(m_span);
+		    STATS_INC_WORDCHARS;
+                    break;
+		} 
+	    } else if (m_inNumber) {
+                if ((m_span[m_span.length() - 1] == 'e' ||
+				      m_span[m_span.length() - 1] == 'E')) {
+                    if (isdigit(whatcc(it[it.getCpos()+1]), m_flags)) {
+                        m_wordLen += it.appendchartostring(m_span);
+                        STATS_INC_WORDCHARS;
+                        break;
+                    }
+                }
+	    } else {
+                if (cc == '+') {
+                    int nextc = it[it.getCpos()+1];
+                    if (nextc == '+' || nextc == -1 || visiblewhite.find(nextc) 
+                        != visiblewhite.end()) {
+                        // someword++[+...] !
+                        m_wordLen += it.appendchartostring(m_span);
+                        STATS_INC_WORDCHARS;
+                        break;
+                    }
+                } else {
+                    // Treat '-' inside span as glue char
+                    if (!doemit(false, it.getBpos()))
+                        return false;
+                    m_inNumber = false;
+                    m_wordStart += it.appendchartostring(m_span);
+                    break;
+                }
+	    }
+            goto SPACE;
+	    break;
+
+	case 0x2010:
+            // Hyphen is replaced with ascii minus
+	    if (m_wordLen != 0) {
+                // Treat '-' inside span as glue char
+                if (!doemit(false, it.getBpos()))
+                    return false;
+                m_inNumber = false;
+                m_span += '-';
+                m_wordStart++;
+                break;
+            }
+            goto SPACE;
+
+	case '.':
+	{
+	    // Need a little lookahead here. At worse this gets the end null
+	    int nextc = it[it.getCpos()+1];
+	    int nextwhat = whatcc(nextc);
+	    if (m_inNumber) {
+		if (!isdigit(nextwhat, m_flags))
+		    goto SPACE;
+                m_wordLen += it.appendchartostring(m_span);
+                STATS_INC_WORDCHARS;
+		break;
+	    } else {
+		// Found '.' while not in number
+
+		// Only letters and digits make sense after
+		if (!isalphanum(nextwhat, m_flags))
+		    goto SPACE;
+
+		// Keep an initial '.' for catching .net, and .34 (aka
+		// 0.34) but this adds quite a few spurious terms !
+                if (m_span.length() == 0) {
+                    // Check for number like .1
+                    if (isdigit(nextwhat, m_flags)) {
+                        m_inNumber = true;
+                    }
+                    m_wordLen += it.appendchartostring(m_span);
+                    STATS_INC_WORDCHARS;
+                    break;
+                }
+
+                // '.' between words: span glue
+                if (m_wordLen) {
+                    if (!doemit(false, it.getBpos()))
+                        return false;
+                    m_wordStart += it.appendchartostring(m_span);
+                }
+	    }
+	}
+        break;
+
+	case '@':
+	case '_':
+	case '\'':
+	    // If in word, potential span: o'brien, jf@dockes.org,
+	    // else just ignore
+	    if (m_wordLen) {
+		if (!doemit(false, it.getBpos()))
+		    return false;
+		m_inNumber = false;
+                m_wordStart += it.appendchartostring(m_span);
+	    }
+	    break;
+
+	case '#':  {
+	    int w = whatcc(it[it.getCpos()+1]);
+	    // Keep it only at the beginning of a word (hashtag), 
+            if (m_wordLen == 0 && isalphanum(w, m_flags)) {
+                m_wordLen += it.appendchartostring(m_span);
+                STATS_INC_WORDCHARS;
+                break;
+            }
+            // or at the end (special case for c# ...)
+	    if (m_wordLen > 0) {
+		if (w == SPACE || w == '\n' || w == '\r') {
+		    m_wordLen += it.appendchartostring(m_span);
+		    STATS_INC_WORDCHARS;
+		    break;
+		}
+	    }
+	    goto SPACE;
+	}
+	    break;
+
+	case '\n':
+	case '\r':
+	    if (m_span.length() && *m_span.rbegin() == '-') {
+                // if '-' is the last char before end of line, we
+                // strip it.  We have no way to know if this is added
+                // because of the line split or if it was part of an
+                // actual compound word (would need a dictionary to
+                // check).  As soft-hyphen *should* be used if the '-'
+                // is not part of the text, it is better to properly
+                // process a real compound word, and produce wrong
+                // output from wrong text. The word-emitting routine
+                // will strip the trailing '-'.
+                goto SPACE;
+            } else if (softhyphenpending) {
+		// Don't reset soft-hyphen
+		continue;
+	    } else {
+		// Normal case: EOL is white space
+		goto SPACE;
+	    }
+	    break;
+
+	case '\f':
+	    pagepending = true;
+	    goto SPACE;
+	    break;
+
+#ifdef RCL_SPLIT_CAMELCASE
+            // Camelcase handling. 
+            // If we get uppercase ascii after lowercase ascii, emit word.
+            // This emits "camel" when hitting the 'C' of camelCase
+            // Not enabled by defaults as this makes phrase searches quite 
+            // confusing. 
+            // ie "MySQL manual" is matched by "MySQL manual" and 
+            // "my sql manual" but not "mysql manual"
+
+            // A possibility would be to emit both my and sql at the
+            // same position. All non-phrase searches would work, and
+            // both "MySQL manual" and "mysql manual" phrases would
+            // match too. "my sql manual" would not match, but this is
+            // not an issue.
+	case A_ULETTER:
+	    if (m_span.length() && 
+                charclasses[(unsigned char)m_span[m_span.length() - 1]] == 
+                A_LLETTER) {
+                if (m_wordLen) {
+                    if (!doemit(false, it.getBpos()))
+                        return false;
+                }
+            }
+            goto NORMALCHAR;
+
+            // CamelCase handling.
+            // If we get lowercase after uppercase and the current
+            // word length is bigger than one, it means we had a
+            // string of several upper-case letters:  an
+            // acronym (readHTML) or a single letter article (ALittleHelp).
+            // Emit the uppercase word before proceeding
+        case A_LLETTER:
+	    if (m_span.length() && 
+                charclasses[(unsigned char)m_span[m_span.length() - 1]] == 
+                A_ULETTER && m_wordLen > 1) {
+                // Multiple upper-case letters. Single letter word
+                // or acronym which we want to emit now
+                m_wordLen--;
+                if (!doemit(false, it.getBpos()))
+                    return false;
+                // m_wordstart could be 0 here if the span was reset
+                // for excessive length
+                if (m_wordStart)
+                    m_wordStart--;
+                m_wordLen++;
+            }
+            goto NORMALCHAR;
+#endif /* CAMELCASE */
+
+	default:
+	NORMALCHAR:
+	    nonalnumcnt = 0;
+            if (m_inNumber && c != 'e' && c != 'E') {
+                m_inNumber = false;
+            }
+	    m_wordLen += it.appendchartostring(m_span);
+	    STATS_INC_WORDCHARS;
+	    break;
+	}
+	softhyphenpending = false;
+    }
+    if (m_wordLen || m_span.length()) {
+	if (!doemit(true, it.getBpos()))
+	    return false;
+    }
+    return true;
+}
+
+// Using an utf8iter pointer just to avoid needing its definition in
+// textsplit.h
+//
+// We output ngrams for exemple for char input a b c and ngramlen== 2, 
+// we generate: a ab b bc c as words
+//
+// This is very different from the normal behaviour, so we don't use
+// the doemit() and emitterm() routines
+//
+// The routine is sort of a mess and goes to show that we'd probably
+// be better off converting the whole buffer to utf32 on entry...
+bool TextSplit::cjk_to_words(Utf8Iter *itp, unsigned int *cp)
+{
+    LOGDEB1(("cjk_to_words: m_wordpos %d\n", m_wordpos));
+    Utf8Iter &it = *itp;
+
+    // We use an offset buffer to remember the starts of the utf-8
+    // characters which we still need to use.
+    assert(o_CJKNgramLen < o_CJKMaxNgramLen);
+    unsigned int boffs[o_CJKMaxNgramLen+1];
+
+    // Current number of valid offsets;
+    unsigned int nchars = 0;
+    unsigned int c = 0;
+    for (; !it.eof(); it++) {
+	c = *it;
+	if (!UNICODE_IS_CJK(c)) {
+	    // Return to normal handler
+	    break;
+	}
+	if (whatcc(c) == SPACE) {
+	    // Flush the ngram buffer and go on
+	    nchars = 0;
+	    continue;
+	}
+	if (nchars == o_CJKNgramLen) {
+	    // Offset buffer full, shift it. Might be more efficient
+	    // to have a circular one, but things are complicated
+	    // enough already...
+	    for (unsigned int i = 0; i < nchars-1; i++) {
+		boffs[i] = boffs[i+1];
+	    }
+	}  else {
+	    nchars++;
+	}
+
+	// Take note of byte offset for this character.
+	boffs[nchars-1] = int(it.getBpos());
+
+	// Output all new ngrams: they begin at each existing position
+	// and end after the new character. onlyspans->only output
+	// maximum words, nospans=> single chars
+	if (!(m_flags & TXTS_ONLYSPANS) || nchars == o_CJKNgramLen) {
+	    int btend = int(it.getBpos() + it.getBlen());
+	    int loopbeg = (m_flags & TXTS_NOSPANS) ? nchars-1 : 0;
+	    int loopend = (m_flags & TXTS_ONLYSPANS) ? 1 : nchars;
+	    for (int i = loopbeg; i < loopend; i++) {
+		if (!takeword(it.buffer().substr(boffs[i], 
+						       btend-boffs[i]),
+				m_wordpos - (nchars-i-1), boffs[i], btend)) {
+		    return false;
+		}
+	    }
+
+	    if ((m_flags & TXTS_ONLYSPANS)) {
+		// Only spans: don't overlap: flush buffer
+		nchars = 0;
+	    }
+	}
+	// Increase word position by one, other words are at an
+	// existing position. This could be subject to discussion...
+	m_wordpos++;
+    }
+
+    // If onlyspans is set, there may be things to flush in the buffer
+    // first
+    if ((m_flags & TXTS_ONLYSPANS) && nchars > 0 && nchars != o_CJKNgramLen)  {
+	int btend = int(it.getBpos()); // Current char is out
+	if (!takeword(it.buffer().substr(boffs[0], btend-boffs[0]),
+			    m_wordpos - nchars,
+			    boffs[0], btend)) {
+	    return false;
+	}
+    }
+
+    m_span.erase();
+    m_inNumber = false;
+    m_wordStart = m_wordLen = m_wordChars = m_prevpos = m_prevlen = 0;
+    m_spanpos = m_wordpos;
+    *cp = c;
+    return true;
+}
+
+// Specialization for countWords 
+class TextSplitCW : public TextSplit {
+ public:
+    int wcnt;
+    TextSplitCW(Flags flags) : TextSplit(flags), wcnt(0) {}
+    bool takeword(const string &, int, int, int) {
+	wcnt++;
+	return true;
+    }
+};
+
+int TextSplit::countWords(const string& s, TextSplit::Flags flgs)
+{
+    TextSplitCW splitter(flgs);
+    splitter.text_to_words(s);
+    return splitter.wcnt;
+}
+
+bool TextSplit::hasVisibleWhite(const string &in)
+{
+    Utf8Iter it(in);
+    for (; !it.eof(); it++) {
+	unsigned int c = (unsigned char)*it;
+	LOGDEB3(("TextSplit::hasVisibleWhite: testing 0x%04x\n", c));
+	if (c == (unsigned int)-1) {
+	    LOGERR(("hasVisibleWhite: error while scanning UTF-8 string\n"));
+	    return false;
+	}
+	if (visiblewhite.find(c) != visiblewhite.end())
+	    return true;
+    }
+    return false;
+}
+
+template  bool u8stringToStrings(const string &s, T &tokens)
+{
+    Utf8Iter it(s);
+
+    string current;
+    tokens.clear();
+    enum states {SPACE, TOKEN, INQUOTE, ESCAPE};
+    states state = SPACE;
+    for (; !it.eof(); it++) {
+	unsigned int c = *it;
+	if (visiblewhite.find(c) != visiblewhite.end()) 
+	    c = ' ';
+	LOGDEB3(("TextSplit::stringToStrings: 0x%04x\n", c));
+	if (c == (unsigned int)-1) {
+	    LOGERR(("TextSplit::stringToStrings: error while "
+		    "scanning UTF-8 string\n"));
+	    return false;
+	}
+
+	switch (c) {
+	    case '"': 
+	    switch(state) {
+	    case SPACE: state = INQUOTE; continue;
+	    case TOKEN: goto push_char;
+	    case ESCAPE: state = INQUOTE; goto push_char;
+	    case INQUOTE: tokens.push_back(current);current.clear();
+		state = SPACE; continue;
+	    }
+	    break;
+	    case '\\': 
+	    switch(state) {
+	    case SPACE: 
+	    case TOKEN: state=TOKEN; goto push_char;
+	    case INQUOTE: state = ESCAPE; continue;
+	    case ESCAPE: state = INQUOTE; goto push_char;
+	    }
+	    break;
+
+	    case ' ': 
+	    case '\t': 
+	    case '\n': 
+	    case '\r': 
+	    switch(state) {
+	      case SPACE: continue;
+	      case TOKEN: tokens.push_back(current); current.clear();
+		state = SPACE; continue; 
+	    case INQUOTE: 
+	    case ESCAPE: goto push_char;
+	    }
+	    break;
+
+	    default:
+	    switch(state) {
+	      case ESCAPE: state = INQUOTE; break;
+	      case SPACE:  state = TOKEN;  break;
+	      case TOKEN: 
+	      case INQUOTE: break;
+	    }
+	push_char:
+	    it.appendchartostring(current);
+	}
+    }
+
+    // End of string. Process residue, and possible error (unfinished quote)
+    switch(state) {
+    case SPACE: break;
+    case TOKEN: tokens.push_back(current); break;
+    case INQUOTE: 
+    case ESCAPE: return false;
+    }
+    return true;
+}
+
+bool TextSplit::stringToStrings(const string &s, vector &tokens)
+{
+    return u8stringToStrings >(s, tokens);
+}
+
+#else  // TEST driver ->
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+
+#include "textsplit.h"
+#include "readfile.h"
+#include "debuglog.h"
+#include "transcode.h"
+#include "unacpp.h"
+#include "termproc.h"
+
+using namespace std;
+
+class myTermProc : public Rcl::TermProc {
+    int first;
+    bool nooutput;
+public:
+    myTermProc() : TermProc(0), first(1), nooutput(false) {}
+    void setNoOut(bool val) {nooutput = val;}
+    virtual bool takeword(const string &term, int pos, int bs, int be)
+    {
+	if (nooutput)
+	    return true;
+	FILE *fp = stdout;
+	if (first) {
+	    fprintf(fp, "%3s %-20s %4s %4s\n", "pos", "Term", "bs", "be");
+	    first = 0;
+	}
+	fprintf(fp, "%3d %-20s %4d %4d\n", pos, term.c_str(), bs, be);
+	return true;
+    }
+};
+
+#define OPT_s	  0x1 
+#define OPT_w	  0x2
+#define OPT_q	  0x4
+#define OPT_c     0x8
+#define OPT_k     0x10
+#define OPT_C     0x20
+#define OPT_n     0x40
+#define OPT_S     0x80
+#define OPT_u     0x100
+#define OPT_p     0x200
+
+bool dosplit(const string& data, TextSplit::Flags flags, int op_flags)
+{
+    myTermProc printproc;
+
+    Rcl::TermProc *nxt = &printproc;
+
+//    Rcl::TermProcCommongrams commonproc(nxt, stoplist);
+//    if (op_flags & OPT_S)
+//        nxt = &commonproc;
+
+    Rcl::TermProcPrep preproc(nxt);
+    if (op_flags & OPT_u) 
+        nxt = &preproc;
+
+    Rcl::TextSplitP splitter(nxt, flags);
+
+    if (op_flags & OPT_q)
+        printproc.setNoOut(true);
+
+    splitter.text_to_words(data);
+
+#ifdef TEXTSPLIT_STATS
+	TextSplit::Stats::Values v = splitter.getStats();
+	cout << "Average length: " 
+	     <<  v.avglen
+	     << " Standard deviation: " 
+	     << v.sigma
+	     << " Coef of variation "
+	     << v.sigma / v.avglen
+	     << endl;
+#endif
+    return true;
+}
+
+static const char *teststrings[] = {
+    "Un bout de texte \nnormal. 2eme phrase.3eme;quatrieme.\n",
+    "\"Jean-Francois Dockes\" \n",
+    "n@d @net .net net@ t@v@c c# c++ o'brien 'o'brien'",
+    "_network_ some_span",
+    "data123\n",
+    "134 +134 -14 0.1 .1 2. -1.5 +1.5 1,2 1.54e10 1,2e30 .1e10 1.e-8\n",
+    "@^#$(#$(*)\n",
+    "192.168.4.1 one\n\rtwo\r",
+    "[olala][ululu]  (valeur) (23)\n",
+    "utf-8 ucs-4© \\nodef\n",
+    "A b C 2 . +",
+    "','this\n",
+    " ,able,test-domain",
+    " -wl,--export-dynamic",
+    " ~/.xsession-errors",
+    "this_very_long_span_this_very_long_span_this_very_long_span",
+    "soft\xc2\xadhyphen",
+    "soft\xc2\xad\nhyphen",
+    "soft\xc2\xad\n\rhyphen",
+    "real\xe2\x80\x90hyphen",
+    "real\xe2\x80\x90\nhyphen",
+    "hyphen-\nminus",
+};
+const int teststrings_cnt = sizeof(teststrings)/sizeof(char *);
+
+static string teststring1 = " nouvel-an ";
+
+static string thisprog;
+
+static string usage =
+    " textsplit [opts] [filename]\n"
+    "   -q : no output\n"
+    "   -s :  only spans\n"
+    "   -w :  only words\n"
+    "   -n :  no numbers\n"
+    "   -k :  preserve wildcards (?*)\n"
+    "   -c : just count words\n"
+    "   -u : use unac\n"
+    "   -C [charset] : input charset\n"
+    "   -S [stopfile] : stopfile to use for commongrams\n"
+    " if filename is 'stdin', will read stdin for data (end with ^D)\n\n"
+    " textplit -p somephrase : display results from stringToStrings()\n"
+    "  \n"
+    ;
+
+static void
+Usage(void)
+{
+    cerr << thisprog  << ": usage:\n" << usage;
+    exit(1);
+}
+
+static int        op_flags;
+
+int main(int argc, char **argv)
+{
+    string charset, stopfile;
+
+    thisprog = argv[0];
+    argc--; argv++;
+
+    while (argc > 0 && **argv == '-') {
+	(*argv)++;
+	if (!(**argv))
+	    /* Cas du "adb - core" */
+	    Usage();
+	while (**argv)
+	    switch (*(*argv)++) {
+	    case 'c':	op_flags |= OPT_c; break;
+            case 'C':	op_flags |= OPT_C; if (argc < 2)  Usage();
+                charset = *(++argv); argc--; 
+                goto b1;
+	    case 'k':	op_flags |= OPT_k; break;
+	    case 'n':	op_flags |= OPT_n; break;
+	    case 'p':	op_flags |= OPT_p; break;
+	    case 'q':	op_flags |= OPT_q; break;
+	    case 's':	op_flags |= OPT_s; break;
+            case 'S':	op_flags |= OPT_S; if (argc < 2)  Usage();
+                stopfile = *(++argv); argc--; 
+                goto b1;
+	    case 'u':	op_flags |= OPT_u; break;
+	    case 'w':	op_flags |= OPT_w; break;
+	    default: Usage();	break;
+	    }
+    b1: argc--; argv++;
+    }
+    DebugLog::getdbl()->setloglevel(DEBDEB1);
+    DebugLog::setfilename("stderr");
+
+    TextSplit::Flags flags = TextSplit::TXTS_NONE;
+
+    if (op_flags&OPT_s)
+	flags = TextSplit::TXTS_ONLYSPANS;
+    else if (op_flags&OPT_w)
+	flags = TextSplit::TXTS_NOSPANS;
+    if (op_flags & OPT_k) 
+	flags = (TextSplit::Flags)(flags | TextSplit::TXTS_KEEPWILD); 
+    if (op_flags & OPT_n)
+	TextSplit::noNumbers();
+
+    Rcl::StopList stoplist;
+    if (op_flags & OPT_S) {
+	if (!stoplist.setFile(stopfile)) {
+	    cerr << "Can't read stopfile: " << stopfile << endl;
+	    exit(1);
+	}
+    }
+    string odata, reason;
+    if (argc == 1) {
+	const char *filename = *argv++;	argc--;
+        if (op_flags& OPT_p) {
+            vector tokens;
+            TextSplit::stringToStrings(filename, tokens);
+            for (vector::const_iterator it = tokens.begin();
+                 it != tokens.end(); it++) {
+                cout << "[" << *it << "] ";
+            }
+            cout << endl;
+            exit(0);
+        }
+	if (!strcmp(filename, "stdin")) {
+	    char buf[1024];
+	    int nread;
+	    while ((nread = read(0, buf, 1024)) > 0) {
+		odata.append(buf, nread);
+	    }
+	} else if (!file_to_string(filename, odata, &reason)) {
+            cerr << "Failed: file_to_string(" << filename << ") failed: " 
+                 << reason << endl;
+	    exit(1);
+        }
+    } else {
+        if (op_flags & OPT_p)
+            Usage();
+        for (int i = 0; i < teststrings_cnt; i++) {
+            cout << endl << teststrings[i] << endl;  
+            dosplit(teststrings[i], flags, op_flags);
+        }
+        exit(0);
+    }
+
+    string& data = odata;
+    string ndata;
+    if ((op_flags & OPT_C)) {
+        if (!transcode(odata, ndata, charset, "UTF-8")) {
+            cerr << "Failed: transcode error" << endl;
+            exit(1);
+        } else {
+            data = ndata;
+        }
+    }
+
+    if (op_flags & OPT_c) {
+	int n = TextSplit::countWords(data, flags);
+	cout << n << " words" << endl;
+    } else {
+        dosplit(data, flags, op_flags);
+    }    
+}
+#endif // TEST
diff --git a/src/common/textsplit.h b/src/common/textsplit.h
new file mode 100644
index 00000000..d408bb2e
--- /dev/null
+++ b/src/common/textsplit.h
@@ -0,0 +1,225 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#ifndef _TEXTSPLIT_H_INCLUDED_
+#define _TEXTSPLIT_H_INCLUDED_
+
+#include 
+
+#include 
+#include 
+
+class Utf8Iter;
+
+/** 
+ * Split text into words. 
+ * See comments at top of .cpp for more explanations.
+ * This uses a callback function. It could be done with an iterator instead,
+ * but 'ts much simpler this way...
+ */
+class TextSplit {
+public:
+    // Should we activate special processing of Chinese characters ? This
+    // needs a little more cpu, so it can be turned off globally. This is set
+    // by rclconfig, changing it means reindexing
+    static bool o_processCJK;
+    static unsigned int  o_CJKNgramLen;
+    static const unsigned int o_CJKMaxNgramLen =  5;
+    static void cjkProcessing(bool onoff, unsigned int ngramlen = 2) 
+    {
+	o_processCJK = onoff;
+	o_CJKNgramLen = ngramlen <= o_CJKMaxNgramLen ? 
+	    ngramlen : o_CJKMaxNgramLen;
+    }
+
+    // Are we indexing numbers ? Set by rclconfig. Change needs reindex
+    static bool o_noNumbers;
+    static void noNumbers()
+    {
+	o_noNumbers = true;
+    }
+
+    // Given [co-worker] as input, do we also generate [coworker] ?
+    // Set by rclconfig
+    static bool o_deHyphenate;
+    static void deHyphenate(bool on) {
+	o_deHyphenate = on;
+    }
+
+    enum Flags {
+        // Default: will return spans and words (a_b, a, b)
+        TXTS_NONE = 0, 
+        // Only return maximum spans (a@b.com, not a, b, or com) 
+        TXTS_ONLYSPANS = 1,  
+        // Special: Only return atomic words (a, b, com).  This is not
+        // used for indexing, but for position computation during
+        // abstract generation,
+        TXTS_NOSPANS = 2,  
+        // Handle wildcards as letters. This is used with ONLYSPANS
+        // for parsing a user query (never alone).
+        TXTS_KEEPWILD = 4 
+    };
+    
+    TextSplit(Flags flags = Flags(TXTS_NONE))
+	: m_flags(flags), m_maxWordLength(40), m_prevpos(-1)
+    {
+    }
+    virtual ~TextSplit() {}
+
+    /** Split text, emit words and positions. */
+    virtual bool text_to_words(const std::string &in);
+
+    /** Process one output word: to be implemented by the actual user class */
+    virtual bool takeword(const std::string& term, 
+			  int pos,  // term pos
+			  int bts,  // byte offset of first char in term
+			  int bte   // byte offset of first char after term
+			  ) = 0; 
+
+    /** Called when we encounter formfeed \f 0x0c. Override to use the event.
+     * Mostly or exclusively used with pdftoxx output. Other filters mostly 
+     * just don't know about pages. */
+    virtual void newpage(int /*pos*/)
+    {
+    }
+
+    // Static utility functions:
+
+    /** Count words in string, as the splitter would generate them */
+    static int countWords(const std::string &in, Flags flgs = TXTS_ONLYSPANS);
+
+    /** Check if this is visibly not a single block of text */
+    static bool hasVisibleWhite(const std::string &in);
+
+    /** Split text span into strings, at white space, allowing for substrings
+     * quoted with " . Escaping with \ works as usual inside the quoted areas.
+     * This has to be kept separate from smallut.cpp's stringsToStrings, which
+     * basically works only if whitespace is ascii, and which processes 
+     * non-utf-8 input (iso-8859 config files work ok). This hopefully
+     * handles all Unicode whitespace, but needs correct utf-8 input
+     */
+    static bool stringToStrings(const std::string &s, std::vector &tokens);
+
+    /** Is char CJK ? */
+    static bool isCJK(int c);
+
+    /** Statistics about word length (average and dispersion) can
+     * detect bad data like undecoded base64 or other mis-identified
+     * pieces of data taken as text. In practise, this keeps some junk out 
+     * of the index, but does not decrease the index size much, and is
+     * probably not worth the trouble in general. Code kept because it
+     * probably can be useful in special cases. Base64 data does has
+     * word separators in it (+/) and is characterised by high average
+     * word length (>10, often close to 20) and high word length
+     * dispersion (avg/sigma > 0.8). In my tests, most natural
+     * language text has average word lengths around 5-8 and avg/sigma
+     * < 0.7
+     */
+#ifdef TEXTSPLIT_STATS
+    class Stats {
+    public:
+	Stats()
+	{
+	    reset();
+	}
+	void reset()
+	{
+	    count = 0;
+	    totlen = 0;
+	    sigma_acc = 0;
+	}
+	void newsamp(unsigned int len)
+	{
+	    ++count;
+	    totlen += len;
+	    double avglen = double(totlen) / double(count);
+	    sigma_acc += (avglen - len) * (avglen - len);
+	}
+	struct Values {
+	    int count;
+	    double avglen;
+	    double sigma;
+	};
+	Values get()
+	{
+	    Values v;
+	    v.count = count;
+	    v.avglen = double(totlen) / double(count);
+	    v.sigma = sqrt(sigma_acc / count);
+	    return v;
+	}
+    private:
+	int count;
+	int totlen;
+	double sigma_acc;
+    };
+
+    Stats::Values getStats()
+    {
+	return m_stats.get();
+    }
+    void resetStats()
+    {
+	m_stats.reset();
+    }
+#endif // TEXTSPLIT_STATS
+
+private:
+    Flags         m_flags;
+    int           m_maxWordLength;
+
+    // Current span. Might be jf.dockes@wanadoo.f
+    std::string        m_span; 
+
+    std::vector  > m_words_in_span;
+
+    // Current word: no punctuation at all in there. Byte offset
+    // relative to the current span and byte length
+    int           m_wordStart;
+    unsigned int  m_wordLen;
+
+    // Currently inside number
+    bool          m_inNumber;
+
+    // Term position of current word and span
+    int           m_wordpos; 
+    int           m_spanpos;
+
+    // It may happen that our cleanup would result in emitting the
+    // same term twice. We try to avoid this
+    int           m_prevpos;
+    int           m_prevlen;
+
+#ifdef TEXTSPLIT_STATS
+    // Stats counters. These are processed in TextSplit rather than by a 
+    // TermProc so that we can take very long words (not emitted) into
+    // account.
+    Stats         m_stats;
+#endif
+    // Word length in characters. Declared but not updated if !TEXTSPLIT_STATS
+    unsigned int  m_wordChars;
+
+    // This processes cjk text:
+    bool cjk_to_words(Utf8Iter *it, unsigned int *cp);
+
+    bool emitterm(bool isspan, std::string &term, int pos, size_t bs,size_t be);
+    bool doemit(bool spanerase, size_t bp);
+    void discardspan();
+    bool span_is_acronym(std::string *acronym);
+    bool words_from_span(size_t bp);
+};
+
+#endif /* _TEXTSPLIT_H_INCLUDED_ */
diff --git a/src/common/unacpp.cpp b/src/common/unacpp.cpp
new file mode 100644
index 00000000..837786de
--- /dev/null
+++ b/src/common/unacpp.cpp
@@ -0,0 +1,249 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+
+#ifndef TEST_UNACPP
+#include 
+#include 
+#include 
+
+#include 
+
+#include "unacpp.h"
+#include "unac.h"
+#include "debuglog.h"
+#include "utf8iter.h"
+
+bool unacmaybefold(const string &in, string &out, 
+		   const char *encoding, UnacOp what)
+{
+    char *cout = 0;
+    size_t out_len;
+    int status = -1;
+
+    switch (what) {
+    case UNACOP_UNAC:
+	status = unac_string(encoding, in.c_str(), in.length(), 
+			     &cout, &out_len);
+	break;
+    case UNACOP_UNACFOLD:
+	status = unacfold_string(encoding, in.c_str(), in.length(), 
+				 &cout, &out_len);
+	break;
+    case UNACOP_FOLD:
+	status = fold_string(encoding, in.c_str(), in.length(), 
+			     &cout, &out_len);
+	break;
+    }
+
+    if (status < 0) {
+	if (cout)
+	    free(cout);
+	char cerrno[20];
+	sprintf(cerrno, "%d", errno);
+	out = string("unac_string failed, errno : ") + cerrno;
+	return false;
+    }
+    out.assign(cout, out_len);
+    if (cout)
+	free(cout);
+    return true;
+}
+
+// Functions to determine upper-case or accented status could be implemented
+// hugely more efficiently inside the unac c code, but there only used for
+// testing user-entered terms, so we don't really care.
+bool unaciscapital(const string& in)
+{
+    LOGDEB2(("unaciscapital: [%s]\n", in.c_str()));
+    if (in.empty())
+	return false;
+    Utf8Iter it(in);
+    string shorter;
+    it.appendchartostring(shorter);
+
+    string lower;
+    if (!unacmaybefold(shorter, lower, "UTF-8", UNACOP_FOLD)) {
+	LOGINFO(("unaciscapital: unac/fold failed for [%s]\n", in.c_str()));
+	return false;
+    } 
+    Utf8Iter it1(lower);
+    if (*it != *it1)
+	return true;
+    else
+	return false;
+}
+bool unachasuppercase(const string& in)
+{
+    LOGDEB2(("unachasuppercase: [%s]\n", in.c_str()));
+    if (in.empty())
+	return false;
+
+    string lower;
+    if (!unacmaybefold(in, lower, "UTF-8", UNACOP_FOLD)) {
+	LOGINFO(("unachasuppercase: unac/fold failed for [%s]\n", in.c_str()));
+	return false;
+    } 
+    if (lower != in)
+	return true;
+    else
+	return false;
+}
+bool unachasaccents(const string& in)
+{
+    LOGDEB2(("unachasaccents: [%s]\n", in.c_str()));
+    if (in.empty())
+	return false;
+
+    string noac;
+    if (!unacmaybefold(in, noac, "UTF-8", UNACOP_UNAC)) {
+	LOGINFO(("unachasaccents: unac/unac failed for [%s]\n", in.c_str()));
+	return false;
+    } 
+    if (noac != in)
+	return true;
+    else
+	return false;
+}
+
+#else // not testing
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+
+using namespace std;
+
+#include "unacpp.h"
+#include "readfile.h"
+#include "rclinit.h"
+
+static char *thisprog;
+
+static char usage [] = "\n"
+    "[-c|-C]   \n"
+    "   Default : unaccent\n"
+    "   -c : unaccent and casefold\n"
+    "   -C : casefold only\n"
+    "-t  test string as capitalized, upper-case anywhere, accents\n"
+    "   the parameter is supposedly utf-8 so this can only work in an utf-8\n"
+    "   locale\n"
+    "\n";
+;
+
+static void
+Usage(void)
+{
+    fprintf(stderr, "%s: usage: %s\n", thisprog, usage);
+    exit(1);
+}
+
+static int     op_flags;
+#define OPT_c	  0x2 
+#define OPT_C	  0x4 
+#define OPT_t     0x8
+
+int main(int argc, char **argv)
+{
+    UnacOp op = UNACOP_UNAC;
+
+    thisprog = argv[0];
+    argc--; argv++;
+
+    while (argc > 0 && **argv == '-') {
+	(*argv)++;
+	if (!(**argv))
+	    /* Cas du "adb - core" */
+	    Usage();
+	while (**argv)
+	    switch (*(*argv)++) {
+	    case 'c':	op_flags |= OPT_c; break;
+	    case 'C':	op_flags |= OPT_C; break;
+	    case 't':	op_flags |= OPT_t; break;
+	    default: Usage();	break;
+	    }
+	argc--; argv++;
+    }
+
+    if (op_flags & OPT_t) {
+	if (argc != 1)
+	    Usage();
+	string in = *argv++;argc--;
+	bool capital, upper, accent;
+	capital = unaciscapital(in);
+	upper = unachasuppercase(in);
+	accent = unachasaccents(in);
+	cout << "[" << in << "] : " << 
+	    "capitalized: " << (capital ? "Yes. " : "No. ") <<
+	    "has uppercase: " << (upper ? "Yes. " : "No. ") <<
+	    "has accents: " << (accent ? "Yes. " : "No. ") << 
+	    endl;
+	return 0;
+    } else {
+	if (argc != 3)
+	    Usage();
+	if (op_flags & OPT_c) {
+	    op = UNACOP_UNACFOLD;
+	} else if (op_flags & OPT_C) {
+	    op = UNACOP_FOLD;
+	}
+
+	const char *encoding = *argv++; argc--;
+	string ifn = *argv++; argc--;
+	if (!ifn.compare("stdin"))
+	    ifn.clear();
+	const char *ofn = *argv++; argc--;
+
+	string reason;
+	(void)recollinit(RCLINIT_NONE, 0, 0, reason, 0);
+
+	string odata;
+	if (!file_to_string(ifn, odata)) {
+	    cerr << "file_to_string " << ifn << " : " << odata << endl;
+	    return 1;
+	}
+	string ndata;
+	if (!unacmaybefold(odata, ndata, encoding, op)) {
+	    cerr << "unac: " << ndata << endl;
+	    return 1;
+	}
+    
+	int fd;
+	if (strcmp(ofn, "stdout")) {
+	    fd = open(ofn, O_CREAT|O_EXCL|O_WRONLY, 0666);
+	} else {
+	    fd = 1;
+	}
+	if (fd < 0) {
+	    cerr << "Open/Create " << ofn << " failed: " << strerror(errno) 
+		 << endl;
+	    return 1;
+	}
+	if (write(fd, ndata.c_str(), ndata.length()) != (int)ndata.length()) {
+	    cerr << "Write(2) failed: " << strerror(errno)  << endl;
+	    return 1;
+	}
+	close(fd);
+	return 0;
+    }
+}
+
+#endif
diff --git a/src/common/unacpp.h b/src/common/unacpp.h
new file mode 100644
index 00000000..643b6ad3
--- /dev/null
+++ b/src/common/unacpp.h
@@ -0,0 +1,40 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#ifndef _UNACPP_H_INCLUDED_
+#define _UNACPP_H_INCLUDED_
+
+#include 
+
+#ifndef NO_NAMESPACES
+using std::string;
+#endif /* NO_NAMESPACES */
+
+// A small stringified wrapper for unac.c
+enum UnacOp {UNACOP_UNAC = 1, UNACOP_FOLD = 2, UNACOP_UNACFOLD = 3};
+extern bool unacmaybefold(const string& in, string& out, 
+			  const char *encoding, UnacOp what);
+
+// Utility function to determine if string begins with capital
+extern bool unaciscapital(const string& in);
+// Utility function to determine if string has upper-case anywhere
+extern bool unachasuppercase(const string& in);
+// Utility function to determine if any character is accented. This
+// approprialey ignores the characters from unac_except_chars which
+// are really separate letters
+extern bool unachasaccents(const string& in);
+
+#endif /* _UNACPP_H_INCLUDED_ */
diff --git a/src/common/uproplist.h b/src/common/uproplist.h
new file mode 100644
index 00000000..d8254ec7
--- /dev/null
+++ b/src/common/uproplist.h
@@ -0,0 +1,202 @@
+/* Copyright (C) 2004 J.F.Dockes
+ *   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.
+ */
+#ifndef _PROPLIST_H_INCLUDED_
+#define _PROPLIST_H_INCLUDED_
+
+
+/** 
+ * A subset of Unicode chars that we consider word breaks when we
+ * split text in words. 
+ *
+ * This is used as a quick fix to the ascii-based code, and is not correct.
+ * the correct way would be to do what http://www.unicode.org/reports/tr29/ 
+ * says. 
+*/
+
+// Punctuation chararacters blocks array.  Each block is defined by a
+// starting and ending code point (both included). MUST BE SORTED.
+static const unsigned unipuncblocks[] = {
+    // Start of latin-1 supplement block, up to capital A grave
+    0x0080, 0x00BF,
+    // General punctuation
+    0x2000, 0x206F,
+    // Superscripts and subscripts
+    0x2070, 0x209F,
+    // Currency symbols
+    0x20A0, 0x20CF,
+    // Letterlike symbols
+    0x2100, 0x214f,
+    // Number forms
+    0x2150, 0x218F,
+    // Arrows
+    0x2190, 0x21FF,
+    // Mathematical Operators
+    0x2200, 0x22FF,
+    // Miscellaneous Technical
+    0x2300, 0x23FF,
+    // Control Pictures
+    0x2400, 0x243F,
+    // Optical Character Recognition
+    0x2440, 0x245F,
+    // Enclosed Alphanumerics
+    0x2460, 0x24FF,
+    // Box Drawing
+    0x2500, 0x257F,
+    // Block Elements
+    0x2580, 0x259F,
+    // Geometric Shapes
+    0x25A0, 0x25FF,
+    // Miscellaneous Symbols
+    0x2600, 0x26FF,
+    // Dingbats
+    0x2700, 0x27BF,
+    // Miscellaneous Mathematical Symbols-A 	
+    0x27C0, 0x27EF,
+    // Supplemental Arrows-A
+    0x27F0, 0x27FF,
+    // Supplemental Arrows-B
+    0x2900, 0x297F,
+    // Miscellaneous Mathematical Symbols-B 	
+    0x2980,  0x29FF,
+    // Supplemental Mathematical Operators
+    0x2A00, 0x2AFF,
+    // Miscellaneous Symbols and Arrows
+    0x2B00, 0x2BFF,
+};
+
+// Other punctuation characters list. Not all punctuation is in a
+// separate block some is found in the middle of alphanumeric codes.
+static const unsigned int unipunc[] = {
+    0x00D7, /* MULTIPLICATION SIGN */
+    0x00F7, /* DIVISION SIGN */
+    0x037E, /* GREEK QUESTION MARK */
+    0x0387, /* GREEK ANO TELEIA */
+    0x055C, /* ARMENIAN EXCLAMATION MARK */
+    0x055E, /* ARMENIAN QUESTION MARK */
+    0x0589, /* ARMENIAN FULL STOP */
+    0x058A, /* ARMENIAN HYPHEN */
+    0x05C3, /* HEBREW PUNCTUATION SOF PASUQ */
+    0x060C, /* ARABIC COMMA */
+    0x061B, /* ARABIC SEMICOLON */
+    0x061F, /* ARABIC QUESTION MARK */
+    0x06D4, /* ARABIC FULL STOP */
+    0x0964, /* DEVANAGARI DANDA */
+    0x0965, /* DEVANAGARI DOUBLE DANDA */
+    0x166E, /* CANADIAN SYLLABICS FULL STOP */
+    0x1680, /* OGHAM SPACE MARK */
+    0x16EB, /* RUNIC SINGLE PUNCTUATION */
+    0x16EC, /* RUNIC MULTIPLE PUNCTUATION */
+    0x16ED, /* RUNIC CROSS PUNCTUATION */
+    0x1803, /* MONGOLIAN FULL STOP */
+    0x1806, /* MONGOLIAN TODO SOFT HYPHEN */
+    0x1809, /* MONGOLIAN MANCHU FULL STOP */
+    0x180E, /* MONGOLIAN VOWEL SEPARATOR */
+    0x2E2E, /* REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; */
+    0x3000, /* IDEOGRAPHIC SPACE*/
+    0x3002, /* IDEOGRAPHIC FULL STOP*/
+    0x300C, /* LEFT CORNER BRACKET*/
+    0x300D, /* RIGHT CORNER BRACKET*/
+    0x300E, /* LEFT WHITE CORNER BRACKET*/
+    0x300F, /* RIGHT WHITE CORNER BRACKET*/
+    0x301C, /* WAVE DASH*/
+    0x301D, /* REVERSED DOUBLE PRIME QUOTATION MARK*/
+    0x301E, /* LOW DOUBLE PRIME QUOTATION MARK*/
+    0x3030, /* WAVY DASH*/
+    0x30FB, /* KATAKANA MIDDLE DOT*/
+    0xC2B6, /* PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; */
+    0xC3B7, /* DIVISION SIGN;Sm;0;ON;;;;;N;;;;; */
+    0xFE31, /* PRESENTATION FORM FOR VERTICAL EM DASH*/
+    0xFE32, /* PRESENTATION FORM FOR VERTICAL EN DASH*/
+    0xFE41, /* PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET*/
+    0xFE42, /* PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET*/
+    0xFE43, /* PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET*/
+    0xFE44, /* PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET*/
+    0xFE50, /* [3] SMALL COMMA..SMALL FULL STOP*/
+    0xFE51, /* [3] SMALL COMMA..SMALL FULL STOP*/
+    0xFE52, /* STOP*/
+    0xFE52, /* [3] SMALL COMMA..SMALL FULL STOP*/
+    0xFE54, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
+    0xFE55, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
+    0xFE56, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
+    0xFE57, /* [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK*/
+    0xFE58, /* SMALL EM DASH */
+    0xFE63, /* SMALL HYPHEN-MINUS */
+    0xFF01, /* FULLWIDTH EXCLAMATION MARK */
+    0xFF02, /* FULLWIDTH QUOTATION MARK */
+    0xFF03, /* FULLWIDTH NUMBER SIGN */
+    0xFF04, /* FULLWIDTH DOLLAR SIGN */
+    0xFF05, /* FULLWIDTH PERCENT SIGN */
+    0xFF06, /* FULLWIDTH AMPERSAND */
+    0xFF07, /* FULLWIDTH APOSTROPHE */
+    0xFF08, /* FULLWIDTH LEFT PARENTHESIS */
+    0xFF09, /* FULLWIDTH RIGHT PARENTHESIS */
+    0xFF0A, /* FULLWIDTH ASTERISK */
+    0xFF0B, /* FULLWIDTH PLUS SIGN */
+    0xFF0C, /* FULLWIDTH COMMA */
+    0xFF0D, /* FULLWIDTH HYPHEN-MINUS */
+    0xFF0E, /* FULLWIDTH FULL STOP */
+    0xFF0F, /* FULLWIDTH SOLIDUS  */
+    0xFF1A, /* [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON*/
+    0xFF1B, /* [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON*/
+    0xFF1F, /* FULLWIDTH QUESTION MARK*/
+    0xFF61, /* HALFWIDTH IDEOGRAPHIC FULL STOP*/
+    0xFF62, /* HALFWIDTH LEFT CORNER BRACKET*/
+    0xFF63, /* HALFWIDTH RIGHT CORNER BRACKET*/
+    0xFF64, /* HALFWIDTH IDEOGRAPHIC COMMA*/
+    0xFF65, /* HALFWIDTH KATAKANA MIDDLE DOT*/
+};
+
+// Characters that should just be discarded. Some of these are in the
+// above blocks, but this array is tested first, so it's not worth
+// breaking the blocks
+static const unsigned int uniskip[] = {
+    0x00AD, /* SOFT HYPHEN */
+    0x034F, /* COMBINING GRAPHEME JOINER */
+    0x2027, /* HYPHENATION POINT */
+    0x200C, /* ZERO WIDTH NON-JOINER */
+    0x200D, /* ZERO WIDTH JOINER */
+    0x2060, /* WORD JOINER . Actually this should not be ignored but used to 
+	     * prevent a word break... */
+};
+
+/* Things that would visibly break a block of text, rendering obvious the need
+ * of quotation if a phrase search is wanted */
+static const unsigned int avsbwht[] = {
+    0x0009, /* CHARACTER TABULATION */
+    0x000A, /* LINE FEED */
+    0x000D, /* CARRIAGE RETURN */
+    0x0020, /* SPACE;Zs;0;WS */
+    0x00A0, /* NO-BREAK SPACE;Zs;0;CS */
+    0x1680, /* OGHAM SPACE MARK;Zs;0;WS */
+    0x180E, /* MONGOLIAN VOWEL SEPARATOR;Zs;0;WS */
+    0x2000, /* EN QUAD;Zs;0;WS */
+    0x2001, /* EM QUAD;Zs;0;WS */
+    0x2002, /* EN SPACE;Zs;0;WS */
+    0x2003, /* EM SPACE;Zs;0;WS */
+    0x2004, /* THREE-PER-EM SPACE;Zs;0;WS */
+    0x2005, /* FOUR-PER-EM SPACE;Zs;0;WS */
+    0x2006, /* SIX-PER-EM SPACE;Zs;0;WS */
+    0x2007, /* FIGURE SPACE;Zs;0;WS */
+    0x2008, /* PUNCTUATION SPACE;Zs;0;WS */
+    0x2009, /* THIN SPACE;Zs;0;WS */
+    0x200A, /* HAIR SPACE;Zs;0;WS */
+    0x202F, /* NARROW NO-BREAK SPACE;Zs;0;CS */
+    0x205F, /* MEDIUM MATHEMATICAL SPACE;Zs;0;WS */
+    0x3000, /* IDEOGRAPHIC SPACE;Zs;0;WS */
+};
+
+#endif // _PROPLIST_H_INCLUDED_
diff --git a/src/configure.ac b/src/configure.ac
new file mode 100644
index 00000000..149974ab
--- /dev/null
+++ b/src/configure.ac
@@ -0,0 +1,569 @@
+AC_INIT([Recoll], m4_esyscmd_s(cat VERSION))
+AC_CONFIG_HEADERS([common/autoconfig.h])
+AH_BOTTOM([#include "conf_post.h"])
+AC_PREREQ(2.53)
+AC_CONFIG_SRCDIR(index/recollindex.cpp)
+
+AM_INIT_AUTOMAKE([1.10 no-define subdir-objects foreign])
+AC_DISABLE_STATIC
+LT_INIT
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_PROG_CXX
+if test C$CXX = C ; then
+   AC_MSG_ERROR([C++ compiler needed. Please install one (ie: gnu g++)])
+fi
+
+AC_PROG_YACC
+
+AC_PROG_LIBTOOL
+AC_C_BIGENDIAN
+
+AC_SYS_LARGEFILE
+
+# OpenBSD needs sys/param.h for mount.h to compile
+AC_CHECK_HEADERS([sys/param.h, spawn.h])
+
+AC_CHECK_FUNCS([posix_spawn, setrlimit])
+
+if test "x$ac_cv_func_posix_spawn" = xyes; then :
+   AC_ARG_ENABLE(posix_spawn,
+    AC_HELP_STRING([--enable-posix_spawn],
+   [Enable the use of posix_spawn().]),
+        posixSpawnEnabled=$enableval, posixSpawnEnabled=no)
+fi
+if test X$posixSpawnEnabled = Xyes ; then
+  AC_DEFINE(USE_POSIX_SPAWN, 1, [Use posix_spawn()])
+fi
+
+# Check for where to find unordered_map etc.
+AC_LANG_PUSH([C++])
+AC_CHECK_HEADER(tr1/unordered_map,[AC_DEFINE([HAVE_TR1_UNORDERED],
+    [],["Have tr1"])],[])
+AC_CHECK_HEADER(unordered_map,[AC_DEFINE([HAVE_CXX0X_UNORDERED],
+    [],["Have C++0x"])],[])
+AC_TRY_COMPILE([
+    #include 
+  ],[
+    std::shared_ptr ptr;
+  ], rcl_shared_ptr_std="1", rcl_shared_ptr_std="0")
+AC_TRY_COMPILE([
+    #include 
+  ],[
+    std::tr1::shared_ptr ptr;
+  ], rcl_shared_ptr_tr1="1", rcl_shared_ptr_tr1="0")
+if test X$rcl_shared_ptr_std = X1; then 
+   AC_DEFINE(HAVE_SHARED_PTR_STD, [], [Has std::shared_ptr])
+elif test X$rcl_shared_ptr_tr1 = X1; then 
+   AC_DEFINE(HAVE_SHARED_PTR_TR1, [], [Has std::tr1::shared_ptr])
+fi
+AC_LANG_POP([C++])
+
+AC_CHECK_HEADERS([sys/mount.h sys/statfs.h sys/statvfs.h sys/vfs.h], [], [],
+[#ifdef HAVE_SYS_PARAM_H
+# include 
+#endif
+])
+
+# Use specific 'file' command ? (Useful on solaris to specify
+# /usr/local/bin/file instead of the system's which doesn't understand '-i'
+AC_ARG_WITH(file-command, 
+    AC_HELP_STRING([--with-file-command],
+   [Specify version of 'file' command (ie: --with-file-command=/usr/local/bin/file)]),
+        withFileCommand=$withval, withFileCommand=file)
+case $withFileCommand in
+  file)
+    AC_PATH_PROG(fileProg, file);;
+  *) 
+    fileProg=$withFileCommand;;
+esac
+
+if test ! -x "$fileProg"; then
+   AC_MSG_ERROR([$fileProg does not exist or is not executable])
+fi
+AC_DEFINE_UNQUOTED(FILE_PROG, "$fileProg", [Path to the file program])
+
+# Can't use Solaris standard 'file' command, it doesn't support -i
+if test X$sys != XSunOS -o X$fileProg != X/usr/bin/file; then
+   AC_DEFINE(USE_SYSTEM_FILE_COMMAND, 1, [Enable using the system's 'file' command to id mime if we fail internally])
+fi
+
+
+# Use aspell to provide spelling expansions ?
+# The default is yes. If we do find an aspell installation, we use it. Else
+# we do compile the aspell module using an internal copy of aspell.h
+# Only --with-aspell=no will completely disable aspell support
+AC_ARG_WITH(aspell, 
+    AC_HELP_STRING([--without-aspell],
+   [Disable use of aspell spelling package to provide term expansion to other spellings]),
+        withAspell=$withval, withAspell=yes)
+case $withAspell in
+     no);;
+     yes)
+     AC_PATH_PROG(aspellProg, aspell)
+     ;;
+     *) # The argument should be the path to the aspell program
+     aspellProg=$withAspell
+     ;;
+esac
+
+if test X$withAspell != Xno ; then
+   AC_DEFINE(RCL_USE_ASPELL, 1, [Compile the aspell interface])
+   if test X$aspellProg != X ; then
+      aspellBase=`dirname $aspellProg`
+      aspellBase=`dirname $aspellBase`
+      AC_DEFINE_UNQUOTED(ASPELL_PROG, "$aspellProg",
+	[Path to the aspell program])
+      if test -f $aspellBase/include/aspell.h ; then	
+          AC_DEFINE_UNQUOTED(ASPELL_INCLUDE, "$aspellBase/include/aspell.h",
+	    [Path to the aspell api include file])
+      else
+	AC_MSG_NOTICE([aspell support enabled but aspell package not found. Compiling with internal aspell interface file])
+	 AC_DEFINE(ASPELL_INCLUDE, ["aspell-local.h"])
+      fi
+   else
+     # aspell support enabled but no aspell install yet
+	AC_MSG_NOTICE([aspell support enabled but aspell package not found. Compiling with internal aspell interface file])
+	AC_DEFINE(ASPELL_INCLUDE, ["aspell-local.h"])
+   fi
+fi
+
+if test -f /usr/include/sys/inotify.h -o -f /usr/include/linux/inotify.h; then
+   inot_default=yes
+else
+   inot_default=no
+fi
+
+# Real time monitoring with inotify
+AC_ARG_WITH(inotify, 
+    AC_HELP_STRING([--with-inotify],
+   [Use inotify for almost real time indexing of modified files (the default
+    is yes on Linux).]),
+        withInotify=$withval, withInotify=$inot_default)
+
+if test X$withInotify != Xno ; then
+   AC_MSG_NOTICE([enabled support for inotify monitoring])
+   AC_DEFINE(RCL_MONITOR, 1, [Real time monitoring option])
+   AC_DEFINE(RCL_USE_INOTIFY, 1, [Compile the inotify interface])
+else
+   AC_MSG_NOTICE([inotify not found, inotify monitoring disabled])
+fi
+
+# Real time monitoring with FAM
+AC_ARG_WITH(fam, 
+    AC_HELP_STRING([--with-fam],
+   [Use File Alteration Monitor for almost real time indexing of modified files. Give the fam/gamin library as argument (ie: /usr/lib/libfam.so) if configure does not find the right one.]),
+        withFam=$withval, withFam=yes)
+
+if test X$withFam != Xno -a X$withInotify != Xno ; then
+   AC_MSG_NOTICE([FAM support enabled but inotify support also enabled. Disabling FAM support and using inotify])
+   withFam=no
+fi
+
+famLib=""
+case $withFam in
+     no);;
+     yes)
+	for dir in /usr/local/lib ${libdir};do 
+	 if test -f $dir/libfam.so ; then famLib=$dir/libfam.so;break;fi
+	done
+        if test X$famLib = X ; then
+	  AC_MSG_NOTICE([FAM library not found, disabling FAM and real time indexing support])
+	  withFam=no
+        fi
+     ;;
+     *) # The argument should be the path to the fam library
+     famLib=$withFam
+     ;;
+esac
+
+if test X$withFam != Xno ; then
+   AC_DEFINE(RCL_MONITOR, 1, [Real time monitoring option])
+   AC_DEFINE(RCL_USE_FAM, 1, [Compile the fam interface])
+   if test X$famLib != X ; then
+      famLibDir=`dirname $famLib`
+      famBase=`dirname $famLibDir`
+      famBLib=`basename $famLib .so | sed -e s/lib//`
+      if test ! -f $famBase/include/fam.h ; then
+	 AC_MSG_ERROR([fam.h not found in $famBase/include. Specify --with-fam=no to disable fam support])
+      fi
+      LIBFAM="-L$famLibDir -l$famBLib"
+      AC_MSG_NOTICE([fam library directive: $LIBFAM])
+      AC_DEFINE_UNQUOTED(FAM_INCLUDE, "$famBase/include/fam.h",
+	[Path to the fam api include file])
+   else
+	AC_MSG_ERROR([fam library not found])
+   fi
+fi
+
+# Enable use of threads in the indexing pipeline.  
+# This is disabled by default as we usually care little about indexing 
+# absolute performance (more about impact on usability and total 
+# resources used).
+AC_ARG_ENABLE(idxthreads,
+    AC_HELP_STRING([--disable-idxthreads],
+   [Disable multithread indexing.]),
+        idxthreadsEnabled=$enableval, idxthreadsEnabled=yes)
+AM_CONDITIONAL(NOTHREADS, [test X$idxthreadsEnabled = Xno])
+if test X$idxthreadsEnabled = Xyes ; then
+  AC_DEFINE(IDX_THREADS, 1, [Use multiple threads for indexing])
+fi
+
+# Enable CamelCase word splitting. This is optional because it causes 
+# problems with phrases: with camelcase enabled, "MySQL manual"
+# will be matched by "MySQL manual" and "my sql manual" but not 
+# "mysql manual" (which would need increased slack as manual is now at pos
+# 2 instead of 1
+AC_ARG_ENABLE(camelcase,
+    AC_HELP_STRING([--enable-camelcase],
+   [Enable splitting camelCase words. This is not enabled by default as
+   this makes phrase matches more difficult: you need to use matching
+   case in the phrase query to get a match. Ie querying for 
+   "MySQL manual" and "my sql manual" are the same, but not the same as
+   "mysql manual" (in phrases only and you could raise the phrase slack to
+   get a match).]),
+        camelcaseEnabled=$enableval, camelcaseEnabled=no)
+if test X$camelcaseEnabled = Xyes ; then
+  AC_DEFINE(RCL_SPLIT_CAMELCASE, 1, [Split camelCase words])
+fi
+
+# Disable building the python module.
+if test X$sys != XDarwin ; then
+  AC_ARG_ENABLE(python-module,
+    AC_HELP_STRING([--disable-python-module],
+    [Do not build the Python module.]),
+        pythonEnabled=$enableval, pythonEnabled=yes)
+else
+  pythonEnabled=no
+fi
+
+AM_CONDITIONAL(MAKEPYTHON, [test X$pythonEnabled = Xyes])
+
+
+AC_CHECK_FUNCS(mkdtemp)
+AC_CHECK_LIB([pthread], [pthread_create], [], [])
+AC_CHECK_LIB([dl], [dlopen], [], [])
+AC_CHECK_LIB([z], [zlibVersion], [], [])
+
+##### Look for iconv. This can exist in either libc (ie: Linux, solaris) or
+##### libiconv. We'd need a --with-libiconv= option
+AC_LANG(C++)
+LIBICONV=""
+S_LIBS=$LIBS
+S_CPPFLAGS=$CPPFLAGS
+for dir in ${libdir} /opt/local/lib /usr/local/lib;do
+  CPPFLAGS="$S_CPPFLAGS -I$dir/../include"
+
+  LIBS="$S_LIBS -L$dir"
+  AC_TRY_LINK([#include 
+#include ],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      LIBICONV="-L$dir";INCICONV=-I$dir/../include)
+  if test A"$LIBICONV" != A ; then
+     break
+  fi
+
+  LIBS="$S_LIBS -L$dir -liconv"
+  AC_TRY_LINK([#include 
+#include ],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      LIBICONV="-L$dir -liconv";INCICONV=-I$dir/../include)
+  if test A"$LIBICONV" != A ; then
+     break
+  fi
+
+done
+
+LIBS=$S_LIBS
+CPPFLAGS=$S_CPPFLAGS
+
+if test A"$LIBICONV" = A ; then
+   AC_MSG_ERROR([Cannot find iconv_open anywhere. Please install iconv])
+   exit 1
+fi
+#echo LIBICONV $LIBICONV
+#echo INCICONV $INCICONV
+
+CPPFLAGS="$CPPFLAGS $INCICONV"
+AC_MSG_CHECKING(for type of inbuf parameter to iconv)
+AC_TRY_COMPILE([
+    #include 
+    #include 
+  ],[
+    iconv(0,(const char **)0,(size_t *)0,(char **)0,(size_t *)0);
+  ], rcl_iconv_inbuf_const="1", rcl_iconv_inbuf_const="0")
+if test X$rcl_iconv_inbuf_const = X1 ; then
+  AC_DEFINE(RCL_ICONV_INBUF_CONST, 1, [iconv parameter 2 is const char**])
+fi
+
+
+############# Putenv
+AC_MSG_CHECKING(for type of string parameter to putenv)
+AC_TRY_COMPILE([
+    #include 
+  ],[
+    putenv((const char *)0);
+  ], rcl_putenv_string_const="1", rcl_putenv_string_const="0")
+if test X$rcl_putenv_string_const = X1 ; then
+  AC_DEFINE(PUTENV_ARG_CONST, 1, [putenv parameter is const])
+fi
+
+
+#### Look for Xapian. Done in a strange way to work around autoconf
+# cache
+XAPIAN_CONFIG=no
+if test "$XAPIAN_CONFIG" = "no"; then 
+    AC_PATH_PROG(XAPIAN_CONFIG0, [xapian-config], no)
+    XAPIAN_CONFIG=$XAPIAN_CONFIG0
+fi
+if test "$XAPIAN_CONFIG" = "no"; then 
+   AC_PATH_PROG(XAPIAN_CONFIG1, [xapian-config-1.3], no)
+   XAPIAN_CONFIG=$XAPIAN_CONFIG1
+fi
+if test "$XAPIAN_CONFIG" = "no"; then 
+   AC_PATH_PROG(XAPIAN_CONFIG2, [xapian-config-1.1], no)
+   XAPIAN_CONFIG=$XAPIAN_CONFIG2
+fi
+
+if test "$XAPIAN_CONFIG" = "no" ; then
+   AC_MSG_ERROR([Cannot find xapian-config command in $PATH. Is
+xapian-core installed ?])
+   exit 1
+fi
+LIBXAPIAN=`$XAPIAN_CONFIG --libs`
+# The --static thing fails with older Xapians. Happily enough they don't
+# need it either (because there are no needed libraries (no uuid and we
+# deal explicitely with libz)
+LIBXAPIANSTATICEXTRA=`$XAPIAN_CONFIG --static --libs 2> /dev/null`
+# Workaround for problem in xapian-config in some versions: wrongly lists
+# libstdc++.la in the lib list
+for i in $LIBXAPIAN ; do
+    case $i in
+    *stdc++*|-lm|-lgcc_s|-lc);;
+    *) tmpxaplib="$tmpxaplib $i";;
+    esac
+done
+LIBXAPIAN=$tmpxaplib
+LIBXAPIANDIR=`$XAPIAN_CONFIG --libs | awk '{print $1}'`
+case A"$LIBXAPIANDIR" in
+  A-L*) LIBXAPIANDIR=`echo $LIBXAPIANDIR | sed -e 's/-L//'`;;
+  *) LIBXAPIANDIR="";;
+esac
+XAPIANCXXFLAGS=`$XAPIAN_CONFIG --cxxflags`
+
+#echo XAPIAN_CONFIG: $XAPIAN_CONFIG 
+#echo LIBXAPIAN: $LIBXAPIAN
+#echo LIBXAPIANDIR: $LIBXAPIANDIR
+#echo LIBXAPIANSTATICEXTRA: $LIBXAPIANSTATICEXTRA
+#echo XAPIANCXXFLAGS: $XAPIANCXXFLAGS
+
+AC_ARG_ENABLE(xadump, 
+    AC_HELP_STRING([--enable-xadump],
+   [Enable building the xadump low level Xapian access program.]),
+        enableXADUMP=$enableval, enableXADUMP="no")
+AM_CONDITIONAL(MAKEXADUMP, [test X$enableXADUMP = Xyes])
+
+AC_ARG_ENABLE(userdoc,
+    AC_HELP_STRING([--disable-userdoc],
+       [Disable building the user manual. (Avoids the need for docbook xml/xsl files and TeX tools.]),
+        enableUserdoc=$enableval, enableUserdoc="yes")
+AM_CONDITIONAL(MAKEUSERDOC, [test X$enableUserdoc = Xyes])
+
+
+
+#### QT
+# The way qt and its tools (qmake especially) are installed is very
+# different between systems (and maybe qt versions)
+#
+# In general we need QTDIR to be set, because it is used inside the
+# qmake-generated makefiles. But there are exceptions: ie on debian3.1 (at
+# least on the sourceforge compile farm), QTDIR is not needed because qmake
+# generates hard paths (and is installed in /usr/bin). We don't want to
+# force the user to set QTDIR if it is not needed.
+#
+# The logic is then to first look for qmake, possibly using QTDIR if it is
+# set.
+# 
+# If QTDIR is not set, we then generate a bogus qt project and check if
+# QTDIR is needed in the Makefile, in which case we complain.
+#
+# QMAKESPEC: on most Linux system, there is a 'default' link inside the
+# mkspecs directory, so that QMAKESPEC is not needed.
+# If QMAKESPEC is not set and needed, the qmake test at the previous test
+# will have failed, and we tell the user to check his environment.
+#
+AC_ARG_ENABLE(qtgui, 
+    AC_HELP_STRING([--disable-qtgui],
+   [Disable the QT-based graphical user interface.]),
+        enableQT=$enableval, enableQT="yes")
+AM_CONDITIONAL(MAKEQT, [test X$enableQT = Xyes])
+
+AC_ARG_ENABLE(recollq, 
+    AC_HELP_STRING([--enable-recollq],
+   [Enable building the recollq command line query tool (recoll -t without
+   need for Qt). This is done by default if --disable-qtgui is set but this
+   option enables forcing it.]),
+        enableRECOLLQ=$enableval, enableRECOLLQ="no")
+if test X"$enableRECOLLQ" != X ; then
+    AM_CONDITIONAL(MAKECMDLINE, [test X$enableRECOLLQ = Xyes])
+else
+    AM_CONDITIONAL(MAKECMDLINE, [test X$enableQT = Xno])
+fi
+
+
+if test X$enableQT = Xyes ; then
+
+  if test X$QTDIR != X ; then
+     PATH=$PATH:$QTDIR/bin
+     export PATH
+  fi
+  
+  if test X$QMAKE = X ; then
+     QMAKE=qmake
+  fi
+  case $QMAKE in
+    */*) QMAKEPATH=$QMAKE;;
+    *) AC_PATH_PROG([QMAKEPATH], $QMAKE, NOTFOUND);;
+  esac
+
+  if test X$QMAKEPATH = XNOTFOUND ; then 
+     AC_MSG_ERROR([Cannot find the qmake program. Maybe you need to install
+  qt development files and tools and/or set the QTDIR environment variable?])
+  fi
+  QMAKE=$QMAKEPATH
+  
+  # MAC OS X: we don't support this (the native search tool is more than
+  # good enough), but we make things work just enough so that the program can
+  # be compiled and roughly installed (not as a .app, but to /usr/local),
+  # basically to enable using a Macbook for development
+  if test X$sys = XDarwin ; then
+     # The default is xcode
+     QMAKE="${QMAKE} -spec macx-g++"
+  fi
+  
+  # Check Qt version
+  qmakevers="`${QMAKE} --version 2>&1`"
+  #echo "qmake version: $qmakevers"
+  v4=`expr "$qmakevers" : '.*Qt[ ][ ]*version[ ][ ]*4.*'`
+  v5=`expr "$qmakevers" : '.*Qt[ ][ ]*version[ ][ ]*5.*'`
+  if test X$v4 = X0 -a X$v5 = X0; then 
+     AC_MSG_ERROR([qmake seems to be using Qt version 3 which is not supported any more])
+  else
+    if test X$v4 != X0 ; then
+       AC_MSG_NOTICE([using qt version 4 user interface])
+    else
+       AC_MSG_NOTICE([using qt version 5 user interface])
+    fi
+    QTGUI=qtgui
+  fi
+
+
+ ##### Using Qt webkit for reslist display? Else Qt textbrowser
+  AC_ARG_ENABLE(webkit,
+    AC_HELP_STRING([--disable-webkit],
+      [Disable use of qt-webkit (only meaningful if qtgui is enabled).]),
+        enableWebkit=$enableval, enableWebkit="yes")
+
+  if test "$enableWebkit" = "yes" ; then
+   QMAKE_ENABLE_WEBKIT=""
+   QMAKE_DISABLE_WEBKIT="#"
+  else
+   QMAKE_ENABLE_WEBKIT="#"
+   QMAKE_DISABLE_WEBKIT=""
+  fi
+
+ ##### Using QZeitGeist lib ? Default no for now
+  AC_ARG_WITH(qzeitgeist,
+    AC_HELP_STRING([--with-qzeitgeist],
+      [Enable the use of the qzeitgeist library to send zeitgeist events.]),
+        withQZeitgeist=$withval, withQZeitgeist="no")
+
+  case "$withQZeitgeist" in 
+    no)  LIBQZEITGEIST=;;
+    yes) LIBQZEITGEIST=-lqzeitgeist;;
+    *)   LIBQZEITGEIST=$withQZeitgeist;;
+  esac	
+
+  if test "$withQZeitgeist" != "no" ; then
+   QMAKE_ENABLE_ZEITGEIST=""
+   QMAKE_DISABLE_ZEITGEIST="#"
+  else
+   QMAKE_ENABLE_ZEITGEIST="#"
+   QMAKE_DISABLE_ZEITGEIST=""
+  fi
+
+  AC_CONFIG_FILES($QTGUI/recoll.pro)
+
+  ##################### End QT stuff
+fi
+
+
+### X11: this is needed for the session monitoring code (in recollindex -m)
+AC_ARG_ENABLE(x11mon, 
+    AC_HELP_STRING([--disable-x11mon],
+   [Disable recollindex support for X11 session monitoring.]),
+        enableX11mon=$enableval, enableX11mon="yes")
+
+if test X$withInotify = Xno -a X$withFam = Xno ; then
+  enableX11mon=no
+fi
+
+if test "$enableX11mon" = "yes" ; then
+  AC_PATH_XTRA
+  X_LIBX11=-lX11
+else
+  AC_DEFINE(DISABLE_X11MON, 1, [No X11 session monitoring support])
+  X_LIBX11=""
+fi
+#echo X_CFLAGS "'$X_CFLAGS'" X_PRE_LIBS "'$X_PRE_LIBS'" X_LIBS \
+#      "'$X_LIBS'" X_LIBX11 "'$X_LIBX11'" X_EXTRA_LIBS "'$X_EXTRA_LIBS'"
+
+# For communicating the value of RECOLL_DATADIR to non-make-based
+# subpackages like python-recoll, we have to expand prefix in here, because
+# things like "datadir = ${prefix}/share" (which is what we'd get by
+# expanding @datadir@) don't mean a thing in Python... I guess we could
+# have a piece of shell-script text to be substituted into and executed by
+# setup.py for getting the value of pkgdatadir, but really...
+m_prefix=$prefix
+test "X$m_prefix" = "XNONE" && m_prefix=/usr/local
+m_datadir=${m_prefix}/share
+RECOLL_DATADIR=${m_datadir}/recoll
+
+RCLVERSION=$PACKAGE_VERSION
+RCLLIBVERSION=$RCLVERSION
+
+AC_SUBST(RECOLL_DATADIR)
+AC_SUBST(X_CFLAGS)
+AC_SUBST(X_PRE_LIBS)
+AC_SUBST(X_LIBS)
+AC_SUBST(X_LIBX11)
+AC_SUBST(X_EXTRA_LIBS)
+AC_SUBST(INCICONV)
+AC_SUBST(LIBICONV)
+AC_SUBST(LIBXAPIAN)
+AC_SUBST(LIBXAPIANDIR)
+AC_SUBST(LIBXAPIANSTATICEXTRA)
+AC_SUBST(LIBFAM)
+AC_SUBST(QMAKE)
+AC_SUBST(QTGUI)
+AC_SUBST(XAPIANCXXFLAGS)
+AC_SUBST(QMAKE_ENABLE_WEBKIT)
+AC_SUBST(QMAKE_DISABLE_WEBKIT)
+AC_SUBST(QMAKE_ENABLE_ZEITGEIST)
+AC_SUBST(QMAKE_DISABLE_ZEITGEIST)
+AC_SUBST(LIBQZEITGEIST)
+AC_SUBST(RCLVERSION)
+AC_SUBST(RCLLIBVERSION)
+
+# All object files depend on localdefs which has the cc flags. Avoid
+# changing it unless necessary
+AC_CONFIG_FILES(Makefile)
+AC_CONFIG_FILES(common/rclversion.h)
+AC_CONFIG_FILES(python/recoll/setup.py)
+AC_CONFIG_FILES(python/recoll/Makefile)
+
+AC_OUTPUT
diff --git a/src/desktop/hotrecoll.py b/src/desktop/hotrecoll.py
new file mode 100755
index 00000000..28cb7c35
--- /dev/null
+++ b/src/desktop/hotrecoll.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+#
+# This script should be linked to a keyboard shortcut. Under gnome,
+# you can do this from the main preferences menu, or directly execute
+# "gnome-keybinding-properties"
+#
+# Make the script executable. Install it somewhere in the executable
+# path ("echo $PATH" to check what's in there), and then just enter
+# its name as the action to perform, or copy it anywhere and copy the
+# full path as the action.
+
+import gtk
+import wnck
+import os
+import sys
+from optparse import OptionParser
+
+def main():
+    parser = OptionParser()
+    parser.add_option("-m", "--move-away", action="store_true", default=False,
+                      dest="clear_workspace", 
+                      help="iconify to other workspace to avoid crowding panel")
+    (options, args) = parser.parse_args()
+
+    screen = wnck.screen_get_default()
+    while gtk.events_pending():
+        gtk.main_iteration()
+
+    recollMain = ""
+    recollwins = [];
+    for window in screen.get_windows():
+        if window.get_class_group().get_name() == "Recoll":
+            if window.get_name() == "Recoll":
+                recollMain = window
+            recollwins.append(window)
+
+    if not recollMain:
+        os.system("recoll&")
+        sys.exit(0)
+
+    # Check the main window state, and either activate or minimize all
+    # recoll windows.
+    workspace = screen.get_active_workspace()
+    if not recollMain.is_visible_on_workspace(workspace):
+        for win in recollwins:
+            win.move_to_workspace(workspace)
+            if win != recollMain:
+                win.unminimize(gtk.get_current_event_time())
+        recollMain.activate(gtk.get_current_event_time())
+    else:
+        otherworkspace = None
+        if options.clear_workspace:
+            # We try to minimize to another workspace
+            wkspcs = screen.get_workspaces()
+            for wkspc in wkspcs:
+                if wkspc.get_number() != workspace.get_number():
+                    otherworkspace = wkspc
+                    break
+        for win in recollwins:
+            if otherworkspace:
+                win.move_to_workspace(otherworkspace)
+            win.minimize()
+
+if __name__ == '__main__':
+  main()
+  
diff --git a/src/desktop/recoll-searchgui.desktop b/src/desktop/recoll-searchgui.desktop
new file mode 100644
index 00000000..28b90ece
--- /dev/null
+++ b/src/desktop/recoll-searchgui.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Categories=Utility;Filesystem;Database;
+Comment=Find documents by specifying search terms
+Exec=recoll
+GenericName=Local Text Search
+Icon=recoll
+Name=Recoll
+Terminal=false
+Type=Application
+Keywords=Search;Full Text;
diff --git a/src/desktop/recoll.appdata.xml b/src/desktop/recoll.appdata.xml
new file mode 100644
index 00000000..3a9a1ff0
--- /dev/null
+++ b/src/desktop/recoll.appdata.xml
@@ -0,0 +1,24 @@
+
+
+
+ recoll.desktop
+ CC0-1.0
+ GPL-2.0+
+ Recoll
+ Find documents by specifying search terms
+ 
+ 

Recoll finds keywords inside documents text as well as file names.

+
    +
  • It can search most document formats.
  • +
  • It can reach any storage place: files, archive members, email + attachments, transparently handling decompression.
  • +
  • One click will open the document inside a native editor or + display an even quicker text preview.
  • +
+
+ + http://www.recoll.org/files/recoll-mainwin-h-1248x702.png + + http://www.recoll.org/ + contact@recoll.org +
diff --git a/src/desktop/recoll.ico b/src/desktop/recoll.ico new file mode 100644 index 0000000000000000000000000000000000000000..9e53065a7f6c63df140d82c3d2b8d92422a32174 GIT binary patch literal 13094 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 + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/desktop/recoll.xcf b/src/desktop/recoll.xcf new file mode 100644 index 0000000000000000000000000000000000000000..3c93d9e717942ade3e046bae565de18c4b7bcbd0 GIT binary patch literal 3825 zcmd5<&2AGh5O%^}s97iiy7JAJmC{2{tG+;04v0e~BzS@C*4|hoyVdR%(p%{h^pICovkmTdB$|`(k)VcMlP;sS>Hksifz=jBc< zbI7jk+Q!tQIa8Z{`F}!FC*?_;m@JjMjV&n8<|(aiaGIG4&L=}fUQcqZOI7`GkY@j@ z`mMP=mCnOT=WD~zo?DQLAH>Orw8&4h`uMt}gU}7pP5lIVmeXZCv>XlFXmQ@+k6Juv z@h9N4RwEBU$OcLC%V_LF)irg`Uw7|7_nEQB*SGcEE5`19!P4KboA1;ors5{@01g{s z8hHSR4e=3sS{U$cCN3fm;IJWPkq2sqEp(79Aupxe6PYZ+Vz(X`p z#D&wqLo`stg*UEyf^Qz8fg&!P1sKd_dE^X&s&pCgkb!_<>vCcW)^%b~$jacWL@A?W{ TzDBHb&UbwUh8lk*_AS^i(2}&` literal 0 HcmV?d00001 diff --git a/src/desktop/recoll_index_on_ac.sh b/src/desktop/recoll_index_on_ac.sh new file mode 100755 index 00000000..751fefce --- /dev/null +++ b/src/desktop/recoll_index_on_ac.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +# This is a shell script that starts and stops the recollindex daemon +# depending on whether or not the power supply is plugged in. It should be +# called from the file ~/.config/autostart/recollindex.desktop. +# +# That is: make the script executable (chmod +x) and replace in +# recollindex.desk the line: +# Exec=recollindex -w 60 -m +# With +# Exec=/path/to/recoll_index_on_ac.sh +# +# +# By: The Doctor (drwho at virtadpt dot net) +# License: GPLv3 +# +# Modifications by J.F Dockes +# - replaced "acpi" usage with "on_ac_power" which seems to be both +# more common and more universal. +# - Changed the default to be that we run recollindex if we can't determine +# power status (ie: on_ac_power not installed or not working: we're most +# probably not running on a laptop). + +INDEXER="recollindex -w 60 -m" +ACPI=`which on_ac_power` + +# If the on_ac_power script isn't installed, warn, but run anyway. Maybe +# this is not a laptop or not linux. +if test "x$ACPI" = "x" ; then + echo "on_ac_power utility not found. Starting recollindex anyway." +fi + +while true; do + # Determine whether or not the power supply is plugged in. + if test "x$ACPI" != "x" ; then + on_ac_power + STATUS=$? + else + STATUS=0 + fi + + # Get the PID of the indexing daemon. + if test -f ~/.recoll/index.pid ; then + PID=`cat ~/.recoll/index.pid` + # Make sure that this is recollindex running. pid could have + # been reallocated + ps ax | egrep "^[ \t]*$PID " | grep -q recollindex || PID="" + fi +# echo "Recollindex pid is $PID" + + if test $STATUS -eq 1 ; then + # The power supply is not plugged in. See if the indexing daemon is + # running, and if it is, kill it. The indexing daemon will not be + # started. + if test x"$PID" != x; then + kill $PID + fi + else + # The power supply is plugged in or we just don't know. + # See if the indexing daemon is running, and if it's not start it. + if test -z "$PID" ; then + $INDEXER + fi + fi + + # Go to sleep for a while. + sleep 120 + continue +done diff --git a/src/desktop/recollindex.desktop b/src/desktop/recollindex.desktop new file mode 100644 index 00000000..ef75ea26 --- /dev/null +++ b/src/desktop/recollindex.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Name=Recoll real time indexer +Comment=Runs in background to extract and index text from modified documents +Icon=system-run +Exec=recollindex -w 60 -m +Terminal=false +TerminalOptions= +Type=Application +Categories=Utility;Filesystem;Database; +NoDisplay=true +X-GNOME-Autostart-enabled=true +X-KDE-autostart-after=panel +X-KDE-UniqueApplet=true diff --git a/src/desktop/xdg-utils-1.0.1/LICENSE b/src/desktop/xdg-utils-1.0.1/LICENSE new file mode 100644 index 00000000..1edf08c3 --- /dev/null +++ b/src/desktop/xdg-utils-1.0.1/LICENSE @@ -0,0 +1,18 @@ +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/desktop/xdg-utils-1.0.1/scripts/xdg-desktop-menu b/src/desktop/xdg-utils-1.0.1/scripts/xdg-desktop-menu new file mode 100755 index 00000000..a252ba01 --- /dev/null +++ b/src/desktop/xdg-utils-1.0.1/scripts/xdg-desktop-menu @@ -0,0 +1,1261 @@ +#!/bin/sh +#--------------------------------------------- +# xdg-desktop-menu +# +# Utility script to install menu items on a Linux desktop. +# Refer to the usage() function below for usage. +# +# Copyright 2006, Kevin Krammer +# Copyright 2006, Jeremy White +# +# LICENSE: +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +#--------------------------------------------- + +manualpage() +{ +cat << _MANUALPAGE +Name + +xdg-desktop-menu - command line tool for (un)installing desktop menu items + +Synopsis + +xdg-desktop-menu install [--noupdate] [--novendor] [--mode mode] directory-file +(s) desktop-file(s) + +xdg-desktop-menu uninstall [--noupdate] [--mode mode] directory-file(s) +desktop-file(s) + +xdg-desktop-menu forceupdate [--mode mode] + +xdg-desktop-menu { --help | --manual | --version } + +Description + +The xdg-desktop-menu program can be used to install new menu entries to the +desktop's application menu. + +The application menu works according to the XDG Desktop Menu Specification at +http://www.freedesktop.org/Standards/menu-spec + +Commands + +install + + Install one or more applications in a submenu of the desktop menu system. + + desktop-file: A desktop file represents a single menu entry in the menu. + Desktop files are defined by the freedesktop.org Desktop Entry + Specification. The most important aspects of *.desktop files are summarized + below. + + Menu entries can be added to the menu system in two different ways. They + can either be added to a predefined submenu in the menu system based on one + or more category keywords, or they can be added to a new submenu. + + To add a menu entry to a predefined submenu the desktop file that + represents the menu entry must have a Categories= entry that lists one or + more keywords. The menu item will be included in an appropriate submenu + based on the included keywords. + + To add menu items to a new submenu the desktop-files must be preceded by a + directory-file that describes the submenu. If multiple desktop-files are + specified, all entries will be added to the same menu. If entries are + installed to a menu that has been created with a previous call to + xdg-desktop-menu the entries will be installed in addition to any already + existing entries. + + directory-file: The *.directory file indicated by directory-file represents + a submenu. The directory file provides the name and icon for a submenu. The + name of the directory file is used to identify the submenu. + + If multiple directory files are provided each file will represent a submenu + within the menu that preceeds it, creating a nested menu hierarchy + (sub-sub-menus). The menu entries themselves will be added to the last + submenu. + + Directory files follow the syntax defined by the freedesktop.org Desktop + Entry Specification. + +uninstall + + Remove applications or submenus from the desktop menu system previously + installed with xdg-desktop-menu install. + + A submenu and the associated directory file is only removed when the + submenu no longer contains any menu entries. + +forceupdate + + Force an update of the menu system. + + This command is only useful if the last call to xdg-desktop-menu included + the --noupdate option. + +Options + +--noupdate + Postpone updating the menu system. If multiple updates to the menu system + are made in sequence this flag can be used to indicate that additional + changes will follow and that it is not necassery to update the menu system + right away. +--novendor + + Normally, xdg-desktop-menu checks to ensure that any *.directory and + *.desktop files to be installed has a vendor prefix. This option can be + used to disable that check. + + A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated + with a dash ("-"). Companies and organizations are encouraged to use a word + or phrase, preferably the organizations name, for which they hold a + trademark as their vendor prefix. The purpose of the vendor prefix is to + prevent name conflicts. + +--mode mode + + mode can be user or system. In user mode the file is (un)installed for the + current user only. In system mode the file is (un)installed for all users + on the system. Usually only root is allowed to install in system mode. + + The default is to use system mode when called by root and to use user mode + when called by a non-root user. + +--help + Show command synopsis. +--manual + Show this manualpage. +--version + Show the xdg-utils version information. + +Desktop Files + +An application item in the application menu is represented by a *.desktop file. +A *.desktop file consists of a [Desktop Entry] header followed by several Key= +Value lines. + +A *.desktop file can provide a name and description for an application in +several different languages. This is done by adding a language code as used by +LC_MESSAGES in square brackets behind the Key. This way one can specify +different values for the same Key depending on the currently selected language. + +The following keys are often used: + +Value=1.0 + This is a mandatory field to indicate that the *.desktop file follows the + 1.0 version of the specification. +Type=Application + This is a mandatory field that indicates that the *.desktop file describes + an application launcher. +Name=Application Name + The name of the application. For example Mozilla +GenericName=Generic Name + A generic description of the application. For example Web Browser +Comment=Comment + Optional field to specify a tooltip for the application. For example Visit + websites on the Internet +Icon=Icon File + The icon to use for the application. This can either be an absolute path to + an image file or an icon-name. If an icon-name is provided an image lookup + by name is done in the user's current icon theme. The xdg-icon-resource + command can be used to install image files into icon themes. The advantage + of using an icon-name instead of an absolute path is that with an icon-name + the application icon can be provided in several different sizes as well as + in several differently themed styles. +Exec=Command Line + The command line to start the application. If the application can open + files the %f placeholder should be specified. When a file is dropped on the + application launcher the %f is replaced with the file path of the dropped + file. If multiple files can be specified on the command line the %F + placeholder should be used instead of %f. If the application is able to + open URLs in addition to local files then %u or %U can be used instead of + %f or %F. +Categories=Categories + + A list of categories separated by semi-colons. A category is a keyword that + describes and classifies the application. By default applications are + organized in the application menu based on category. When menu entries are + explicitly assigned to a new submenu it is not necassery to list any + categories. + + When using categories it is recommended to include one of the following + categories: AudioVideo, Development, Education, Game, Graphics, Network, + Office, Settings, System, Utility. + + See Appendix A of the XDG Desktop Menu Specification for information about + additional categories. http://standards.freedesktop.org/menu-spec/ + menu-spec-1.0.html + +MimeType=Mimetypes + A list of mimetypes separated by semi-colons. This field is used to + indicate which file types the application is able to open. + +For a complete oveview of the *.desktop file format please visit http:// +www.freedesktop.org/wiki/Standards/desktop-entry-spec + +Directory Files + +The appearance of submenu in the application menu is provided by a *.directory +file. In particular it provides the title of the submenu and a possible icon. A +*.directory file consists of a [Desktop Entry] header followed by several Key= +Value lines. + +A *.directory file can provide a title (name) for the submenu in several +different languages. This is done by adding a language code as used by +LC_MESSAGES in square brackets behind the Key. This way one can specify +different values for the same Key depending on the currently selected language. + +The following keys are relevqnt for submenus: + +Value=1.0 + This is a mandatory field to indicate that the *.directory file follows the + 1.0 version of the Desktop Entry specification. +Type=Directory + This is a mandatory field that indicates that the *.directory file + describes a submenu. +Name=Menu Name + The title of submenu. For example Mozilla +Comment=Comment + Optional field to specify a tooltip for the submenu. +Icon=Icon File + The icon to use for the submenu. This can either be an absolute path to an + image file or an icon-name. If an icon-name is provided an image lookup by + name is done in the user's current icon theme. The xdg-icon-resource + command can be used to install image files into icon themes. The advantage + of using an icon-name instead of an absolute path is that with an icon-name + the submenu icon can be provided in several different sizes as well as in + several differently themed styles. + +Environment Variables + +xdg-desktop-menu honours the following environment variables: + +XDG_UTILS_DEBUG_LEVEL + Setting this environment variable to a non-zero numerical value makes + xdg-desktop-menu do more verbose reporting on stderr. Setting a higher + value increases the verbosity. +XDG_UTILS_INSTALL_MODE + This environment variable can be used by the user or administrator to + override the installation mode. Valid values are user and system. + +Exit Codes + +An exit code of 0 indicates success while a non-zero exit code indicates +failure. The following failure codes can be returned: + +1 + Error in command line syntax. +2 + One of the files passed on the command line did not exist. +3 + A required tool could not be found. +4 + The action failed. +5 + No permission to read one of the files passed on the command line. + +See Also + +xdg-desktop-icon(1), xdg-icon-resource(1), xdg-mime(1) + +Examples + +The company ShinyThings Inc. has developed an application named "WebMirror" and +would like to add it to the application menu. The company will use +"shinythings" as its vendor id. In order to add the application to the menu +there needs to be a .desktop file with a suitable Categories entry: + +shinythings-webmirror.desktop: + + [Desktop Entry] + Encoding=UTF-8 + Type=Application + + Exec=webmirror + Icon=webmirror + + Name=WebMirror + Name[nl]=WebSpiegel + + Categories=Network;WebDevelopment; + +Now the xdg-desktop-menu tool can be used to add the +shinythings-webmirror.desktop file to the desktop application menu: + +xdg-desktop-menu install ./shinythings-webmirror.desktop + +Note that for the purpose of this example the menu items are available in two +languages, English and Dutch. The language code for Dutch is nl. + +In the next example the company ShinyThings Inc. will add its own submenu to +the desktop application menu consisting of a "WebMirror" menu item and a +"WebMirror Admin Tool" menu item. + +First the company needs to create two .desktop files that describe the two menu +items. Since the items are to be added to a new submenu it is not necassery to +include a Categories= line: + +shinythings-webmirror.desktop: + + [Desktop Entry] + Encoding=UTF-8 + Type=Application + + Exec=webmirror + Icon=shinythings-webmirror + + Name=WebMirror + Name[nl]=WebSpiegel + + +shinythings-webmirror-admin.desktop: + + [Desktop Entry] + Encoding=UTF-8 + Type=Application + + Exec=webmirror-admintool + Icon=shinythings-webmirror-admintool + + Name=WebMirror Admin Tool + Name[nl]=WebSpiegel Administratie Tool + +In addition a .directory file needs to be created to provide a title and icon +for the sub-menu itself: + +shinythings-webmirror.directory: + + [Desktop Entry] + Encoding=UTF-8 + + Icon=shinythings-webmirror-menu + + Name=WebMirror + Name[nl]=WebSpiegel + +These file can now be installed with: + +xdg-desktop-menu install ./shinythings-webmirror.directory \ + ./shinythings-webmirror.desktop ./shinythings-webmirror-admin.desktop + +The menu entries could also be installed one by one: + +xdg-desktop-menu install --noupdate ./shinythings-webmirror.directory \ + ./shinythings-webmirror.desktop +xdg-desktop-menu install --noupdate ./shinythings-webmirror.directory \ + ./shinythings-webmirror-admin.desktop +xdg-desktop-menu forceupdate + +Although the result is the same it is slightly more efficient to install all +files at the same time. + +The *.desktop and *.directory files reference icons with the names webmirror, +webmirror-admin and webmirror-menu which should also be installed. In this +example the icons are installed in two different sizes, once with a size of +22x22 pixels and once with a size of 64x64 pixels: + +xdg-icon-resource install --size 22 ./wmicon-22.png shinythings-webmirror +xdg-icon-resource install --size 22 ./wmicon-menu-22.png shinythings-webmirror-menu +xdg-icon-resource install --size 22 ./wmicon-admin-22.png shinythings-webmirror-admin +xdg-icon-resource install --size 64 ./wmicon-64.png shinythings-webmirror +xdg-icon-resource install --size 64 ./wmicon-menu-64.png shinythings-webmirror-menu +xdg-icon-resource install --size 64 ./wmicon-admin-64.png shinythings-webmirror-admin + +_MANUALPAGE +} + +usage() +{ +cat << _USAGE +xdg-desktop-menu - command line tool for (un)installing desktop menu items + +Synopsis + +xdg-desktop-menu install [--noupdate] [--novendor] [--mode mode] directory-file +(s) desktop-file(s) + +xdg-desktop-menu uninstall [--noupdate] [--mode mode] directory-file(s) +desktop-file(s) + +xdg-desktop-menu forceupdate [--mode mode] + +xdg-desktop-menu { --help | --manual | --version } + +_USAGE +} + +#@xdg-utils-common@ + +#---------------------------------------------------------------------------- +# Common utility functions included in all XDG wrapper scripts +#---------------------------------------------------------------------------- + +DEBUG() +{ + [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && return 0; + [ ${XDG_UTILS_DEBUG_LEVEL} -lt $1 ] && return 0; + shift + echo "$@" >&2 +} + +#------------------------------------------------------------- +# Exit script on successfully completing the desired operation + +exit_success() +{ + if [ $# -gt 0 ]; then + echo "$@" + echo + fi + + exit 0 +} + + +#----------------------------------------- +# Exit script on malformed arguments, not enough arguments +# or missing required option. +# prints usage information + +exit_failure_syntax() +{ + if [ $# -gt 0 ]; then + echo "xdg-desktop-menu: $@" >&2 + echo "Try 'xdg-desktop-menu --help' for more information." >&2 + else + usage + echo "Use 'man xdg-desktop-menu' or 'xdg-desktop-menu --manual' for additional info." + fi + + exit 1 +} + +#------------------------------------------------------------- +# Exit script on missing file specified on command line + +exit_failure_file_missing() +{ + if [ $# -gt 0 ]; then + echo "xdg-desktop-menu: $@" >&2 + fi + + exit 2 +} + +#------------------------------------------------------------- +# Exit script on failure to locate necessary tool applications + +exit_failure_operation_impossible() +{ + if [ $# -gt 0 ]; then + echo "xdg-desktop-menu: $@" >&2 + fi + + exit 3 +} + +#------------------------------------------------------------- +# Exit script on failure returned by a tool application + +exit_failure_operation_failed() +{ + if [ $# -gt 0 ]; then + echo "xdg-desktop-menu: $@" >&2 + fi + + exit 4 +} + +#------------------------------------------------------------ +# Exit script on insufficient permission to read a specified file + +exit_failure_file_permission_read() +{ + if [ $# -gt 0 ]; then + echo "xdg-desktop-menu: $@" >&2 + fi + + exit 5 +} + +#------------------------------------------------------------ +# Exit script on insufficient permission to read a specified file + +exit_failure_file_permission_write() +{ + if [ $# -gt 0 ]; then + echo "xdg-desktop-menu: $@" >&2 + fi + + exit 6 +} + +check_input_file() +{ + if [ ! -e "$1" ]; then + exit_failure_file_missing "file '$1' does not exist" + fi + if [ ! -r "$1" ]; then + exit_failure_file_permission_read "no permission to read file '$1'" + fi +} + +check_vendor_prefix() +{ + file_label="$2" + [ -n "$file_label" ] || file_label="filename" + file=`basename "$1"` + case "$file" in + [a-zA-Z]*-*) + return + ;; + esac + + echo "xdg-desktop-menu: $file_label '$file' does not have a proper vendor prefix" >&2 + echo 'A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated' >&2 + echo 'with a dash ("-"). An example '"$file_label"' is '"'example-$file'" >&2 + echo "Use --novendor to override or 'xdg-desktop-menu --manual' for additional info." >&2 + exit 1 +} + +check_output_file() +{ + # if the file exists, check if it is writeable + # if it does not exists, check if we are allowed to write on the directory + if [ -e "$1" ]; then + if [ ! -w "$1" ]; then + exit_failure_file_permission_write "no permission to write to file '$1'" + fi + else + DIR=`dirname "$1"` + if [ ! -w "$DIR" -o ! -x "$DIR" ]; then + exit_failure_file_permission_write "no permission to create file '$1'" + fi + fi +} + +#---------------------------------------- +# Checks for shared commands, e.g. --help + +check_common_commands() +{ + while [ $# -gt 0 ] ; do + parm="$1" + shift + + case "$parm" in + --help) + usage + echo "Use 'man xdg-desktop-menu' or 'xdg-desktop-menu --manual' for additional info." + exit_success + ;; + + --manual) + manualpage + exit_success + ;; + + --version) + echo "xdg-desktop-menu 1.0.1" + exit_success + ;; + esac + done +} + +check_common_commands "$@" + +[ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; +if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then + # Be silent + xdg_redirect_output=" > /dev/null 2> /dev/null" +else + # All output to stderr + xdg_redirect_output=" >&2" +fi + +#-------------------------------------- +# Checks for known desktop environments +# set variable DE to the desktop environments name, lowercase + +detectDE() +{ + if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; + elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; + fi +} + +#---------------------------------------------------------------------------- +# kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 +# It also always returns 1 in KDE 3.4 and earlier +# Simply return 0 in such case + +kfmclient_fix_exit_code() +{ + version=`kde-config --version 2>/dev/null | grep KDE` + major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'` + minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'` + release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` + test "$major" -gt 3 && return $1 + test "$minor" -gt 5 && return $1 + test "$release" -gt 4 && return $1 + return 0 +} + +update_desktop_database() +{ +# echo Update desktop database: $mode + if [ "$mode" = "system" ] ; then + for x in `echo $PATH | sed 's/:/ /g'` /opt/gnome/bin; do + if [ -x $x/update-desktop-database ] ; then + DEBUG 1 "Running $x/update-desktop-database" + eval '$x/update-desktop-database'$xdg_redirect_output + return + fi + done + fi +} + +fixup_mandriva_categories() +{ + DEBUG 1 "fixup_mandriva_categories $1" + awk ' +BEGIN { + xlat["AudioVideo"]="X-Mandrakelinux-Multimedia;X-MandrivaLinux-Multimedia" + xlat["Development"]="X-Mandrakelinux-MoreApplications-Development;X-MandrivaLinux-MoreApplications-Development" + xlat["Education"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplications-Education" + xlat["Game"]="X-Mandrakelinux-MoreApplications;X-MandrivaLinux-MoreApplications-Games" + xlat["Graphics"]="X-Mandrakelinux-Multimedia-Graphics" + xlat["Network"]="X-Mandrakelinux-Internet;X-MandrivaLinux-Internet" + xlat["Office"]="X-Mandrakelinux-Office;X-MandrivaLinux-Office" + xlat["System"]="X-Mandrakelinux-System;X-MandrivaLinux-System" + xlat["Utility"]="X-Mandrakelinux-Office-Accessories;X-MandrivaLinux-Office-Accessories" +} +{ + if (match($0,/Categories=/)) { + split(substr($0,RSTART+11),categories,";") + result="" + for (n in categories) + { + if (categories[n] in xlat) + categories[n]=categories[n] ";" xlat[categories[n]] + if (categories[n]) + result=result categories[n] ";" + } + print "Categories=" result + } + else + { + print $0 + } +}' $1 > $1.new + mv $1.new $1 +} + +# Make application $1/$2 the default for all the mimetypes it support, +# iff such mimetype didn't had a default application already. +# $1 Install dir for desktop file +# $2 base name of desktop file +make_lazy_default() +{ + local mimetypes + local xdg_user_dir + local xdg_default_dirs + + DEBUG 1 "make_lazy_default $1/$2" + mimetypes=`awk ' +{ + if (match($0,/MimeType=/)) { + split(substr($0,RSTART+9),mimetypes,";") + for (n in mimetypes) + { + if (mimetypes[n]) + print mimetypes[n] + } + } +}' "$1/$2" 2> /dev/null` + + for MIME in $mimetypes ; do + xdg_default_dirs="$XDG_DATA_DIRS" + [ -n "$xdg_default_dirs" ] || xdg_default_dirs=/usr/local/share/:/usr/share/ + if [ x"$mode" = x"user" ] ; then + xdg_user_dir="$XDG_DATA_HOME" + [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" + xdg_default_dirs="$xdg_user_dir:$xdg_default_dirs" + fi + local default_app + for x in `echo "$xdg_default_dirs" | sed 's/:/ /g'`; do + DEBUG 2 "Checking $x/applications/defaults.list" + default_app=`grep "$MIME=" $x/applications/defaults.list 2> /dev/null | cut -d '=' -f 2` + if [ -n "$default_app" ] ; then + DEBUG 2 "Found default apps for $MIME: $default_app" + default_app="$default_app;" + break; + fi + done + DEBUG 2 "Current default apps for $MIME: $default_app" + if echo "$default_app" | grep "$2" > /dev/null 2> /dev/null; then + # App already listed as default + continue; + fi + default_file="$1/defaults.list" + DEBUG 1 "Updating $default_file" + grep -v "$MIME=" $default_file > ${default_file}.new 2> /dev/null + if ! grep "[Default Applications]" ${default_file}.new > /dev/null; then + echo "[Default Applications]" >> ${default_file}.new + fi + echo $MIME="$default_app$2" >> ${default_file}.new + mv ${default_file}.new $default_file + done +} + +update_submenu() +{ + DEBUG 1 "update_submenu $1" + menu_file="$1" + + xdg_dir_name=menus + xdg_user_dir="$XDG_CONFIG_HOME" + [ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.config" + xdg_user_dir="$xdg_user_dir/$xdg_dir_name" + + xdg_system_dirs="$XDG_CONFIG_DIRS" + [ -n "$xdg_system_dirs" ] || xdg_system_dirs=/etc/xdg + xdg_global_dir= + for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do + if [ -w $x/$xdg_dir_name ] ; then + xdg_global_dir="$x/$xdg_dir_name" + break + fi + done + xdg_user_dir="$xdg_user_dir/applications-merged" + xdg_global_dir="$xdg_global_dir/applications-merged" + + DEBUG 3 "Install locations for *.menu file:" + DEBUG 3 "xdg_user_dir: $xdg_user_dir" + DEBUG 3 "xdg_global_dir: $xdg_global_dir" + DEBUG 3 "kde_user_dir: $kde_user_dir" + DEBUG 3 "kde_global_dir: $kde_global_dir" + DEBUG 3 "gnome_user_dir: $gnome_user_dir" + DEBUG 3 "gnome_global_dir: $gnome_global_dir" + + if [ x"$mode" = x"user" ] ; then + xdg_dir="$xdg_user_dir" + kde_dir="$kde_user_dir" + gnome_dir="$gnome_user_dir" + my_umask=077 + my_chmod=0600 + else + xdg_dir="$xdg_global_dir" + kde_dir="$kde_global_dir" + gnome_dir="$gnome_global_dir" + my_umask=022 + my_chmod=0644 + if [ -z "${xdg_dir}${kde_dir}${gnome_dir}" ] ; then + exit_failure_operation_impossible "No writable system menu directory found." + fi + fi + + if [ -z "$menu_file" ] ; then + # Work around for SUSE/gnome 2.12 to pick up new ~/.local/share/applications + save_umask=`umask` + umask $my_umask + + mkdir -p $xdg_dir + touch $xdg_dir/xdg-desktop-menu-dummy.menu + + umask $save_umask + return + fi + + if [ $action = "install" -a -f "/etc/xdg/menus/gnome-applications.menu" ] ; then + # Work around for Debian Gnome + gnome_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/gnome-applications-merged^'` + if [ ! -e "$gnome_xdg_dir" ] ; then + DEBUG 1 "Debian Workaround: Link '$xdg_dir' to '$gnome_xdg_dir'" + mkdir -p `dirname "$gnome_xdg_dir"` + eval 'ln -s "applications-merged" "$gnome_xdg_dir"'$xdg_redirect_output + fi + fi + if [ $action = "install" -a -f "/etc/mandrake-release" ] ; then + # Work around for Mandriva 2006 + mandrake_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/applications-mdk-merged^'` + if [ ! -e "$mandrake_xdg_dir" ] ; then + DEBUG 1 "Mandriva Workaround: Link '$xdg_dir' to '$mandrake_xdg_dir'" + mkdir -p `dirname "$mandrake_xdg_dir"` + eval 'ln -s "applications-merged" "$mandrake_xdg_dir"'$xdg_redirect_output + fi + fi + if [ $action = "install" -a x"$mode" = x"user" -a -d "/etc/xdg/menus/kde-applications-merged" ] ; then + # Work around for Fedora Core 5 + patched KDE + kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-applications-merged^'` + if [ ! -e "$kde_xdg_dir" ] ; then + DEBUG 1 "Fedora Workaround: Link '$xdg_dir' to '$kde_xdg_dir'" + mkdir -p `dirname "$kde_xdg_dir"` + eval 'ln -s "applications-merged" "$kde_xdg_dir"'$xdg_redirect_output + fi + fi + if [ $action = "install" -a x"$mode" = x"system" -a -d "/etc/xdg/menus/kde-applications-merged" -a ! -d "/etc/xdg/menus/applications-merged" ] ; then + # Work around for Kubuntu 6.06 + kde_xdg_dir=`echo "$xdg_dir" | sed -e 's^/applications-merged^/kde-applications-merged^'` + DEBUG 1 "Kubuntu Workaround: Link '$xdg_dir' to 'kde-applications-merged'" + eval 'ln -s "kde-applications-merged" "$xdg_dir"'$xdg_redirect_output + fi + + orig_menu_file=$xdg_dir/$menu_file + + DEBUG 1 "Updating $orig_menu_file ($action)" + + tmpfile=`mktemp` + orig_desktop_files= + if [ -r "$orig_menu_file" ] ; then + awk ' +# List all files within tags +BEGIN { + RS="<" +} +/^Filename/ { + if (match($0,/>/)) { + print substr($0,RSTART+1) + } +}' $orig_menu_file > $tmpfile + fi + + orig_desktop_files=`cat $tmpfile` + new_desktop_files= + if [ $action = "install" ] ; then + for desktop_file in $desktop_files; do + basefile=`basename $desktop_file` + if ! grep '^'$basefile'$' $tmpfile > /dev/null 2> /dev/null ; then + # Append + echo "$basefile" >> $tmpfile + fi + done + new_desktop_files=`cat $tmpfile` + fi + if [ $action = "uninstall" ] ; then + echo > $tmpfile + for desktop_file in $desktop_files; do + echo "$desktop_file" >> $tmpfile + done + # Files to uninstall are listed in $tmpfile + # Existing files are in $orig_desktop_files + for desktop_file in $orig_desktop_files; do + if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; then + # Keep this file, it's not in the uninstall list + new_desktop_files="$new_desktop_files $desktop_file" + fi + done + fi + rm -f "$tmpfile" + + DEBUG 3 "Files to list in $menu_file: $new_desktop_files" + + if [ -n "$new_desktop_files" ] ; then + # Install/update + tmpfile=`mktemp` + ( + echo '' + echo '' + echo '' + echo ' Applications' + + for desktop_file in $directory_files; do + basefile=`basename $desktop_file` + basefilename=`echo "$basefile"|cut -d '.' -f 1` + echo "" + echo " $basefilename" + echo " $basefile" + done + + echo " " + for desktop_file in $new_desktop_files; do + echo " $desktop_file" + done + echo " " + + for desktop_file in $directory_files; do + echo "" + done + + echo '' + ) > $tmpfile + chmod $my_chmod $tmpfile + + save_umask=`umask` + umask $my_umask + + mkdir -p $xdg_dir + eval 'cp $tmpfile $xdg_dir/$menu_file'$xdg_redirect_output + + umask $save_umask + rm -f "$tmpfile" + else + # Uninstall + rm -f $xdg_dir/$menu_file + fi + + # Uninstall .directory files only if no longer referenced + if [ $action = "uninstall" ] ; then + tmpfile=`mktemp` + for menu_file in $xdg_dir/*; do + if grep 'generated and managed by xdg-desktop-menu' $menu_file > /dev/null 2> /dev/null; then + awk ' +# List all files within tags +BEGIN { + RS="<" +} +/^Directory/ { + if (match($0,/>/)) { + print substr($0,RSTART+1) + } +}' $menu_file >> $tmpfile + fi + done + orig_directory_files="$directory_files" + directory_files= + for desktop_file in $orig_directory_files; do + if ! grep '^'$desktop_file'$' $tmpfile > /dev/null 2> /dev/null; then + # No longer in use, safe to delete + directory_files="$directory_files $desktop_file" + fi + done + rm -f "$tmpfile" + fi +} + + +[ x"$1" != x"" ] || exit_failure_syntax + +mode= +action= +update=yes +desktop_files= +directory_files= + +case $1 in + install) + action=install + ;; + + uninstall) + action=uninstall + ;; + + forceupdate) + action=forceupdate + ;; + + *) + exit_failure_syntax "unknown command '$1'" + ;; +esac + +shift + +vendor=true +while [ $# -gt 0 ] ; do + parm="$1" + shift + + case "$parm" in + --noupdate) + update=no + ;; + + --mode) + if [ -z "$1" ] ; then + exit_failure_syntax "mode argument missing for --mode" + fi + case "$1" in + user) + mode="user" + ;; + + system) + mode="system" + ;; + + *) + exit_failure_syntax "unknown mode '$1'" + ;; + esac + shift + ;; + + --novendor) + vendor=false + ;; + + -*) + exit_failure_syntax "unexpected option '$parm'" + ;; + + *) + if [ "$action" = "install" ] ; then + check_input_file "$parm" + fi + case "$parm" in + *.directory) + if [ -n "$desktop_files" ] ; then + exit_failure_syntax "'$parm' must preceed any *.desktop file" + fi + directory_files="$directory_files $parm" + ;; + *.desktop) + desktop_files="$desktop_files $parm" + ;; + *) + exit_failure_syntax "file to $action must be a *.directory or *.desktop file" + ;; + esac + ;; + esac +done + +# Shouldn't happen +if [ -z "$action" ] ; then + exit_failure_syntax "command argument missing" +fi + +if [ -n "$XDG_UTILS_INSTALL_MODE" ] ; then + if [ "$XDG_UTILS_INSTALL_MODE" = "system" ] ; then + mode="system" + elif [ "$XDG_UTILS_INSTALL_MODE" = "user" ] ; then + mode="user" + fi +fi + +if [ -z "$mode" ] ; then + if [ `whoami` = "root" ] ; then + mode="system" + else + mode="user" + fi +fi + +if [ x"$action" = x"forceupdate" ] ; then + update_desktop_database + exit_success +fi + +if [ -z "$desktop_files" ] ; then + exit_failure_syntax "desktop-file argument missing" +fi + +menu_name= +for desktop_file in $directory_files; do + if [ "$vendor" = "true" -a "$action" = "install" ] ; then + check_vendor_prefix "$desktop_file" + fi + + basefilename=`basename "$desktop_file"|cut -d '.' -f 1` + if [ -z "$menu_name" ] ; then + menu_name="$basefilename" + else + menu_name="$menu_name-$basefilename" + fi +done + +if [ -n "$menu_name" ] ; then + if [ x"$mode" = x"user" ] ; then + update_submenu "user-$menu_name.menu" + else + update_submenu "$menu_name.menu" + fi +else + # Work around for SUSE/gnome 2.12 to pick up new ~/.local/share/applications + if [ x"$mode" = x"user" ] ; then + update_submenu + fi +fi + +# Install *.directory files + +xdg_dir_name=desktop-directories + +xdg_user_dir="$XDG_DATA_HOME" +[ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" +xdg_user_dir="$xdg_user_dir/$xdg_dir_name" + +xdg_system_dirs="$XDG_DATA_DIRS" +[ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ +xdg_global_dir= +for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do + if [ -w $x/$xdg_dir_name ] ; then + xdg_global_dir="$x/$xdg_dir_name" + break + fi +done + +DEBUG 3 "Install locations for *.directory files:" +DEBUG 3 "xdg_user_dir: $xdg_user_dir" +DEBUG 3 "xdg_global_dir: $xdg_global_dir" +DEBUG 3 "kde_user_dir: $kde_user_dir" +DEBUG 3 "kde_global_dir: $kde_global_dir" +DEBUG 3 "gnome_user_dir: $gnome_user_dir" +DEBUG 3 "gnome_global_dir: $gnome_global_dir" + +if [ x"$mode" = x"user" ] ; then + xdg_dir="$xdg_user_dir" + kde_dir="$kde_user_dir" + gnome_dir="$gnome_user_dir" + my_umask=077 +else + xdg_dir="$xdg_global_dir" + kde_dir="$kde_global_dir" + gnome_dir="$gnome_global_dir" + my_umask=022 + if [ -z "${xdg_dir}${kde_dir}${gnome_dir}" ] ; then + exit_failure_operation_impossible "No writable system menu directory found." + fi +fi + +for desktop_file in $directory_files; do + basefile=`basename $desktop_file` + + DEBUG 1 "$action $desktop_file in $xdg_dir $kde_dir $gnome_dir" + + case $action in + install) + save_umask=`umask` + umask $my_umask + + for x in $xdg_dir $kde_dir $gnome_dir ; do + mkdir -p $x + eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output + done + + umask $save_umask + ;; + + uninstall) + for x in $xdg_dir $kde_dir $gnome_dir ; do + rm -f $x/$basefile + done + + ;; + esac +done + +# Install *.desktop files +xdg_dir_name=applications + +xdg_user_dir="$XDG_DATA_HOME" +[ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" +xdg_user_dir="$xdg_user_dir/$xdg_dir_name" + +xdg_system_dirs="$XDG_DATA_DIRS" +[ -n "$xdg_system_dirs" ] || xdg_system_dirs=/usr/local/share/:/usr/share/ +xdg_global_dir= +for x in `echo $xdg_system_dirs | sed 's/:/ /g'` ; do + if [ -w $x/$xdg_dir_name ] ; then + xdg_global_dir="$x/$xdg_dir_name" + break + fi +done + +kde_user_dir="$HOME/.kde/share/applnk" +kde_global_dir="/usr/share/applnk" +[ -w $kde_global_dir ] || kde_global_dir= + +gnome_user_dir="$HOME/.gnome/apps" +gnome_global_dir="/usr/share/gnome/apps" +[ -w $gnome_global_dir ] || gnome_global_dir= + +[ -f /etc/mandriva-release ] && need_mandriva_fix=true +[ -n "$need_mandriva_fix" ] && DEBUG 1 "Fixing up .desktop categories (Mandriva work around)" + +DEBUG 3 "Install locations for *.desktop files:" +DEBUG 3 "xdg_user_dir: $xdg_user_dir" +DEBUG 3 "xdg_global_dir: $xdg_global_dir" +DEBUG 3 "kde_user_dir: $kde_user_dir" +DEBUG 3 "kde_global_dir: $kde_global_dir" +DEBUG 3 "gnome_user_dir: $gnome_user_dir" +DEBUG 3 "gnome_global_dir: $gnome_global_dir" + +if [ x"$mode" = x"user" ] ; then + xdg_dir="$xdg_user_dir" + kde_dir="$kde_user_dir" + gnome_dir="$gnome_user_dir" + my_umask=077 +else + xdg_dir="$xdg_global_dir" + kde_dir="$kde_global_dir" + gnome_dir="$gnome_global_dir" + my_umask=022 + if [ -z "${xdg_dir}${kde_dir}${gnome_dir}" ] ; then + exit_failure_operation_impossible "No writable system menu directory found." + fi +fi + +for desktop_file in $desktop_files; do + if [ "$vendor" = "true" -a "$action" = "install" ] ; then + check_vendor_prefix "$desktop_file" + fi + + basefile=`basename $desktop_file` + + DEBUG 1 "$action $desktop_file in $xdg_dir $kde_dir $gnome_dir" + + case $action in + install) + save_umask=`umask` + umask $my_umask + + for x in $xdg_dir $kde_dir $gnome_dir ; do + mkdir -p $x + eval 'cp $desktop_file $x/$basefile'$xdg_redirect_output + done + + if [ -n "$need_mandriva_fix" ] ; then + fixup_mandriva_categories $xdg_dir/$basefile + fi + + if [ -f $kde_dir/$basefile ] ; then + echo "OnlyShowIn=Old;" >> $kde_dir/$basefile + fi + + if [ -f $gnome_dir/$basefile ] ; then + echo "OnlyShowIn=Old;" >> $gnome_dir/$basefile + fi + + make_lazy_default "$xdg_dir" "$basefile" + + umask $save_umask + ;; + + uninstall) + for x in $xdg_dir $kde_dir $gnome_dir ; do + rm -f $x/$basefile + done + + ;; + esac +done + +if [ x"$update" = x"yes" ] ; then + update_desktop_database +fi + +exit_success diff --git a/src/desktop/xdg-utils-1.0.1/scripts/xdg-icon-resource b/src/desktop/xdg-utils-1.0.1/scripts/xdg-icon-resource new file mode 100755 index 00000000..df34ccaf --- /dev/null +++ b/src/desktop/xdg-utils-1.0.1/scripts/xdg-icon-resource @@ -0,0 +1,837 @@ +#!/bin/sh +#--------------------------------------------- +# xdg-icon-resource +# +# Utility script to install icons on a Linux desktop. +# +# Refer to the usage() function below for usage. +# +# Copyright 2006, Kevin Krammer +# Copyright 2006, Jeremy White +# +# LICENSE: +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +#--------------------------------------------- + +manualpage() +{ +cat << _MANUALPAGE +Name + +xdg-icon-resource - command line tool for (un)installing icon resources + +Synopsis + +xdg-icon-resource install [--noupdate] [--novendor] [--theme theme] [--context +context] [--mode mode] --size size icon-file [icon-name] + +xdg-icon-resource uninstall [--noupdate] [--theme theme] [--context context] +[--mode mode] --size size icon-name + +xdg-icon-resource forceupdate [--theme theme] [--mode mode] + +xdg-icon-resource { --help | --manual | --version } + +Description + +The xdg-icon-resource program can be used to install icon resources into the +desktop icon system in order to illustrate menu entries, to depict desktop +icons or to graphically represent file types. + +The desktop icon system identifies icons by name. Depending on the required +size, the choice of icon theme and the context in which the icon is used, the +desktop icon system locates an appropriate icon resource to depict an icon. +Icon resources can be XPM files, PNG files or SVG files. + +The desktop icon system works according to the XDG Icon Theme Specification at +http://www.freedesktop.org/Standards/icon-theme-spec + +Commands + +install + Installs the icon file indicated by icon-file to the desktop icon system + under the name icon-name. Icon names do not have an extension. If icon-name + is not provided the name is derived from icon-file. The icon file must have + .png or .xpm as extension. If a corresponding .icon file exists in the same + location as icon-file it will be installed as well. +uninstall + Removes the icon indicated by icon-name from the desktop icon system. Note + that icon names do not have an extension. +forceupdate + Force an update of the desktop icon system. This is only useful if the last + call to xdg-icon-resource included the --noupdate option. + +Options + +--noupdate + Postpone updating the desktop icon system. If multiple icons are added in + sequence this flag can be used to indicate that additional changes will + follow and that it is not necassery to update the desktop icon system right + away. +--novendor + + Normally, xdg-icon-resource checks to ensure that an icon file to be + installed in the apps context has a proper vendor prefix. This option can + be used to disable that check. + + A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated + with a dash ("-"). Companies and organizations are encouraged to use a word + or phrase, preferably the organizations name, for which they hold a + trademark as their vendor prefix. The purpose of the vendor prefix is to + prevent name conflicts. + +--theme theme + Installs or removes the icon file as part of theme. If no theme is + specified the icons will be installed as part of the default hicolor theme. + Applications may install icons under multiple themes but should at least + install icons for the default hicolor theme. +--context context + Specifies the context for the icon. Icons to be used in the application + menu and as desktop icon should use apps as context which is the default + context. Icons to be used as file icons should use mimetypes as context. + Other common contexts are actions, devices, emblems, filesystems and stock. +--size size + Specifies the size of the icon. All icons must be square. Common sizes for + icons in the apps context are: 16, 22, 32, 48, 64 and 128. Common sizes for + icons in the mimetypes context are: 16, 22, 32, 48, 64 and 128 +--mode mode + + mode can be user or system. In user mode the file is (un)installed for the + current user only. In system mode the file is (un)installed for all users + on the system. Usually only root is allowed to install in system mode. + + The default is to use system mode when called by root and to use user mode + when called by a non-root user. + +--help + Show command synopsis. +--manual + Show this manualpage. +--version + Show the xdg-utils version information. + +Environment Variables + +xdg-icon-resource honours the following environment variables: + +XDG_UTILS_DEBUG_LEVEL + Setting this environment variable to a non-zero numerical value makes + xdg-icon-resource do more verbose reporting on stderr. Setting a higher + value increases the verbosity. +XDG_UTILS_INSTALL_MODE + This environment variable can be used by the user or administrator to + override the installation mode. Valid values are user and system. + +Exit Codes + +An exit code of 0 indicates success while a non-zero exit code indicates +failure. The following failure codes can be returned: + +1 + Error in command line syntax. +2 + One of the files passed on the command line did not exist. +3 + A required tool could not be found. +4 + The action failed. +5 + No permission to read one of the files passed on the command line. + +See Also + +xdg-desktop-icon(1), xdg-desktop-menu(1), xdg-mime(1) + +Examples + +To install an icon resource to depict a launcher for the application myfoobar, +the company ShinyThings Inc. can use: + +xdg-icon-resource install --size 64 shinythings-myfoobar.png + +To install an icon for a new application/x-foobar file type one can use: + +xdg-icon-resource install --context mimetypes --size 48 ./mime-foobar-48.png application-x-foobar +xdg-icon-resource install --context mimetypes --size 64 ./mime-foobar-64.png application-x-foobar + +This will install two icons with the name application-x-foobar but with +different sizes. + +_MANUALPAGE +} + +usage() +{ +cat << _USAGE +xdg-icon-resource - command line tool for (un)installing icon resources + +Synopsis + +xdg-icon-resource install [--noupdate] [--novendor] [--theme theme] [--context +context] [--mode mode] --size size icon-file [icon-name] + +xdg-icon-resource uninstall [--noupdate] [--theme theme] [--context context] +[--mode mode] --size size icon-name + +xdg-icon-resource forceupdate [--theme theme] [--mode mode] + +xdg-icon-resource { --help | --manual | --version } + +_USAGE +} + +#@xdg-utils-common@ + +#---------------------------------------------------------------------------- +# Common utility functions included in all XDG wrapper scripts +#---------------------------------------------------------------------------- + +DEBUG() +{ + [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && return 0; + [ ${XDG_UTILS_DEBUG_LEVEL} -lt $1 ] && return 0; + shift + echo "$@" >&2 +} + +#------------------------------------------------------------- +# Exit script on successfully completing the desired operation + +exit_success() +{ + if [ $# -gt 0 ]; then + echo "$@" + echo + fi + + exit 0 +} + + +#----------------------------------------- +# Exit script on malformed arguments, not enough arguments +# or missing required option. +# prints usage information + +exit_failure_syntax() +{ + if [ $# -gt 0 ]; then + echo "xdg-icon-resource: $@" >&2 + echo "Try 'xdg-icon-resource --help' for more information." >&2 + else + usage + echo "Use 'man xdg-icon-resource' or 'xdg-icon-resource --manual' for additional info." + fi + + exit 1 +} + +#------------------------------------------------------------- +# Exit script on missing file specified on command line + +exit_failure_file_missing() +{ + if [ $# -gt 0 ]; then + echo "xdg-icon-resource: $@" >&2 + fi + + exit 2 +} + +#------------------------------------------------------------- +# Exit script on failure to locate necessary tool applications + +exit_failure_operation_impossible() +{ + if [ $# -gt 0 ]; then + echo "xdg-icon-resource: $@" >&2 + fi + + exit 3 +} + +#------------------------------------------------------------- +# Exit script on failure returned by a tool application + +exit_failure_operation_failed() +{ + if [ $# -gt 0 ]; then + echo "xdg-icon-resource: $@" >&2 + fi + + exit 4 +} + +#------------------------------------------------------------ +# Exit script on insufficient permission to read a specified file + +exit_failure_file_permission_read() +{ + if [ $# -gt 0 ]; then + echo "xdg-icon-resource: $@" >&2 + fi + + exit 5 +} + +#------------------------------------------------------------ +# Exit script on insufficient permission to read a specified file + +exit_failure_file_permission_write() +{ + if [ $# -gt 0 ]; then + echo "xdg-icon-resource: $@" >&2 + fi + + exit 6 +} + +check_input_file() +{ + if [ ! -e "$1" ]; then + exit_failure_file_missing "file '$1' does not exist" + fi + if [ ! -r "$1" ]; then + exit_failure_file_permission_read "no permission to read file '$1'" + fi +} + +check_vendor_prefix() +{ + file_label="$2" + [ -n "$file_label" ] || file_label="filename" + file=`basename "$1"` + case "$file" in + [a-zA-Z]*-*) + return + ;; + esac + + echo "xdg-icon-resource: $file_label '$file' does not have a proper vendor prefix" >&2 + echo 'A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated' >&2 + echo 'with a dash ("-"). An example '"$file_label"' is '"'example-$file'" >&2 + echo "Use --novendor to override or 'xdg-icon-resource --manual' for additional info." >&2 + exit 1 +} + +check_output_file() +{ + # if the file exists, check if it is writeable + # if it does not exists, check if we are allowed to write on the directory + if [ -e "$1" ]; then + if [ ! -w "$1" ]; then + exit_failure_file_permission_write "no permission to write to file '$1'" + fi + else + DIR=`dirname "$1"` + if [ ! -w "$DIR" -o ! -x "$DIR" ]; then + exit_failure_file_permission_write "no permission to create file '$1'" + fi + fi +} + +#---------------------------------------- +# Checks for shared commands, e.g. --help + +check_common_commands() +{ + while [ $# -gt 0 ] ; do + parm="$1" + shift + + case "$parm" in + --help) + usage + echo "Use 'man xdg-icon-resource' or 'xdg-icon-resource --manual' for additional info." + exit_success + ;; + + --manual) + manualpage + exit_success + ;; + + --version) + echo "xdg-icon-resource 1.0.1" + exit_success + ;; + esac + done +} + +check_common_commands "$@" + +[ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; +if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then + # Be silent + xdg_redirect_output=" > /dev/null 2> /dev/null" +else + # All output to stderr + xdg_redirect_output=" >&2" +fi + +#-------------------------------------- +# Checks for known desktop environments +# set variable DE to the desktop environments name, lowercase + +detectDE() +{ + if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; + elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; + fi +} + +#---------------------------------------------------------------------------- +# kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 +# It also always returns 1 in KDE 3.4 and earlier +# Simply return 0 in such case + +kfmclient_fix_exit_code() +{ + version=`kde-config --version 2>/dev/null | grep KDE` + major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'` + minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'` + release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` + test "$major" -gt 3 && return $1 + test "$minor" -gt 5 && return $1 + test "$release" -gt 4 && return $1 + return 0 +} + +# Set GTK_UPDATE_ICON_CACHE to gtk-update-icon-cache executable path or +# to "-" if not found. +GTK_UPDATE_ICON_CACHE= +find_gtk_update_icon_cache() +{ + [ -n "$GTK_UPDATE_ICON_CACHE" ] && return; + + GTK_UPDATE_ICON_CACHE="-" + for x in `echo "$PATH:/opt/gnome/bin" | sed 's/:/ /g'`; do + DEBUG 3 "Checking $x for gtk-update-icon-cache" + if [ -x "$x/gtk-update-icon-cache" ] ; then + DEBUG 1 "Found $x/gtk-update-icon-cache" + GTK_UPDATE_ICON_CACHE="$x/gtk-update-icon-cache" + return + fi + done +} + +# Start GNOME legacy workaround section +need_dot_icon_path() +{ + # GTK < 2.6 uses ~/.icons but not XDG_DATA_HOME/icons + # The availability of gtk-update-icon-cache is used as indication + # of whether the system is using GTK 2.6 or later + find_gtk_update_icon_cache + [ "$GTK_UPDATE_ICON_CACHE" != "-" ] && return 1; + return 0; +} + +update_icon_database() +{ + # Touch me, I'm dirty + touch "$1/.xdg-icon-resource-dummy" + rm -f "$1/.xdg-icon-resource-dummy" + + # Don't create a cache if there wan't one already + if [ -f "$1/icon-theme.cache" ] ; then + find_gtk_update_icon_cache + if [ "$GTK_UPDATE_ICON_CACHE" != "-" ] ; then + DEBUG 1 "Running $GTK_UPDATE_ICON_CACHE -f -t \"$1\"" + eval '$GTK_UPDATE_ICON_CACHE -f -t "$1"'$xdg_redirect_output + return + fi + fi +} + +[ x"$1" != x"" ] || exit_failure_syntax + +mode= +action= +update=yes +size= +theme=hicolor +context=apps +icon_file= +icon_name= + +case $1 in + install) + action=install + ;; + + uninstall) + action=uninstall + ;; + + forceupdate) + action=forceupdate + ;; + + *) + exit_failure_syntax "unknown command '$1'" + ;; +esac + +shift + +vendor=true +while [ $# -gt 0 ] ; do + parm="$1" + shift + + case $parm in + --noupdate) + update=no + ;; + + --mode) + if [ -z "$1" ] ; then + exit_failure_syntax "mode argument missing for --mode" + fi + case "$1" in + user) + mode="user" + ;; + + system) + mode="system" + ;; + + *) + exit_failure_syntax "unknown mode '$1'" + ;; + esac + shift + ;; + + --theme) + if [ -z "$1" ] ; then + exit_failure_syntax "theme argument missing for --theme" + fi + theme="$1" + shift + ;; + + --size) + if [ -z "$1" ] ; then + exit_failure_syntax "size argument missing for --size" + fi + if echo "$1" | grep '[^0-9]' > /dev/null 2> /dev/null; then + exit_failure_syntax "size argument must be numeric" + fi + size="$1" + shift + ;; + + --context) + if [ -z "$1" ] ; then + exit_failure_syntax "context argument missing for --context" + fi + context="$1" + shift + ;; + + --novendor) + vendor=false + ;; + + -*) + exit_failure_syntax "unexpected option '$parm'" + ;; + + *) + if [ -n "$icon_name" ] ; then + exit_failure_syntax "unexpected argument '$parm'" + elif [ -n "$icon_file" ] ; then + icon_name="$parm" + else + if [ "$action" = "install" ] ; then + check_input_file "$parm" + fi + icon_file="$parm" + fi + ;; + esac +done + +# Shouldn't happen +if [ -z "$action" ] ; then + exit_failure_syntax "command argument missing" +fi + +# Shouldn't happen +if [ -z "$context" ] ; then + exit_failure_syntax "context argument missing" +fi + +if [ -n "$XDG_UTILS_INSTALL_MODE" ] ; then + if [ "$XDG_UTILS_INSTALL_MODE" = "system" ] ; then + mode="system" + elif [ "$XDG_UTILS_INSTALL_MODE" = "user" ] ; then + mode="user" + fi +fi + +if [ -z "$mode" ] ; then + if [ `whoami` = "root" ] ; then + mode="system" + else + mode="user" + fi +fi + +xdg_dir_name="icons/$theme" + +xdg_user_dir="$XDG_DATA_HOME" +[ -n "$xdg_user_dir" ] || xdg_user_dir="$HOME/.local/share" +xdg_user_prefix="$xdg_user_dir/icons" +xdg_user_dir="$xdg_user_dir/$xdg_dir_name" + +xdg_global_dir= +xdg_global_prefix= +xdg_system_dirs="$XDG_DATA_DIRS" +[ -n "$xdg_system_dirs" ] || xdg_system_dirs="/usr/local/share/:/usr/share/" +for x in `echo "$xdg_system_dirs" | sed 's/:/ /g'`; do + if [ -w $x/$xdg_dir_name ] ; then + xdg_global_prefix="$x/icons" + xdg_global_dir="$x/$xdg_dir_name" + break + fi +done +[ -w $xdg_global_dir ] || xdg_global_dir= + +dot_icon_dir= +dot_base_dir= +if [ x"$mode" = x"user" ] ; then + xdg_base_dir="$xdg_user_dir" + #Gnome 2.8 supports ~/.icons but not XDG_DATA_HOME + if need_dot_icon_path ; then + dot_icon_dir="$HOME/.icons" + dot_base_dir="$dot_icon_dir/$theme" + fi +else + xdg_base_dir="$xdg_global_dir" + if [ -z "$xdg_base_dir" ] ; then + exit_failure_operation_impossible "No writable system icon directory found." + fi +fi + +if [ x"$action" = x"forceupdate" ] ; then + if [ -n "$icon_file" ] ; then + exit_failure_syntax "unexpected argument '$icon_file'" + fi + update_icon_database $xdg_base_dir + if [ -n "$dot_icon_dir" ] ; then + if [ -d "$dot_icon_dir/" -a ! -L "$dot_icon_dir" ] ; then + update_icon_database $dot_base_dir + fi + fi + exit_success +fi + +if [ -z "$icon_file" ] ; then + if [ x"$action" = x"install" ] ; then + exit_failure_syntax "icon-file argument missing" + else + exit_failure_syntax "icon-name argument missing" + fi +fi + +xdg_size_name= +extension= + +if [ -z "$size" ] ; then + exit_failure_syntax "the icon size must be specified with --size" +fi +xdg_size_name="${size}x${size}" + +if [ x"$action" = x"install" ] ; then + case $icon_file in + *.xpm) + extension="xpm" + ;; + *.png) + extension="png" + ;; + *) + exit_failure_syntax "icon file to install must be a *.png or *.xpm file" + ;; + esac +fi + +if [ -n "$icon_name" ] ; then + case $icon_name in + *.png) + exit_failure_syntax "icon name should not include an extension" + ;; + *.xpm) + exit_failure_syntax "icon name should not include an extension" + ;; + esac +fi + +# Start KDE legacy workaround section +need_kde_icon_path() +{ + local path + path=`readlink -f "$1" 2> /dev/null` # Normalize path + DEBUG 2 "need_kde_icon_path $path" + if [ -z "$path" ] ; then + DEBUG 2 "need_kde_icon_path RETURN 1 (not needed, no xdg icon dir)" + return 1; # Not needed + fi + + # if kde-config not found... return 0 + kde_icon_dirs=`kde-config --path icon 2> /dev/null |sed 's/:/ /g'` + DEBUG 3 "kde_icon_dirs: $kde_icon_dirs" + if [ -z "$kde_icon_dirs" ] ; then + DEBUG 3 "no result from kde-config --path icon" + DEBUG 2 "need_kde_icon_path RETURN 1 (not needed, no kde icon path)" + return 1; # Not needed + fi + needed=0 # Needed + for y in $kde_icon_dirs ; do + x=`readlink -f "$y"` # Normalize path + DEBUG 3 "Normalize $y --> $x" + if [ -n "$x" ] ; then + if [ "$x" = "$path" ] ; then + needed=1 # Not needed + fi + if [ -w "$x" ] ; then + kde_global_prefix="$x" + # Take last writable dir + fi + fi + done + DEBUG 2 "kde_global_prefix: $kde_global_prefix" + [ $needed -eq "1" ] && DEBUG 2 "need_kde_icon_path RETURN $needed (not needed)" + [ $needed -eq "0" ] && DEBUG 2 "need_kde_icon_path RETURN $needed (needed)" + return $needed +} + +kde_dir= +if [ x"$mode" = x"user" ] ; then + xdg_dir="$xdg_base_dir/$xdg_size_name/$context" + #KDE 3.x doesn't support XDG_DATA_HOME for icons + #Check if xdg_dir prefix is listed by kde-config --path icon + #If not, install additional symlink to kdedir + if need_kde_icon_path "$xdg_user_prefix" ; then + kde_user_dir="$HOME/.kde/share/icons/$theme" + kde_dir="$kde_user_dir/$xdg_size_name/$context" + fi + #Gnome 2.8 supports ~/.icons but not XDG_DATA_HOME + if [ -n "$dot_icon_dir" ] ; then + if [ -L "$dot_icon_dir" ] ; then + # Don't do anything + dot_icon_dir= + elif [ ! -d "$dot_icon_dir/" ] ; then + # Symlink if it doesn't exist + eval 'ln -s ".local/share/icons" "$dot_icon_dir"'$xdg_redirect_output + dot_icon_dir= + else + dot_icon_dir="$dot_icon_dir/$theme/$xdg_size_name/$context" + fi + fi + my_umask=077 +else + xdg_dir="$xdg_base_dir/$xdg_size_name/$context" + #KDE 3.x doesn't support XDG_DATA_DIRS for icons + #Check if xdg_dir prefix is listed by kde-config --path icon + #If not, install additional symlink to kdedir + if need_kde_icon_path "$xdg_global_prefix" ; then + kde_global_dir="$kde_global_prefix/$theme" + kde_dir="$kde_global_dir/$xdg_size_name/$context" + fi + my_umask=022 +fi +# End KDE legacy workaround section + +# Start GNOME legacy workaround section +need_gnome_mime= +[ $context = "mimetypes" ] && need_gnome_mime=true +# End GNOME legacy workaround section + +[ -n "$icon_name" ] || icon_name=`basename $icon_file | sed 's/\.[a-z][a-z][a-z]$//'` + +if [ "$vendor" = "true" -a "$action" = "install" -a "$context" = "apps" ] ; then + check_vendor_prefix "$icon_name" "icon name" +fi + +icon_icon_file=`echo "$icon_file" | sed 's/\.[a-z][a-z][a-z]$/.icon/'` +icon_icon_name="$icon_name.icon" + +DEBUG 1 "$action icon in $xdg_dir" +[ $action = "install" -a -f $icon_icon_file ] && DEBUG 1 "install $icon_icon_name meta file in $xdg_dir" +[ -n "$kde_dir" ] && DEBUG 1 "$action symlink in $kde_dir (KDE 3.x support)" +[ -n "$need_gnome_mime" ] && DEBUG 1 "$action gnome-mime-$icon_name symlink (GNOME 2.x support)" +[ $action = "install" -a -n "$dot_icon_dir" ] && DEBUG 1 "$action ~/.icons symlink (GNOME 2.8 support)" + +case $action in + install) + save_umask=`umask` + umask $my_umask + + for icon_dir in $xdg_dir $dot_icon_dir; do + mkdir -p $icon_dir + eval 'cp "$icon_file" "$icon_dir/$icon_name.$extension"'$xdg_redirect_output + if [ -f "$icon_icon_file" ] ; then + eval 'cp "$icon_icon_file" "$icon_dir/$icon_icon_name"'$xdg_redirect_output + fi + if [ -n "$need_gnome_mime" ] ; then + eval 'ln -s "$icon_name.$extension" "$icon_dir/gnome-mime-$icon_name.$extension"'$xdg_redirect_output + fi + done + if [ -n "$kde_dir" ] ; then + mkdir -p $kde_dir + eval 'ln -s "$xdg_dir/$icon_name.$extension" "$kde_dir/$icon_name.$extension"'$xdg_redirect_output + fi + + umask $save_umask + ;; + + uninstall) + for icon_dir in $xdg_dir $dot_icon_dir; do + rm -f "$icon_dir/$icon_name.xpm" "$icon_dir/$icon_name.png" + rm -f "$icon_dir/$icon_icon_name" + if [ -n "$need_gnome_mime" ] ; then + rm -f "$icon_dir/gnome-mime-$icon_name.xpm" + rm -f "$icon_dir/gnome-mime-$icon_name.png" + fi + done + if [ -n "$kde_dir" ] ; then + rm -f "$kde_dir/$icon_name.xpm" "$kde_dir/$icon_name.png" + fi + + ;; +esac + +if [ x"$update" = x"yes" ] ; then + update_icon_database "$xdg_base_dir" + if [ -n "$dot_icon_dir" ] ; then + if [ -d "$dot_icon_dir/" -a ! -L "$dot_icon_dir" ] ; then + update_icon_database $dot_base_dir + fi + fi +fi + +exit_success diff --git a/src/desktop/xdg-utils-1.0.1/scripts/xdg-open b/src/desktop/xdg-utils-1.0.1/scripts/xdg-open new file mode 100755 index 00000000..4cc18a84 --- /dev/null +++ b/src/desktop/xdg-utils-1.0.1/scripts/xdg-open @@ -0,0 +1,436 @@ +#!/bin/sh +#--------------------------------------------- +# xdg-open +# +# Utility script to open a URL in the registered default application. +# +# Refer to the usage() function below for usage. +# +# Copyright 2006, Kevin Krammer +# Copyright 2006, Jeremy White +# +# LICENSE: +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +#--------------------------------------------- + +manualpage() +{ +cat << _MANUALPAGE +Name + +xdg-open - opens a file or URL in the user's preferred application + +Synopsis + +xdg-open { file | URL } + +xdg-open { --help | --manual | --version } + +Description + +xdg-open opens a file or URL in the user's preferred application. If a URL is +provided the URL will be opened in the user's preferred web browser. If a file +is provided the file will be opened in the preferred application for files of +that type. xdg-open supports file, ftp, http and https URLs. + +xdg-open is for use inside a desktop session only. It is not recommended to use +xdg-open as root. + +Options + +--help + Show command synopsis. +--manual + Show this manualpage. +--version + Show the xdg-utils version information. + +Exit Codes + +An exit code of 0 indicates success while a non-zero exit code indicates +failure. The following failure codes can be returned: + +1 + Error in command line syntax. +2 + One of the files passed on the command line did not exist. +3 + A required tool could not be found. +4 + The action failed. + +Examples + +xdg-open 'http://www.freedesktop.org/' + +Opens the Freedesktop.org website in the user's default browser + +xdg-open /tmp/foobar.png + +Opens the PNG image file /tmp/foobar.png in the user's default image viewing +application. + +_MANUALPAGE +} + +usage() +{ +cat << _USAGE +xdg-open - opens a file or URL in the user's preferred application + +Synopsis + +xdg-open { file | URL } + +xdg-open { --help | --manual | --version } + +_USAGE +} + +#@xdg-utils-common@ + +#---------------------------------------------------------------------------- +# Common utility functions included in all XDG wrapper scripts +#---------------------------------------------------------------------------- + +DEBUG() +{ + [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && return 0; + [ ${XDG_UTILS_DEBUG_LEVEL} -lt $1 ] && return 0; + shift + echo "$@" >&2 +} + +#------------------------------------------------------------- +# Exit script on successfully completing the desired operation + +exit_success() +{ + if [ $# -gt 0 ]; then + echo "$@" + echo + fi + + exit 0 +} + + +#----------------------------------------- +# Exit script on malformed arguments, not enough arguments +# or missing required option. +# prints usage information + +exit_failure_syntax() +{ + if [ $# -gt 0 ]; then + echo "xdg-open: $@" >&2 + echo "Try 'xdg-open --help' for more information." >&2 + else + usage + echo "Use 'man xdg-open' or 'xdg-open --manual' for additional info." + fi + + exit 1 +} + +#------------------------------------------------------------- +# Exit script on missing file specified on command line + +exit_failure_file_missing() +{ + if [ $# -gt 0 ]; then + echo "xdg-open: $@" >&2 + fi + + exit 2 +} + +#------------------------------------------------------------- +# Exit script on failure to locate necessary tool applications + +exit_failure_operation_impossible() +{ + if [ $# -gt 0 ]; then + echo "xdg-open: $@" >&2 + fi + + exit 3 +} + +#------------------------------------------------------------- +# Exit script on failure returned by a tool application + +exit_failure_operation_failed() +{ + if [ $# -gt 0 ]; then + echo "xdg-open: $@" >&2 + fi + + exit 4 +} + +#------------------------------------------------------------ +# Exit script on insufficient permission to read a specified file + +exit_failure_file_permission_read() +{ + if [ $# -gt 0 ]; then + echo "xdg-open: $@" >&2 + fi + + exit 5 +} + +#------------------------------------------------------------ +# Exit script on insufficient permission to read a specified file + +exit_failure_file_permission_write() +{ + if [ $# -gt 0 ]; then + echo "xdg-open: $@" >&2 + fi + + exit 6 +} + +check_input_file() +{ + if [ ! -e "$1" ]; then + exit_failure_file_missing "file '$1' does not exist" + fi + if [ ! -r "$1" ]; then + exit_failure_file_permission_read "no permission to read file '$1'" + fi +} + +check_vendor_prefix() +{ + file_label="$2" + [ -n "$file_label" ] || file_label="filename" + file=`basename "$1"` + case "$file" in + [a-zA-Z]*-*) + return + ;; + esac + + echo "xdg-open: $file_label '$file' does not have a proper vendor prefix" >&2 + echo 'A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated' >&2 + echo 'with a dash ("-"). An example '"$file_label"' is '"'example-$file'" >&2 + echo "Use --novendor to override or 'xdg-open --manual' for additional info." >&2 + exit 1 +} + +check_output_file() +{ + # if the file exists, check if it is writeable + # if it does not exists, check if we are allowed to write on the directory + if [ -e "$1" ]; then + if [ ! -w "$1" ]; then + exit_failure_file_permission_write "no permission to write to file '$1'" + fi + else + DIR=`dirname "$1"` + if [ ! -w "$DIR" -o ! -x "$DIR" ]; then + exit_failure_file_permission_write "no permission to create file '$1'" + fi + fi +} + +#---------------------------------------- +# Checks for shared commands, e.g. --help + +check_common_commands() +{ + while [ $# -gt 0 ] ; do + parm="$1" + shift + + case "$parm" in + --help) + usage + echo "Use 'man xdg-open' or 'xdg-open --manual' for additional info." + exit_success + ;; + + --manual) + manualpage + exit_success + ;; + + --version) + echo "xdg-open 1.0.1" + exit_success + ;; + esac + done +} + +check_common_commands "$@" + +[ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; +if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then + # Be silent + xdg_redirect_output=" > /dev/null 2> /dev/null" +else + # All output to stderr + xdg_redirect_output=" >&2" +fi + +#-------------------------------------- +# Checks for known desktop environments +# set variable DE to the desktop environments name, lowercase + +detectDE() +{ + if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; + elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; + elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; + fi +} + +#---------------------------------------------------------------------------- +# kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 +# It also always returns 1 in KDE 3.4 and earlier +# Simply return 0 in such case + +kfmclient_fix_exit_code() +{ + version=`kde-config --version 2>/dev/null | grep KDE` + major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'` + minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'` + release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` + test "$major" -gt 3 && return $1 + test "$minor" -gt 5 && return $1 + test "$release" -gt 4 && return $1 + return 0 +} + +open_kde() +{ + kfmclient exec "$1" + kfmclient_fix_exit_code $? + + if [ $? -eq 0 ]; then + exit_success + else + exit_failure_operation_failed + fi +} + +open_gnome() +{ + gnome-open "$1" + + if [ $? -eq 0 ]; then + exit_success + else + exit_failure_operation_failed + fi +} + +open_xfce() +{ + exo-open "$1" + + if [ $? -eq 0 ]; then + exit_success + else + exit_failure_operation_failed + fi +} + +open_generic() +{ + IFS=":" + for browser in $BROWSER; do + if [ x"$browser" != x"" ]; then + + browser_with_arg=`echo "$browser" | sed s#%s#"$1"#` + + if [ x"$browser_with_arg" = x"$browser" ]; then "$browser" "$1"; + else $browser_with_arg; + fi + + if [ $? -eq 0 ]; then exit_success; + fi + fi + done + + exit_failure_operation_impossible "no method available for opening '$1'" +} + +[ x"$1" != x"" ] || exit_failure_syntax + +url= +while [ $# -gt 0 ] ; do + parm="$1" + shift + + case "$parm" in + -*) + exit_failure_syntax "unexpected option '$parm'" + ;; + + *) + if [ -n "$url" ] ; then + exit_failure_syntax "unexpected argument '$parm'" + fi + url="$parm" + ;; + esac +done + +if [ -z "${url}" ] ; then + exit_failure_syntax "file or URL argument missing" +fi + +detectDE + +if [ x"$DE" = x"" ]; then + # if BROWSER variable is not set, check some well known browsers instead + if [ x"$BROWSER" = x"" ]; then + BROWSER=firefox:mozilla:netscape + fi + DE=generic +fi + +case "$DE" in + kde) + open_kde "$url" + ;; + + gnome) + open_gnome "$url" + ;; + + xfce) + open_xfce "$url" + ;; + + generic) + open_generic "$url" + ;; + + *) + exit_failure_operation_impossible "no method available for opening '$url'" + ;; +esac diff --git a/src/doc/man/recoll.1 b/src/doc/man/recoll.1 new file mode 100644 index 00000000..36174625 --- /dev/null +++ b/src/doc/man/recoll.1 @@ -0,0 +1,99 @@ +.\" $Id: recoll.1,v 1.3 2007-11-13 18:42:18 dockes Exp $ (C) 2005 J.F.Dockes\$ +.TH RECOLL 1 "8 January 2006" +.SH NAME +recoll \- user interface for the Recoll full text search system +.SH SYNOPSIS +.B recoll +[ +.B \-c + +] +[ +.B \-o +| +.B \-l +| +.B \-f +| +.B \-a +] +[ +.B \-t +] +[ +.B \-q + +] + +.B recoll +[ +.B \-c + +] + +.SH DESCRIPTION +In the first form, the +.B recoll +command will start the graphical user interface for querying the +.B Recoll +database. +.PP +On the first run, +.B recoll +will create the user configuration which can be customized +before starting the first indexation. +.PP +The +.B \-c +option specifies the configuration directory name, overriding the +default or $RECOLL_CONFDIR. +.PP +The +.B \-q +option can be used to specify an initial query on the command line. This +query will be interpreted by default as a query language string. +If +.B \-a +is specified, the query string will be interpreted as an +.I all words +simple search query. If +.B \-o +is specified, the query string will be interpreted as an +.I any word +simple search query. If +.B \-f +is specified, the query string will be interpreted as a +.I file name +simple search query. If +.B \-l +is specified, the query string will be interpreted as a +.I query language +simple search query. +.PP +If +.B \-t +is specified, the Graphical User Interface will not be started, and results +will be printed to the standard output. Additional options understood by +the +.B recollq +command may be specified in this case. These can control the output format +and the maximum number of results to be printed. +.PP +Please refer to online help for a full description. +.PP +In the second form, the +.B recoll +command can be used to start a native viewer for a document indexed by +Recoll. It will understand a final URL fragment (separated by a '#' +character) to indicate an +.I ipath +, the specifier for the part of the Recoll document access path which is is +internal to a container such as a mbox folder or a zip archive, and will, +if needed, create a temporary file to let a normal system utility display +the document. +.PP +The second form is mostly used for opening embedded documents from the +Ubuntu Unity Recoll lens. +.SH SEE ALSO +.PP +recollindex(1) recollq(1) recoll.conf(5) diff --git a/src/doc/man/recoll.conf.5 b/src/doc/man/recoll.conf.5 new file mode 100644 index 00000000..7cdc8216 --- /dev/null +++ b/src/doc/man/recoll.conf.5 @@ -0,0 +1,369 @@ +.TH RECOLL.CONF 5 "14 November 2012" +.SH NAME +recoll.conf \- main personal configuration file for Recoll +.SH DESCRIPTION +This file defines the index configuration for the Recoll full-text search +system. +.LP +The system-wide configuration file is normally located inside +/usr/[local]/share/recoll/examples. Any parameter set in the common file +may be overridden by setting it in the personal configuration file, by default: +.IR $HOME/.recoll/recoll.conf +.LP +Please note while we try to keep this manual page reasonably up to date, it +will frequently lag the current state of the software. The best source of +information about the configuration are the comments in the system-wide +configuration file. + +.LP +A short extract of the file might look as follows: +.IP +.nf + +# Space-separated list of directories to index. +topdirs = ~/docs /usr/share/doc + +[~/somedirectory-with-utf8-txt-files] +defaultcharset = utf-8 + +.fi +.LP +There are three kinds of lines: +.RS +.IP \(bu +Comment or empty +.IP \(bu +Parameter affectation +.IP \(bu +Section definition +.RE +.LP +Empty lines or lines beginning with # are ignored. +.LP +Affectation lines are in the form 'name = value'. +.LP +Section lines allow redefining a parameter for a directory subtree. Some of +the parameters used for indexing are looked up hierarchically from the +more to the less specific. Not all parameters can be meaningfully +redefined, this is specified for each in the next section. +.LP +The tilde character (~) is expanded in file names to the name of the user's +home directory. +.LP +Where values are lists, white space is used for separation, and elements with +embedded spaces can be quoted with double-quotes. +.SH OPTIONS +.TP +.BI "topdirs = " directories +Specifies the list of directories to index (recursively). +.TP +.BI "skippedNames = " patterns +A space-separated list of patterns for names of files or directories that +should be completely ignored. The list defined in the default file is: +.sp +.nf +*~ #* bin CVS Cache caughtspam tmp + +.fi +The list can be redefined for subdirectories, but is only actually changed +for the top level ones in +.I topdirs +.TP +.BI "skippedPaths = " patterns +A space-separated list of patterns for paths the indexer should not descend +into. Together with topdirs, this allows pruning the indexed tree to one's +content. +.B daemSkippedPaths +can be used to define a specific value for the real time indexing monitor. +.TP +.BI "skippedPathsFnmPathname = " 0/1 +The values in the *skippedPaths variables are matched by default with +fnmatch(3), with the FNM_PATHNAME and FNM_LEADING_DIR flags. This means +that '/' characters must be matched explicitly. You can set +skippedPathsFnmPathname to 0 to disable the use of FNM_PATHNAME (meaning +that /*/dir3 will match /dir1/dir2/dir3). +.TP +.BI "followLinks = " boolean +Specifies if the indexer should follow +symbolic links while walking the file tree. The default is +to ignore symbolic links to avoid multiple indexing of +linked files. No effort is made to avoid duplication when +this option is set to true. This option can be set +individually for each of the +.I topdirs +members by using sections. It can not be changed below the +.I topdirs +level. +.TP +.BI "indexedmimetypes = " list +Recoll normally indexes any file which it knows how to read. This list lets +you restrict the indexed mime types to what you specify. If the variable is +unspecified or the list empty (the default), all supported types are +processed. +.TP +.BI "compressedfilemaxkbs = " value +Size limit for compressed (.gz or .bz2) files. These need to be +decompressed in a temporary directory for identification, which can be very +wasteful if 'uninteresting' big compressed files are present. Negative +means no limit, 0 means no processing of any compressed file. Defaults +to \-1. +.TP +.BI "textfilemaxmbs = " value +Maximum size for text files. Very big text files are often uninteresting +logs. Set to \-1 to disable (default 20MB). +.TP +.BI "textfilepagekbs = " value +If this is set to other than \-1, text files will be indexed as multiple +documents of the given page size. This may be useful if you do want to +index very big text files as it will both reduce memory usage at index time +and help with loading data to the preview window. A size of a few megabytes +would seem reasonable (default: 1000 : 1MB). +.TP +.BI "membermaxkbs = " "value in kilobytes" +This defines the maximum size for an archive member (zip, tar or rar at +the moment). Bigger entries will be skipped. Current default: 50000 (50 MB). +.TP +.BI "indexallfilenames = " boolean +Recoll indexes file names into a special section of the database to allow +specific file names searches using wild cards. This parameter decides if +file name indexing is performed only for files with mime types that would +qualify them for full text indexing, or for all files inside +the selected subtrees, independent of mime type. +.TP +.BI "usesystemfilecommand = " boolean +Decide if we use the +.B "file \-i" +system command as a final step for determining the mime type for a file +(the main procedure uses suffix associations as defined in the +.B mimemap +file). This can be useful for files with suffixless names, but it will +also cause the indexing of many bogus "text" files. +.TP +.BI "processbeaglequeue = " 0/1 +If this is set, process the directory where Beagle Web browser plugins copy +visited pages for indexing. Of course, Beagle MUST NOT be running, else +things will behave strangely. +.TP +.BI "beaglequeuedir = " directory path +The path to the Beagle indexing queue. This is hard-coded in the Beagle +plugin as ~/.beagle/ToIndex so there should be no need to change it. +.TP +.BI "indexStripChars = " 0/1 +Decide if we strip characters of diacritics and convert them to lower-case +before terms are indexed. If we don't, searches sensitive to case and +diacritics can be performed, but the index will be bigger, and some +marginal weirdness may sometimes occur. The default is a stripped index +(indexStripChars = 1) for now. When using multiple indexes for a search, +this parameter must be defined identically for all. Changing the value +implies an index reset. +.TP +.BI "maxTermExpand = " value +Maximum expansion count for a single term (e.g.: when using wildcards). The +default of 10000 is reasonable and will avoid queries that appear frozen +while the engine is walking the term list. +.TP +.BI "maxXapianClauses = " value +Maximum number of elementary clauses we can add to a single Xapian +query. In some cases, the result of term expansion can be multiplicative, +and we want to avoid using excessive memory. The default of 100 000 should +be both high enough in most cases and compatible with current typical +hardware configurations. +.TP +.BI "nonumbers = " 0/1 +If this set to true, no terms will be generated for numbers. For example +"123", "1.5e6", 192.168.1.4, would not be indexed ("value123" would still +be). Numbers are often quite interesting to search for, and this should +probably not be set except for special situations, ie, scientific documents +with huge amounts of numbers in them. This can only be set for a whole +index, not for a subtree. +.TP +.BI "nocjk = " boolean +If this set to true, specific east asian (Chinese Korean Japanese) +characters/word splitting is turned off. This will save a small amount of +cpu if you have no CJK documents. If your document base does include such +text but you are not interested in searching it, setting +.I nocjk +may be a significant time and space saver. +.TP +.BI "cjkngramlen = " value +This lets you adjust the size of n-grams used for indexing CJK text. The +default value of 2 is probably appropriate in most cases. A value of 3 +would allow more precision and efficiency on longer words, but the index +will be approximately twice as large. +.TP +.BI "indexstemminglanguages = " languages +A list of languages for which the stem expansion databases will be +built. See recollindex(1) for possible values. +.TP +.BI "defaultcharset = " charset +The name of the character set used for files that do not contain a +character set definition (ie: plain text files). This can be redefined for +any subdirectory. +.TP +.BI "unac_except_trans = " "list of utf-8 groups" +This is a list of characters, encoded in UTF-8, which should be handled +specially when converting text to unaccented lowercase. For example, in +Swedish, the letter "a with diaeresis" has full alphabet citizenship and +should not be turned into an a. +.br +Each element in the space-separated list has the special character as first +element and the translation following. The handling of both the lowercase +and upper-case versions of a character should be specified, as appartenance +to the list will turn-off both standard accent and case processing. +.br +Note that the translation is not limited to a single character. +.br +This parameter cannot be redefined for subdirectories, it is global, +because there is no way to do otherwise when querying. If you have document +sets which would need different values, you will have to index and query +them separately. +.TP +.BI "maildefcharset = " character set name +This can be used to define the default character set specifically for email +messages which don't specify it. This is mainly useful for readpst (libpst) +dumps, which are utf-8 but do not say so. +.TP +.BI "localfields = " "fieldname = value:..." +This allows setting fields for all documents under a given +directory. Typical usage would be to set an "rclaptg" field, to be used in +mimeview to select a specific viewer. If several fields are to be set, they +should be separated with a colon (':') character (which there is currently +no way to escape). Ie: localfields= rclaptg=gnus:other = val, then select +specifier viewer with mimetype|tag=... in mimeview. +.TP +.BI "dbdir = " directory +The name of the Xapian database directory. It will be created if needed +when the database is initialized. If this is not an absolute pathname, it +will be taken relative to the configuration directory. +.TP +.BI "idxstatusfile = " "file path" +The name of the scratch file where the indexer process updates its +status. Default: idxstatus.txt inside the configuration directory. +.TP +.BI "maxfsoccuppc = " percentnumber +Maximum file system occupation before we +stop indexing. The value is a percentage, corresponding to +what the "Capacity" df output column shows. The default +value is 0, meaning no checking. +.TP +.BI "mboxcachedir = " "directory path" +The directory where mbox message offsets cache files are held. This is +normally $RECOLL_CONFDIR/mboxcache, but it may be useful to share a +directory between different configurations. +.TP +.BI "mboxcacheminmbs = " "value in megabytes" +The minimum mbox file size over which we cache the offsets. There is really no sense in caching offsets for small files. The default is 5 MB. +.TP +.BI "webcachedir = " "directory path" +This is only used by the Beagle web browser plugin indexing code, and +defines where the cache for visited pages will live. Default: +$RECOLL_CONFDIR/webcache +.TP +.BI "webcachemaxmbs = " "value in megabytes" +This is only used by the Beagle web browser plugin indexing code, and +defines the maximum size for the web page cache. Default: 40 MB. +.TP +.BI "idxflushmb = " megabytes +Threshold (megabytes of new text data) +where we flush from memory to disk index. Setting this can +help control memory usage. A value of 0 means no explicit +flushing, letting Xapian use its own default, which is +flushing every 10000 documents (or XAPIAN_FLUSH_THRESHOLD), meaning that +memory usage depends on average document size. The default value is 10. +.TP +.BI "autodiacsens = " 0/1 +IF the index is not stripped, decide if we automatically trigger diacritics +sensitivity if the search term has accented characters (not in +unac_except_trans). Else you need to use the query language and the D +modifier to specify diacritics sensitivity. Default is no. +.TP +.BI "autocasesens = " 0/1 +IF the index is not stripped, decide if we automatically trigger character +case sensitivity if the search term has upper-case characters in any but +the first position. Else you need to use the query language and the C +modifier to specify character-case sensitivity. Default is yes. +.TP +.BI "loglevel = " value +Verbosity level for recoll and recollindex. A value of 4 lists quite a lot of +debug/information messages. 3 lists only errors. +.B daemloglevel +can be used to specify a different value for the real-time indexing daemon. +.TP +.BI "logfilename = " file +Where should the messages go. 'stderr' can be used as a special value. +.B daemlogfilename +can be used to specify a different value for the real-time indexing daemon. +.TP +.BI "mondelaypatterns = " "list of patterns" +This allows specify wildcard path patterns (processed with fnmatch(3) with +0 flag), to match files which change too often and for which a delay should +be observed before re-indexing. This is a space-separated list, each entry +being a pattern and a time in seconds, separated by a colon. You can use +double quotes if a path entry contains white space. Example: +.sp +mondelaypatterns = *.log:20 "this one has spaces*:10" +.TP +.BI "monixinterval = " "value in seconds +Minimum interval (seconds) for processing the indexing queue. The real time +monitor does not process each event when it comes in, but will wait this +time for the queue to accumulate to diminish overhead and in order to +aggregate multiple events to the same file. Default 30 S. +.TP +.BI "monauxinterval = " "value in seconds +Period (in seconds) at which the real time monitor will regenerate the +auxiliary databases (spelling, stemming) if needed. The default is one +hour. +.TP +.BI "monioniceclass, monioniceclassdata" +These allow defining the ionice class and data used by the indexer (default +class 3, no data). +.TP +.BI "filtermaxseconds = " "value in seconds" +Maximum filter execution time, after which it is aborted. Some postscript +programs just loop... +.TP +.BI "filtersdir = " directory +A directory to search for the external filter scripts used to index some +types of files. The value should not be changed, except if you want to +modify one of the default scripts. The value can be redefined for any +subdirectory. +.TP +.BI "iconsdir = " directory +The name of the directory where +.B recoll +result list icons are stored. You can change this if you want different +images. +.TP +.BI "idxabsmlen = " value +Recoll stores an abstract for each indexed file inside the database. The +text can come from an actual 'abstract' section in the document or will +just be the beginning of the document. It is stored in the index so that it +can be displayed inside the result lists without decoding the original +file. The +.I idxabsmlen +parameter defines the size of the stored abstract. The default value is 250 +bytes. The search interface gives you the choice to display this stored +text or a synthetic abstract built by extracting text around the search +terms. If you always prefer the synthetic abstract, you can reduce this +value and save a little space. +.TP +.BI "aspellLanguage = " lang +Language definitions to use when creating the aspell dictionary. The value +must match a set of aspell language definition files. You can type "aspell +config" to see where these are installed (look for data-dir). The default +if the variable is not set is to use your desktop national language +environment to guess the value. +.TP +.BI "noaspell = " boolean +If this is set, the aspell dictionary generation is turned off. Useful for +cases where you don't need the functionality or when it is unusable because +aspell crashes during dictionary generation. +.TP +.BI "mhmboxquirks = " flags +This allows definining location-related quirks for the mailbox +handler. Currently only the tbird flag is defined, and it should be set for +directories which hold Thunderbird data, as their folder format is weird. + +.SH SEE ALSO +.PP +recollindex(1) recoll(1) diff --git a/src/doc/man/recollindex.1 b/src/doc/man/recollindex.1 new file mode 100644 index 00000000..2340fd83 --- /dev/null +++ b/src/doc/man/recollindex.1 @@ -0,0 +1,317 @@ +.\" $Id: recollindex.1,v 1.7 2008-09-05 10:25:54 dockes Exp $ (C) 2005 J.F.Dockes\$ +.TH RECOLLINDEX 1 "8 January 2006" +.SH NAME +recollindex \- indexing command for the Recoll full text search system +.SH SYNOPSIS +.B recollindex \-h +.br +.B recollindex +[ +.B \-c + +] +[ +.B \-z|\-Z +] +[ +.B \-k +] +.br +.B recollindex +[ +.B \-c + +] +.B \-m +[ +.B \-w + +] +[ +.B \-D +] +[ +.B \-x +] +[ +.B \-C +] +[ +.B \-n|-k +] +.br +.B recollindex +[ +.B \-c + +] +.B \-i +[ +.B \-Z +] +[ +.B \-k +] +[ +.B \-f +] +[] +.br +.B recollindex +[ +.B \-c + +] +.B \-r +[ +.B \-Z +] +[ +.B \-K +] +[ +.B \-e +] +[ +.B \-f +] +[ +.B \-p +pattern +] + +.br +.B recollindex +[ +.B \-c + +] +.B \-e +[] +.br +.B recollindex +[ +.B \-c + +] +.B \-l +.br +.B recollindex +[ +.B \-c + +] +.B \-s + +.br +.B recollindex +[ +.B \-c + +] +.B \-S +.br +.B recollindex +[ +.B \-c + +] +.B \-E + +.SH DESCRIPTION +The +.B recollindex +utility allows you to perform indexing operations for the Recoll text +search system. +.PP +As indexing can sometimes take a long time, the command can be interrupted +by sending an interrupt (Ctrl-C, SIGINT) or terminate (SIGTERM) +signal. Some time may elapse before the process exits, because it needs to +properly flush and close the index. This can also be done from the recoll +GUI (menu entry: File/Stop_Indexing). After such an interruption, the index +will be somewhat inconsistent because some operations which are normally +performed at the end of the indexing pass will have been skipped (for +example, the stemming and spelling databases will be inexistant or out of +date). You just need to restart indexing at a later time to restore +consistency. The indexing will restart at the interruption point (the full +file tree will be traversed, but files that were indexed up to the +interruption and for which the index is still up to date will not need to +be reindexed). +.PP +The +.B \-c +option specifies the configuration directory name, overriding the +default or $RECOLL_CONFDIR. +.PP +There are several modes of operation. +.PP +The normal mode will index the set of files described in the configuration +file +.B recoll.conf. +This will incrementally update the database with files that changed since +the last run. If option +.B \-z +is given, the database will be erased before starting. If option +.B \-Z +is given, the database will not be reset, but all files will be considered +as needing reindexing (in place reset). +.PP +As of version 1.21, +.B recollindex +usually does not process again files which previously failed to index (for +example because of a missing helper program). If option +.B \-k +is given, +.B recollindex +will try again to process all failed files. Please note that +.B recollindex +may also decide to retry failed files if the auxiliary checking script +defined by the "checkneedretryindexscript" configuration variable indicates +that this should happen. +.PP +If option +.B +\-m +is given, recollindex is started for real time monitoring, using the +file system monitoring package it was configured for (either fam, gamin, or +inotify). This mode must have been explicitly configured when building the +package, it is not available by default. The program will normally detach +from the controlling terminal and become a daemon. If option +.B +\-D +is given, it will stay in the foreground. Option +.B +\-w + can be used to specify that the program should sleep for the +specified time before indexing begins. The default value is 60. The daemon +normally monitors the X11 session and exits when it is reset. +Option +.B +\-x +disables this X11 session monitoring (daemon will stay alive even if it +cannot connect to the X11 server). You need to use this too if you use the +daemon without an X11 context. You can use option +.B +\-n +to skip the initial incrementing pass which is normally performed before +monitoring starts. Once monitoring is started, the daemon normally monitors +the configuration and restarts from scratch if a change is made. You can +disable this with option +.B +\-C +.PP +.B recollindex \-i +will index individual files into the database. The stem expansion and +aspell databases will not be updated. The skippedPaths and skippedNames +configuration variables will be used, so that some files may be +skipped. You can tell recollindex to ignore skippedPaths and skippedNames +by setting the +.B +\-f +option. This allows fully custom file selection for a given subtree, +for which you would add the top directory to skippedPaths, and use any +custom tool to generate the file list (ie: a tool from a source code +control system). +.PP +.PP +.B recollindex \-e +will erase data for individual files from the database. The stem expansion +databases will not be updated. +.PP +Options +.B +\-i +and +.B +\-e +can be combined. This will first perform the purge, then the indexing. +.PP +With options +.B \-i +or +.B \-e +, if no file names are given on the command line, they +will be read from stdin, so that you could for example run: +.PP +find /path/to/dir \-print | recollindex \-e \-i +.PP +to force the reindexing of a directory tree (which has to exist inside the +file system area defined by +.I topdirs +in recoll.conf). You could mostly accomplish the same thing with +.PP +find /path/to/dir \-print | recollindex \-Z \-i +.PP +The latter will perform a less thorough job of purging stale sub-documents +though. +.PP +.B recollindex \-r +mostly works like +.B \-i +, but the parameter is a single directory, which will +be recursively updated. This mostly does nothing more than +.B find topdir | recollindex \-i +but it may be more convenient to use when started from another +program. This retries failed files by default, use option +.B \-K +to change. One or multiple +.B \-p +options can be used to set shell-type selection patterns (e.g.: *.pdf). +.PP +.B recollindex \-l +will list the names of available language stemmers. +.PP +.B recollindex \-s +will build the stem expansion database for a given language, which may or +may not be part of the list in the configuration file. If the language is +not part of the configuration, the stem expansion database will be deleted +at the end of the next normal indexing run. You can get the list of stemmer +names from the +.B recollindex \-l +command. Note that this is mostly for experimental use, the normal way to +add a stemming language is to set it in the configuration, either by +editing "recoll.conf" or by using the GUI indexing configuration dialog. +.br +At the time of this writing, the following languages +are recognized (out of Xapian's stem.h): +.IP \(bu +danish +.IP \(bu +dutch +.IP \(bu +english Martin Porter's 2002 revision of his stemmer +.IP \(bu +english_lovins Lovin's stemmer +.IP \(bu +english_porter Porter's stemmer as described in his 1980 paper +.IP \(bu +finnish +.IP \(bu +french +.IP \(bu +german +.IP \(bu +italian +.IP \(bu +norwegian +.IP \(bu +portuguese +.IP \(bu +russian +.IP \(bu +spanish +.IP \(bu +swedish +.PP +.B recollindex \-S +will rebuild the phonetic/orthographic index. This feature uses the +.B aspell +package, which must be installed on the system. +.PP +.B recollindex \-E +will check the configuration file for topdirs and other relevant paths +existence (to help catch typos). + +.SH SEE ALSO +.PP +recoll(1) recoll.conf(5) diff --git a/src/doc/man/recollq.1 b/src/doc/man/recollq.1 new file mode 100644 index 00000000..c698284f --- /dev/null +++ b/src/doc/man/recollq.1 @@ -0,0 +1,148 @@ +.\" $Id: recollq.1,v 1.1 2007-11-13 10:07:35 dockes Exp $ (C) 2005 J.F.Dockes\$ +.TH RECOLLQ 1 "13 November 2007" +.SH NAME +recollq \- command line / standard output Recoll query command. +.SH SYNOPSIS +.B recollq +[ +.B \-c + +] +[ +.B \-o +| +.B \-f +| +.B \-a +] +[ +.B \-b +] +[ +.B \-d +] +[ +.B \-A +] +[ +.B \-e +] +[ +.B \-m +] +[ +.B \-n +<[first-]cnt> +] +[ +.B \-Q +] +[ +.B \-s + +] +[ +.B \-S + +] +[ +.B \-D +] +[ +.B \-i + +] +[ +.B \-F + +] + + +.B recollq \-P + +.SH DESCRIPTION +The +.B recollq +command will execute the Recoll query specified on the command line and +print the results to the standard output. It is primarily designed for +diagnostics, or piping the data to some other program. The basic format and +its variations can be useful for command line querying. The \-F option +should exclusively be used for using the output data in another program, as +it is the only one for which output is guaranteed to be fully parseable. +.PP +The +.B \-c +option specifies the configuration directory name, overriding the +default or $RECOLL_CONFDIR. +.PP +The query string is built by concatenating all arguments found at the end +of the command line (after the options). It will be interpreted by default +as a query language string. Quoting should be used as needed to escape +characters that might be interpreted by the shell (ie: wildcards). +.B \-a +is specified, the query string will be interpreted as an +.I all words +simple search query. If +.B \-o +is specified, the query string will be interpreted as an +.I any word +simple search query. If +.B \-f +is specified, the query string will be interpreted as a +.I file name +simple search query. +.PP +.B \-b +(basic) can be specified to only print the result urls in the output +stream. +.PP +If +.B \-d +is set, the text for the result files contents will be dumped to stdout. +.PP +If +.B \-m +is set, the whole metadata array will be dumped for each document. +.PP +If +.B \-A +is set, the document abstracts will be printed. +.PP +.B \-S + +sorts the results according to the specified field. Use +.B \-D +for descending order. +.PP +.B \-n + +can be used to set the maximum number of results that should be +printed. The default is 2000. Use a value of 0 for no limit. +.PP +.B \-s + +selects the word stemming language. The value should match an existing +stemming database (as set in the configuration or added with recollindex \-s). +.PP +.B \-i + +adds the specified Xapian index to the set used for the query. Can be +specified multiple times. +.PP +.B \-F + +should be used for piping the data to another program. After 2 initial +lines showing the actual query and the estimated result counts, it will +print one line for each result document. Each line will have +exactly the fields requested on the command line. Fields are encoded in +base64 and separated by one space character. Empty fields are indicated by +consecutive space characters. There is one additional space character at +the end of each line. +.PP +.B recollq \-P +(Period) will print the minimum and maximum modification years for +documents in the index. + +.SH SEE ALSO +.PP +recollindex(1) recollq(1) recoll.conf(5) diff --git a/src/doc/prog/Doxyfile b/src/doc/prog/Doxyfile new file mode 100644 index 00000000..d57dced8 --- /dev/null +++ b/src/doc/prog/Doxyfile @@ -0,0 +1,1212 @@ +# Doxyfile 1.4.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Recoll + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, +# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, +# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, +# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, +# Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explicit @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. + +SHOW_DIRECTORIES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from the +# version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the progam writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../src top.txt filters.txt + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = .moc .ui + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = NO + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = docprog_html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that a graph may be further truncated if the graph's +# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH +# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), +# the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, which results in a white background. +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/src/doc/prog/Makefile b/src/doc/prog/Makefile new file mode 100644 index 00000000..926acf16 --- /dev/null +++ b/src/doc/prog/Makefile @@ -0,0 +1,5 @@ +documentation: + doxygen Doxyfile +clean: + rm -f docprog_html/* + diff --git a/src/doc/prog/filters.txt b/src/doc/prog/filters.txt new file mode 100644 index 00000000..67cff502 --- /dev/null +++ b/src/doc/prog/filters.txt @@ -0,0 +1,47 @@ +/*!@filters + +\page filters About filters + +\section filtintro Overview + +Before a document can be processed either for indexing or previewing, it +must be translated into an internal common format. + +The MimeHandler class defines the virtual interface for filters. There are +derived classes for text, html (MimeHandlerHtml), and mail folders +(MimeHandlerMail) + +There is also a derived class (MimeHandlerExec) that will execute an +external program to translate the document to simple html (to be further +processed by MimeHandlerHtml). + +To extend Recoll for a new document type, you may either subclass the +MimeHandler class (look at one of the existing subclasses), or write an +external filter, which will probably be the simpler solution in most cases. + +\section extfilts External filters + +Filters are programs (usually shell scripts) that will turn a document of +foreign type into something that Recoll can understand. HTML was chosen as +a pivot format for its ability to carry structured information. + +The meta-information tags that Recoll will use at the moment are the +following: + + - title + - charset + - keywords + - description + +For an example, you can take a look at the rclsoff filter which translates +openoffice documents. + +The filter is executed with the input file name as a parameter and should +output the result to stdout. + +\section extassoc Associating a filter to a mime type + +This is done in the mimeconf configuration file. Take a look at the file, +the format is self-explanatory. + +*/ diff --git a/src/doc/prog/top.txt b/src/doc/prog/top.txt new file mode 100644 index 00000000..becb8c3b --- /dev/null +++ b/src/doc/prog/top.txt @@ -0,0 +1,20 @@ +/*!@mainpage Recoll: A personal/desktop text-search program +\author email address: jfd@recoll.org + +\section intro Introduction + +Home page: http://www.recoll.org + +This is the documentation for Recoll, a personal text search tool. Recoll +is written in C++, has a QT-based gui and uses the
Xapian full text search engine. + +Recoll supports a number of document types, the decoding of which is either +performed with internal code or an externally executed, program. + +It should be relatively easy to write a new filter for some yet unsupported +file type, and the documentation for this is found here: Writing input filters + +*/ + diff --git a/src/doc/user/00README.txt b/src/doc/user/00README.txt new file mode 100644 index 00000000..892a3b85 --- /dev/null +++ b/src/doc/user/00README.txt @@ -0,0 +1,30 @@ += Building the Recoll user manual + +The Recoll user manual used to be written in DocBook SGML and used the +FreeBSD doc toolchain to produce the output formats. This had the advantage +of an easy way to produce all formats including a PDF manual, but presented +two problems: + + - Dependancy on the FreeBSD platform. + - No support for UTF-8 (last I looked), only latin1. + +The manual is now compatible with XML. There is a small script that +converts the SGML (but XML-compatible) manual into XML (changes the header, +mostly). The SGML version is still the primary one. + +Beyond fixing a few missing closing tags, the main change that had to be +made was to make the anchors explicitly upper-case because the SGML +toolchain converts them to upper-case and the XML one does not, so the only +way to have compatibility is to make them upper-case in the first place. + +We initially had a problem for producing the PDF manual, which motivated +keeping the SGML version for producing the PDF with the FreeBSD SGML +toolchain. This problem is now solved with dblatex, so that the SGML +version now has little reason to persist and it will go away at some point +in the future. + +Asciidoc would also be a candidate as the source format, because it can +easily produce docbook, so the future will probably be: + +asciidoc->docbook-xml-> html + -> pdf diff --git a/src/doc/user/Makefile b/src/doc/user/Makefile new file mode 100644 index 00000000..1262690b --- /dev/null +++ b/src/doc/user/Makefile @@ -0,0 +1,40 @@ +# Wherever docbook.xsl and chunk.xsl live +# Fbsd +#XSLDIR="/usr/local/share/xsl/docbook/" +# Mac +#XSLDIR="/opt/local/share/xsl/docbook-xsl/" +#Linux +XSLDIR="/usr/share/xml/docbook/stylesheet/docbook-xsl/" + + +# Options common to the single-file and chunked versions +commonoptions=--stringparam section.autolabel 1 \ + --stringparam section.autolabel.max.depth 3 \ + --stringparam section.label.includes.component.label 1 \ + --stringparam autotoc.label.in.hyperlink 0 \ + --stringparam abstract.notitle.enabled 1 \ + --stringparam html.stylesheet docbook-xsl.css \ + --stringparam generate.toc "book toc,title,figure,table,example,equation" + + +# index.html chunk format target replaced by nicer webhelp (needs separate +# make) in webhelp/ subdir +all: usermanual.html usermanual.pdf + +usermanual.html: usermanual.xml + xsltproc ${commonoptions} \ + -o tmpfile.html "${XSLDIR}/html/docbook.xsl" $< + -tidy -indent tmpfile.html > usermanual.html + rm -f tmpfile.html + +index.html: usermanual.xml + xsltproc ${commonoptions} \ + --stringparam use.id.as.filename 1 \ + --stringparam root.filename index \ + "${XSLDIR}/html/chunk.xsl" $< + +usermanual.pdf: usermanual.xml + dblatex $< + +clean: + rm -f RCL.*.html usermanual.pdf usermanual.html index.html tmpfile.html diff --git a/src/doc/user/docbook-xsl.css b/src/doc/user/docbook-xsl.css new file mode 100644 index 00000000..8cc0a8b2 --- /dev/null +++ b/src/doc/user/docbook-xsl.css @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2001, 2003, 2010 The FreeBSD Documentation Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: doc/share/misc/docbook.css,v 1.15 2010/03/20 04:15:01 hrs Exp $ + */ + +body address { + line-height: 1.3; + margin: .6em 0; +} + +body blockquote { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +html body { + margin: 1em 8% 1em 10%; + line-height: 1.2; +} + +.legalnotice { + font-size: small; + font-variant: small-caps; +} + +body div { + margin: 0; +} + +dl { + margin: .8em 0; + line-height: 1.2; +} + +body form { + margin: .6em 0; +} + +h1, h2, h3, h4, h5, h6, +div.example p b, +.question, +div.table p b, +div.procedure p b { + color: #990000; +} + +body h1, body h2, body h3, body h4, body h5, body h6 { + line-height: 1.3; + margin-left: 0; +} + +body h1, body h2 { + margin: .8em 0 0 -4%; +} + +body h3, body h4 { + margin: .8em 0 0 -3%; +} + +body h5 { + margin: .8em 0 0 -2%; +} + +body h6 { + margin: .8em 0 0 -1%; +} + +body hr { + margin: .6em; + border-width: 0 0 1px 0; + border-style: solid; + border-color: #cecece; +} + +body img.navheader { + margin: 0 0 0 -4%; +} + +ol { + margin: 0 0 0 5%; + line-height: 1.2; +} + +body pre { + margin: .75em 0; + line-height: 1.0; + font-family: monospace; +} + +body td, body th { + line-height: 1.2; +} + +ul, body dir, body menu { + margin: 0 0 0 5%; + line-height: 1.2; +} + +html { + margin: 0; + padding: 0; +} + +body p b.application { + color: #000000; +} +body p span.application { + font-weight: bold; + color: #000000; +} + +.filename { + color: #007a00; +} + +.guimenu, .guimenuitem, .guisubmenu, +.guilabel, .interface, +.shortcut, .shortcut .keycap { + font-weight: bold; +} + +.guibutton { + background-color: #cfcfcf; + padding: 2px; +} + +.accel { + background-color: #f0f0f0; + text-decoration: underline; +} + +.screen { + padding: 1ex; +} + +.programlisting { + padding: 1ex; + background-color: #eee; + border: 1px solid #ccc; +} + +@media screen { /* hide from ie3 */ + a[href]:hover { background: #ffa } +} + +blockquote.note { + color: #222; + background: #eee; + border: 1px solid #ccc; + padding: 0.4em 0.4em; + width: 85%; +} + +blockquote.tip { + color: #004f00; + background: #d8ecd6; + border: 1px solid green; + padding: 0.2em 2em; + width: 85%; +} + +blockquote.important { + font-style:italic; + border: 1px solid #a00; + border-left: 12px solid #c00; + padding: 0.1em 1em; +} + +blockquote.warning { + color: #9f1313; + background: #f8e8e8; + border: 1px solid #e59595; + padding: 0.2em 2em; + width: 85%; +} + +.example { + background: #fefde6; + border: 1px solid #f1bb16; + margin: 1em 0; + padding: 0.2em 2em; + width: 90%; +} + +.informaltable table.calstable tr td { + padding-left: 1em; + padding-right: 1em; +} diff --git a/src/doc/user/docbook.css b/src/doc/user/docbook.css new file mode 100644 index 00000000..3d40fa70 --- /dev/null +++ b/src/doc/user/docbook.css @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2001, 2003, 2010 The FreeBSD Documentation Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: doc/share/misc/docbook.css,v 1.15 2010/03/20 04:15:01 hrs Exp $ + */ + +BODY ADDRESS { + line-height: 1.3; + margin: .6em 0; +} + +BODY BLOCKQUOTE { + margin-top: .75em; + line-height: 1.5; + margin-bottom: .75em; +} + +HTML BODY { + margin: 1em 8% 1em 10%; + line-height: 1.2; +} + +.LEGALNOTICE { + font-size: small; + font-variant: small-caps; +} + +BODY DIV { + margin: 0; +} + +DL { + margin: .8em 0; + line-height: 1.2; +} + +BODY FORM { + margin: .6em 0; +} + +H1, H2, H3, H4, H5, H6, +DIV.EXAMPLE P B, +.QUESTION, +DIV.TABLE P B, +DIV.PROCEDURE P B { + color: #990000; +} + +BODY H1, BODY H2, BODY H3, BODY H4, BODY H5, BODY H6 { + line-height: 1.3; + margin-left: 0; +} + +BODY H1, BODY H2 { + margin: .8em 0 0 -4%; +} + +BODY H3, BODY H4 { + margin: .8em 0 0 -3%; +} + +BODY H5 { + margin: .8em 0 0 -2%; +} + +BODY H6 { + margin: .8em 0 0 -1%; +} + +BODY HR { + margin: .6em; + border-width: 0 0 1px 0; + border-style: solid; + border-color: #cecece; +} + +BODY IMG.NAVHEADER { + margin: 0 0 0 -4%; +} + +OL { + margin: 0 0 0 5%; + line-height: 1.2; +} + +BODY PRE { + margin: .75em 0; + line-height: 1.0; + font-family: monospace; +} + +BODY TD, BODY TH { + line-height: 1.2; +} + +UL, BODY DIR, BODY MENU { + margin: 0 0 0 5%; + line-height: 1.2; +} + +HTML { + margin: 0; + padding: 0; +} + +BODY P B.APPLICATION { + color: #000000; +} + +.FILENAME { + color: #007a00; +} + +.GUIMENU, .GUIMENUITEM, .GUISUBMENU, +.GUILABEL, .INTERFACE, +.SHORTCUT, .SHORTCUT .KEYCAP { + font-weight: bold; +} + +.GUIBUTTON { + background-color: #CFCFCF; + padding: 2px; +} + +.ACCEL { + background-color: #F0F0F0; + text-decoration: underline; +} + +.SCREEN { + padding: 1ex; +} + +.PROGRAMLISTING { + padding: 1ex; + background-color: #eee; + border: 1px solid #ccc; +} + +@media screen { /* hide from IE3 */ + a[href]:hover { background: #ffa } +} + +BLOCKQUOTE.NOTE { + color: #222; + background: #eee; + border: 1px solid #ccc; + padding: 0.4em 0.4em; + width: 85%; +} + +BLOCKQUOTE.TIP { + color: #004F00; + background: #d8ecd6; + border: 1px solid green; + padding: 0.2em 2em; + width: 85%; +} + +BLOCKQUOTE.IMPORTANT { + font-style:italic; + border: 1px solid #a00; + border-left: 12px solid #c00; + padding: 0.1em 1em; +} + +BLOCKQUOTE.WARNING { + color: #9F1313; + background: #f8e8e8; + border: 1px solid #e59595; + padding: 0.2em 2em; + width: 85%; +} + +.EXAMPLE { + background: #fefde6; + border: 1px solid #f1bb16; + margin: 1em 0; + padding: 0.2em 2em; + width: 90%; +} + +.INFORMALTABLE TABLE.CALSTABLE TR TD { + padding-left: 1em; + padding-right: 1em; +} diff --git a/src/doc/user/usermanual-italian.html b/src/doc/user/usermanual-italian.html new file mode 100644 index 00000000..d9820c05 --- /dev/null +++ b/src/doc/user/usermanual-italian.html @@ -0,0 +1,3849 @@ + + + + + + + + + + + + + Recoll user manual + + + + + + + + + + + + + + + +
+
+

Recoll: +manuale utente

+ + +

Jean-Francois +Dockes

+ + +
+
+

+ + +
+ + +
+ + + + + +
+
+

Questo documento spiega le nozioni della ricerca testuale e descrive +l'installazione e l'uso di Recoll.

+ + +
+ + +
+ + +
+
+ + +
+
+ + +
Indice
+ + +
1. Introduzione
+ + +
+ +
+ + +
1.1. Per +gli impazienti
+ + +
1.2. Ricerca +a tutto testo
+ + +
1.3. Panoramica +d Recoll
+ + + +
+ + +
+ + +
2. Indicizzazione
+ + +
+ +
+ + +
2.1. Introduzione
+ + +
2.2. Salvare +l'indice
+ + +
+ +
+ + +
2.2.1. Sicurezza
+ + + +
+ + +
+ + +
2.3. Configurazione dell'indicizzazione
+ + +
2.4. Indicizzazione +periodica
+ + +
+ +
+ + +
2.4.1. Iniziare +l'indicizzazione
+ + +
2.4.2. Usare +cron per l'indicizzazione automatica
+ + + +
+ + +
+ + +
2.5. Indicizzazione in tempo +reale
+ + + +
+ + +
+ + +
3. Search
+ + +
+ +
+ + +
3.1. Ricerca +semplice
+ + +
3.2. La +lista dei risultati
+ + +
+ +
+ + +
3.2.1. Il +clic col tasto destro del mouse sulla lista dei risultati
+ + + +
+ + +
+ + +
3.3. La +finestra di preview
+ + +
3.4. Ricerca +complessa/avanzata
+ + +
3.5. Il +terminale di esplorazione
+ + +
3.6. Database +multipli
+ + +
3.7. Storia +dei documenti
+ + +
3.8. Ordinare +i risultati della ricerca
+ + +
3.9. Consigli +per la ricerca, scorciatoie
+ + +
3.10. Personalizzare +l'interfaccia di ricerca
+ + + +
+ + +
+ + +
4. Installazione
+ + +
+ +
+ + +
4.1. Installare +una copia pre-compilata
+ + +
+ +
+ + +
4.1.1. Installazione +con un programma di installazione
+ + +
4.1.2. Installare +un pacchetto Recoll +pre-compilato
+ + + +
+ + +
+ + +
4.2. Pacchetti +esterni utilizzabili
+ + +
4.3. Compilazione +da sorgente
+ + +
+ +
+ + +
4.3.1. Prerequisiti
+ + +
4.3.2. Compilazione
+ + +
4.3.3. Installazione
+ + + +
+ + +
+ + +
4.4. Panoramica +della configurazione
+ + +
+ +
+ + +
4.4.1. File +principale di configurazione
+ + +
4.4.2. Il +file mimemap
+ + +
4.4.3. Il +file mimeconf
+ + +
4.4.4. Il +file mimeview
+ + +
4.4.5. Esempio
+ + + +
+ + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+
+

Capitolo +1. Introduzione

+ + +
+

1.1. Per gli impazienti

+ + +

Se non amate leggere manuali (chi lo ama?) e vorreste provare +subito Recoll, eseguite +allora l'installazione +e lanciate recoll, +che per default inizierà ad indicizzare la vostra home +cartella, permettendovi di fare subito una ricerca non appena il +processo di indicizzazione sarà terminato.

+ + +

Non fate così, però, se la vostra home +cartella +contiene un gran numero di documenti e non avete voglia di aspettare o +avete poco spazio sul disco. In questo caso potrebbe convenirvi di +editare per prima cosa il file di  configurazione per +estringere l'area da indicizzare.

+ + +

Fate inoltre attenzione che potreste dover installare le applicazioni di supporto esterne +per indicizzare quei documenti che le richiedono (ad esempio antiword per documenti +ms-word).

+ + +
+ + +
+
+

1.2. Ricerca a tutto testo

+ + +

Recoll +è un'applicazione per la +ricerca a tutto testo. Le applicazioni di ricerca a tutto testo vi +permettono di trovare ciò che cercate in base al contenuto +dei +files e non al loro nome o estensione. Più in dettaglio vi +lasciano specificare le parole (termini di ricerca) che dovrebbero (o +non dovrebbereo) essere nel testo che cercate e vi ritornano una lista +di documenti che soddisfano tale criterio, ordinati in maniera tale che +quelli più rilevanti appaiano +in cima alla lista.

+ + +

Non hai bisogno di ricordare in che file o e-mail hai scritto +una +certa informazione. Semplicemente chiedi di trovare i termini che ti +interessano e lo strumento ti ritornerà una lista di +documenti +che li conetngono, in modo simile a quello che fa un motore di ricerca +su internet.

+ + +

Recoll cerca di +determinare quali +documenti sono più rilevanti al fine della ricerca dei +termini +inseriti. Gli algritmi che determinano la rilevanza possono essere +molto complessi e in generale sono inferiori alla potenza e +rapidità della mente umana. La qualità nella +determinazione della rilevanza è probabilmente il fattore +più importante di uno strumento di ricerca.

+ + +

In molti casi cercate tutte le forme di una parola, non una +forma +specifica. Queste differenti forme possono includere plurali, diverse +coniugazioni di verbi, o parole derivate da una radice comune +o stem +(ad esempio: floopianor, piani, pianoforte, ripiano...). Recoll per default espande la +ricerca a tutte queste variazioni +parole che hanno in comune la stessa radice o stem). Questa espansione +può essere disabilitata in qualsiasi momento.

+ + +

Lo stemming, per se stesso, non risolve errori di ortografia, +nè può fare ricerche fonetiche. Recoll supporta queste +caratteristiche attraverso uno strumento specifico (il terminale di esplorazione) +che vi lascia esplorare i +termini contenuti nell'indice in differenti maniere.

+ + +
+ + +
+
+

1.3. Panoramica di Recoll

+ + +

Recoll usa la +libreria di ricerca informazioni Xapian + come suo motore di ricerca e indicizzazione. Xapian è un +programma molto maturo che usa un +modello di rilevanza probabilistica molto sofisticato. Recoll provvede l'interfaccia +per indicizzare del sistema ed estrarli in base alla ricerca.

+ + +

In pratica, Xapian +lavora ricordandosi i +termini (parole) contenuti nei vari documenti. Conoscenza acquisita +tramite il procedimento chiamato indicizzazione.

+ + +

L'indice risultante può essere molto grande (a +spanna la +grandezza dei files indicizzati), ma non è un archivio di +documenti. Recoll +può mostrare solo +i documenti che si trovano ancora là dove sono stati +indicizzati. (In effetti esiste un modo per ricostruire un documento +dalle informazioni racchiuse nell'indice, ma il risultato non +è +bello dal momento che il testo è tutto minuscolo e sono +perdute +le informazioni di formattazione).

+ + +

Recoll +immagazzina tutte le informazioni sando il formato Unicode UTF-8 +e può indicizzare files con  un differente set di +caratteri, diverse codifiche e lingue sullo stesso indice. Posside +filtri di ingresso per molteplici tipi di files.

+ + +

Lo stemming dipende dalla lingua del documento. Recoll +immagazzina i termini senza stem e usa database ausiliari per espandere +(stemming) le parole. Può farlo scegliendo tra lingue +diverse o +aggiungendo nuove lingue senza dover rifare l'indice. Immagazzinare +documenti in diverse lingue nello stesso indice è possibile, +e +nella pratica utile, ma può introdurre +possibilità di +confusione. Recoll +attualmente non fa alcun tentativo per riconoscere automaticamente la +lingua.

+ + +

Recoll ha molti +parametri per definire +esattamente ciò che deve indicizzare e come classificare e +decodificare il sorgente dei documenti. Questi parametri sono contenuti +in un file di +configurazione. La configurazione standard è messa +in una cartella standard (normalmente qualcosa come /usr/[local/]share/recoll/examples) +durante l'installazione. I parametri di default possono essere cambiati +con valori da voi scelti e messi nel vostro file di configurazione +personale che deve trovarsi nella cartella .recoll +nella vostra home cartella. Il file di configurazione fornito di +default dovrebbe essere sufficente per indicizzare la vostra home +cartella e permettervi così di provare Recoll, salvo naturalmente +personalizzarlo in seguito.

+ + +

L'indicizzazione +comincia +automaticamente la prima volta che lanciate l'interfaccia grafica di +ricerca di recoll oppure eseguendo il comando recollindex.

+ + +

La ricerca viene +fatta col programma recoll che ha numerose opzioni per farvi trovare +quello che effettivamente state cercando.

+ + +
+ + +
+ + +
+
+

Capitolo +2. Indicizzazione

+ + +
+

2.1. +Introduzione

+ + +

L'indicizzazione è il processo che analizza i +documenti e mette i dati nel database. Il processo di indicizzazione di +Recoll +è normalmente incrementale, vale a dire che i documenti +vengono +analizzati e indicizzati solo se hanno subito modifiche. Alla prima +esecuzione, naturalmente, tutti i documenti vengono analizzati e +indicizzati..Il processo (indicizzazione completa) può +essere +eseguito in seguito specificando un'opzione al comando di +indicizzazione (recollindex +-z).

+ + +

L'indicizzazione con Recoll può essere +fatta con due metodi diversi:

+ + +
    + + +
  • + +
    + +

    Indicizzazione periodica: +l'indicizzazione avviene in tempi prestabiliti, eseguendo il comando recollindex. L'uso tipico +è quello di fare una indicizzazione durante la notte programmando +l'evento con cron.

    + + +
    + + +
  • + + +
  • + +
    + +

    Indicizzazione in tempo reale: +l'indicizzazione avviene non appena un file viene creato o cambiato. In +questo caso recollindex +gira come un  demone e usa il monitoraggio del file-system +fornito da Fam, Gamin o inotify per scoprire gli +eventuali cambiamenti. Monitorare un grosso albero di cartelle +può consumare molte risorse.

    + + +
    + + +
  • + + +
+ + +

La scelta tra i due metodi è principalmente +questione di +preferenze e può essere combinata costruendo indici +diversi (ad esempio: indicizzazione periodica per una grossa +cartella di documenti e indicizzazione in tempo reale per una piccola +home cartella). Monitorare grandi sezioni del disco + può +richiedere risorse significative del sistema senza portare vantaggi +considerevoli.

+ + +

+

+ + +

Recoll riconosce +alcuni differenti tipi di documenti. +I parametri per il riconoscimento dei documenti sono nei files di configurazione. +La maggior parte dei tipi, come l'HTML o i files di un wordprocessor, +sono un unico documento. Altri tipi, come le mail cartelle, possono +contenere molti singoli documenti indicizzati.

+ + +

Recoll processa +files di testo, HTML, +openoffice ed +e-mail internamente. Altri tipi (ad esempio: files postscript, pdf, +ms-word, rtf) richiedono applicazioni esterne per poter essere +processati. La lista di queste applicazioni è nella sezione installazione.

+ + +

Senza ulteriori configurazioni, Recoll +indicizzerà tutti i files della vostra home cartella, usando +i parametri della configurazione di default.

+ + +

In qualche caso potreste essere interessati ad indicizzare +aree +differenti del vostro file system in database separati. Potete farlo +utilizzando la configurazione multipla di cartelle, indicizzando +ciascuna area del file system in uno specifico database. Vedi la sezione su come usare database +multipli per avere maggiori informazione sulla configurazione +e indicizzazione multipla.
+ + +

+ + +
+ + +
+
+

2.2. Salvare l'indice

+ + +

Normalmente la cartella dove viene salvato l'indice +è la sotto cartella xapiandb nella cartella di +configurazione di Recoll, +tipicamente +$HOME/.recoll/xapiandb/. +Questo però può essere cambiato in due modi +differenti (con due differenti scopi):

+ + +
    + + +
  • + +

    Puoi specificare una differente cartella di configurazione +tramite la variabile di ambiente RECOLL_CONFDIR, +oppure usando l'opzione -c +nei comandi di  Recoll. +Questo metodo è usato tipicamente per indicizzare differenti +aree del file system in differenti indici. Per esempio, coi seguenti +comandi:

    + + + +
    export RECOLL_CONFDIR=~/.indexes-email
    recoll

    + + + Recoll +userò il file di configurazione che trova in ~/.indexes-email/ e, (se non +specificato altrimenti in recoll.conf) +cercherà l'indice in in ~/.indexes-email/xapiandb/. +
    + + +
    + + + +

    Usare diverse cartella di configurazionee +diverse  opzioni +di configurazione permette di adattare le configurazioni e +gli indici ai dati presenti nelle varie aree dove volete effettuare le +ricerche.

    + + +
  • + + +
  • + +

    Potete specificare un indirizzo diverso per salvare +l'indice editando il parametro the dbdir +che si trova nel file di configurazione (vedi la  sezione di +configurazione). +Questometodo va usato se vuoi mantenere la cartella di configurazione +nel suo indirizzo di default, ma vuoi mettere l'indice da qualche altra +parte, generalmente per ragioni di spazio.

    + + +
  • + + +
+ + +

La grandezza dell'indice è determinata dal volume +dei +documenti da indicizzare, ma il rapporto può variare molto. +Per +un insieme di documenti normalmente misto il volume dell'indice +è molto vicino a quello dei documenti indicizzati In casi +specifici (ad esempio un insieme di mbox compresse), il volume +dell'indice può essere molto più grande di quello +dei +documenti stessi. Può anche essere molto più +piccolo se +l'insieme di documenti contiene molte immagini e altri dati non +indicizzati (un esempio estremo è dato dai files mp3 dove +solo i +tags vengono indicizzati).

+ + +

Naturalmente immagini, suoni e video non incrementano il +volume +dell'indice, il che ha come conseguenza che, oggi (2006), il volume +dell'indice sarà comunque trascurabile rispetto +all'ammontare +dei dati contenuti nel vostro computer.

+ + +

La cartella contenente l'indice (xapiandb) +contiene solo dati che possono essere ricostruiti in qualsiasi momento +re-indicizzando il tutto, e quindi può essere cancellata +senza +problemi.

+ + +
+
+

2.2.1. Sicurezza

+ + +

L'indice di Recoll +non contiene le copie +dei documenti indicizzati. Ma conyiene abbastanza dati da permettere +una ricostruzione piuttosto completa e comprensibile. +Nel caso vengano indicizzati documenti confidenziali +lìaccesso +alla cartella del database dovrebbe essere limitato.

+ + +

Dalla versione 1.4, Recoll +crea la cartella di configurazione con i permessi 0700 (accessibile +solo per +il proprietario). Visto che bormalmente la cartella del database +è una sub cartella di questa, la protezione dovrebbe essere +sufficenta.

+ + +

Se usi un'altra configurazione dovresti pensare al tipo di +protezione che l'indice dovrebbe avere e settare la cartella +corrispondente e i files con i permessi del caso.

+ + +
+ + +
+ + +
+
+

2.3. Configurazione +dell'indicizzazione

+ + +

Puoi controllare le aree del file system da indicizzare e come +processare i files tramite le variabili nei files +di configurazione di Recoll.

+ + +

Puoi anche usare indici +multipli +definiti da configurazioni separate, normalmente  per separare +indici personali e indici in comune, oppure per avvantaggiarsi +dell'organizzazione dei tuoi dati e aumentare la precisione.

+ + +

La prima volta che lanci recoll, +verrai richiesto se vuoi che recoll costruisca l'indice oppure no. Se +vuoi sistemare la configurazione prima che venga creato l'indice, +clicca ora su Cancel. +Facendo così avrai creato la cartella ~/.recoll contenente +files di configurazione vuoti.

+ + +

La configurazione è documentata all'interno +del  capitolo +installazione +di questo documento, o nella pagina man di recoll.conf(5) man +page. La variabile di maggiore  e immediato interesse +è +probabilmente topdirs, +che determina quali cartelle indicizzare.

+ + +

Le applicazioni esterne necessarie per indicizzare tipi di +files diversi da txt, HTML o email (ad esempio: pdf, +postscript, ms-word...) sono indicate nella sezione pacchetti esterni.

+ + +
+ + +
+
+

2.4. Indicizzazione periodica

+ + +
+

2.4.1.Iniziare +l'indicizzazione

+ + +

L'indicizzazione viene eseguita o tramite il programma recollindex, +o lanciando il thread di indicizzazione dal programma recoll (usa il menu File). Entrambi i modi fanno +uso della variabile RECOLL_CONFDIR +o accettano l'opzione -c confdir +per specificare la cartella di configurazione da usare.

+ + +

Se il programma recoll +non trova alcun indice quando è lanciato, inizia +automaticamente +l'indicizzazione (a meno che non clicchi sul tasto Cancel).

+ + +

E' meglio non interrompere il processo di indicizzazione +perchè facendo così, il più delle +volte, l'indice +viene corrotto. Questo non è un problema serio visto che +tutto +quello che devi fare è cancellare l'indice e riavviare +l'indicizzazione. I files dell'indice sono normalmente nella cartella $HOME/.recoll/xapiandb, che puoi +tranquillamente cancellare se necessario. In alternativa puoi avviare recollindex con +l'opzione -z, opzione che +cancella il database prima di fare l'indicewhich will reset the +database before indexing.

+ + +
+ + +
+
+

2.4.2. Usare cron per +l'indicizzazione automatica

+ + +

Il modo più semplice per avere un'indicizzazione +automatica è usare cron per fare l'indicizzazione ogni +notte. +Ad esempio la seguente linea aggiunta a crontab +esegue l'indicizzazione ogni giorno alle 3:30AM (supponendo +che recollindex sia nel +vostro PATH):

+ + +
30 3 * * * recollindex > /tmp/recolltrace 2>&1
+ + +

Il comando usuale per editare crontabcrontab -e +(che normalmente lancia l'editor vi +per editare crontab). Potreste ovviamente avere strumenti +più sofisticati  nel vostro sistema atti allo scopo.

+ + +
+ + +
+ + +
+
+

2.5. Indicizzazione in tempo +reale

+ + +

L'indicizzazione in tempo reale si ottiene con il comando recollindex -m. Con questa +opzione, recollindex viene +lanciato dal terminele e diventa un demone, +monitorando in continuazione i cambiamenti e tenendo così +aggiornato l'indice.

+ + +

L'indicizzazione in tempo reale viene impostata alla configurazione +del pacchetto (prima della compilazione) con l'opzione --with[out]-fam or --with[out]-inotify. Per default +viene scelto inotify per i sistemi che lo supportano.

+ + +

Lo script rclmon.sh +può essere usato per lanciare e fermare il demone. Si trova +nella cartella examples +di recoll +(normalmente /usr/local/[share/]recoll/examples).

+ + +

Il lancio del demone è normalmente eseguito come +parte della +sessione dell'utente. Ad esempio la mia sessione fuori +moda xdm ha +lo script .xsession +con le seguenti linne alla fine:

+ + +
recollconf=$HOME/.recoll-home
recolldata=/usr/local/share/recoll
RECOLL_CONFDIR=$recollconf $recolldata/examples/rclmon.sh start

fvwm

+ + +

Viene lanciato prima il demone e poil il window-manager, per +il quale la sessione aspetta.

+ + +

Per default il demone di indicizzazione monitorizza lo stato +della +sessione X11 ed esce quando questa finisce (non è necessario +chiuderlo esplicitamente). Il monitoraggio della sessione X11 +può essere disabilitato con l'opzione -x di recollindex.

+ + +

Con KDE, puoi mettere un piccolo script per +lanciare recollindex +-m nella $HOME/.kde/Autostart. +Verrà eseguito ogni volta che inizia la sessione KDE.

+ + +

Esiste un meccanismo simile anche per Gnome (trova lo +strumento per +il controllo della gestione nel menu e usa la linguetta "Startup +programs").

+ + +

Per default, il demone di indicizzazione scrive i suoi +messaggiin un +file dentro la cartella di configurazione (ciò è +controllato dai parametri daemlogfilename e daemloglevel +di configurazione). Puoi naturalmente cambiarli. Il file di log fviene +troncato all'avvio del demone. Se il demone è sempre in +funzione, il file di log può diventare molto grosso a +seconda +del livello di log scelto.

+ + +

Sebbene l'indicizzazione real time sia apprezzabile, +può +causare un alto carico del sistema, ad esempio se cambiano dati come le +e-mail. Probabilmente ti conviene non abilitarla se il tuo sistema +è a corto di risorse. L'indicizzazione periodica +è +sufficente nella maggior parte dei casi.

+ + +
+ + +
+ + +
+
+

Capitolo +3. Ricerca

+ + +

Il programma recoll provvede l'interfaccia +paer la ricerca. Utilizza le librerie QT.

+ + +
+
+

3.1. Ricerca semplice

+ + +
+
    + + +
  1. + +

    Lancia il programma recoll.

    + + +
  2. + + +
  3. + +

    Scegli il modo di reicerca: Qualsiasi +o Tutti o Nome File.

    + + +
  4. + + +
  5. + +

    Entra la/e parola/e da cercare nel campo testo nella parte +superiore della finestra.

    + + +
  6. + + +
  7. + +

    Clicca sul bottone Cerca +o clicca il tasto Enter per +iniziare la ricerca.

    + + +
  8. + + +
+ + +
+ + +

Il modo di default iniziale di ricerca è Qualsiasi. +Questo cercherà quei documenti che contengano qualsiasi +delle +parole cercate (ill documento che ne contiene di più +avrà +maggiore rilevanza). Tutte +mostrerà solo quei documenti che contengono tutte le parole +cercate. Nome File cerca +solo tra i nomi dei files e permette l'uso dei Caratteri Jolly (*, ? +, []).

+ + +

Puoi anche cercare frasi (parole adiacenti in un dato ordine) +racchiudendo tra virgolette le parole di ricerca. Ad esempio: "realtà virtuale".

+ + +

Maiuscole e minuscole non hanno alcuna influenza sulla +ricerca, con +l'unica eccezione che puoi disabilitare lo stemming (ricerca delle +parole che contengono quella data) scrivendo il primo carattere +maiuscolo. Ad esempio: la ricerca di  casa +cercherà anche  caso, case, casi, casato, +casale, ecc., ma la ricerca di Casa cercherà solo casa, con +caratteri maiuscoli o minuscoli (lo stemming può essere +disbilitato globalmente nelle preferenze).

+ + +

Recoll si +ricorda gli ultimi termini di +ricerca. +Per richiamarli puoi usare il combobox della casella di +ricerca. +Tieni però a mente che vengono ricordate solo le parole, ma +non +il modo (Qualsiasi, Tutte, Nome file).

+ + +

I tasti Esc +Space +mentre si sta scrivendo una parola nella ricerca semplice aprono una +finestra con i possibili completamenti della parole. Questi ultimi sono +tratti dalle parole esistenti nel database.

+ + +

Un doppio clic su una parola della lista dei risultati o nella +finestra di visualizzazione inserisce la parola stessa nel campo di +ricerca semplice.

+ + +

Puoi usare la voce di menu Strumenti/Ricerca avanzata +per aprire la finestra di dialogo per ricerche più complesse.

+ + +
+ + +
+
+

3.2. La lista dei risultati

+ + +

Lanciata la ricerca verrà immediatamente mostrata +nella finestra principale la lista dei risultati.

+ + +

Per default, i documenti sono presentati in ordine di +rilevanza (nel +limite in cui il sistema riesce a stimare la rilevanza). Puoi ordinarli +in maniera diversa usando la voce di menu Strumenti / Ordina: scegli +parametri.

+ + +

Se clicchi sul link Preview +di uno dei +risultati si pare una finestra di Visualizzaxione interna col testo del +documento. Un ulteriore clic sul link Preview di un altro risultato, +aprirà una seconda linguetta. Puoi usare  Shift+Click +per forzare l'apertura di una seconda finestra di visualizzazione che +può essere utile per vedere ad esempio due pagine dello +stesso +documento.

+ + +

Cliccando sul link Edit +verrà +aperto un visualizzatore esterno (generalmente il programma che ha +creato il file). Il programma che deve essere aperto viene configurato +attraverso il dialogo di preferenze, oppure editando il file di +configurazione mimeview.

+ + +

I link Preview +e Edit possono non essere +presenti per tutti i risultati. Ciò significa che Recoll +non ha la configurazione necessaria per la visualizzazione di un +determinato tipo di file (che quindi sarà stato indicizzato +solo +per nome), o non sa con quale programma esterno aprirlo. Spesso +ciò può essere sistemato con apposite aggiunte ai +files +di configurazione mimemap e mimeview +(l'ultimo può essere modificato con la finestra di dialogo +delle preferenza).

+ + +

Cliccando sul link Dettagli ricerca nella parte superiore +della +finestra di ricerca verrò mostrata la stringa di ricerca +utilizzata, dopo l'eventuale applicazione dello stemming e/o di altri +processi.

+ + +

Un doppio clic su qualsiasi parola della finestra di +visualizzazione +inserice  tale parola nel campo di ricerca semplice. Un doppio +clic su qualsiasi parola della lista dei risultati avrà lo +stesso risultato.

+ + +

La lsista dei risultati è divisa in pagine (il +numero di +risultati per pagina può essere impostato nelle preferenze). +Passi da una pagina all'altra con i tasti frecce della tastiera oppure +col link a fondo pagina  della lista dei risultati.

+ + +
+
+

3.2.1. Il clic col tasto +destro del mouse sulla lista dei risultati

+ + +

Oltre ai links preview ed edit, puoi ottenere un +menu pop-up menu cliccando col tasto destro su di una linea +della +lista dei risultati. Il menu ha le seguenti voci:

+ + +
    + + +
  • + +

    Preview

    + + +
  • + + +
  • + +

    Edita

    + + +
  • + + +
  • + +

    Copia il nome del file

    + + +
  • + + +
  • + +

    Copia l'Url

    + + +
  • + + +
  • + +

    Trova documenti simili

    + + +
  • + + +
  • + +

    Apri cartella del +documento

    + + +
  • + + +
+ + +

Le voci Preview +e Edita hanno la +stessa funzione dei links corrispondenti. 

+ + +

Le due voci seguenti copiano rispettivamente l'indirizzo e il +nome + o l'url del file nella clipboard per poterli incollare in +un'altra applicazione.

+ + +

La voce Trova documenti simili seleziona +un certo numero di parole rilevanti del documento e le scrive nella +casella di ricerca semplice ed effettua la ricerca per trovare +documenti correlati con quello di partenza.

+ + +La voce Apri cartella del documento apre la cartella ove si trova il +documento (il programma per l'apertura della cartella si imposta nei +files di configurazione. Di default è Rox). +
+ + +
+ + +
+
+

3.3. La finestra di visualizzazione

+ + +

La finestra di visualizzazione si apre cliccando sul +link Preview nella +lista dei risultati.

+ + +

Una successiva richiesta di visualizzazione apre una nuova +linguetta nella finestra di visualizzazione stessa.

+ + +

Eseguendo una nuova ricerca e attivando la finestra di +visualizzazione, se ne aprirà una seconda mentre la prima +resta +aperta fintanto che non venga chiusa.

+ + +

Puoi chiudere una linguetta della finestra di visualizzazione +coi tasti ^W (Ctrl + W) +sulla finestra. Chiudendo l'ultima linguetta chiudi anche la finestra.

+ + +

Naturalmente puoi chiudere la linguetta (e la finestra) col +bottone Chiudi Tab nella parte superiore della finestra stessa.

+ + +

Puoi vedere documenti successivi o precedenti della lista dei +risultati nella finestra di visualizzazione con i tasti Shift+Down +or Shift+Up +(dove Down e Up sono i tasti freccia).

+ + +

La finestra di visualizzazione ha una ricerca interna. Puoi +iniziare +la ricerca scrivendo una slash (/) all'interno del testo o tramite la +casella per la ricerca , immettendo il testo da cercare e premendo il +tasto cerca. Puoi +usare i tasti Seguente +e Precedente per trovare ricorrenze successive o precedenti. Puoi anche +usare il tasto F3, all'interno dell'area di testo, per trovare la +prossima ricorrenza.

+ + +

Se hai immesso dei termini di ricerca e usi i +tasti ^Up/^Down +per passare da un documento all'altro, la ricerca inizia con ogni nuovo +documento. Se il termine di ricerca è trovato, il cursore si +posiziona sulla prima ricorrenza.

+ + +
+ + +
+
Nessuna parola +
    + + +
  • + +

    Tutte le parole.

    + + +
  • + + +
  • + +

    Qualsiasi parola.

    + + +
  • + + +
  • + +

    None of the terms.

    + + +
  • + + +
  • + +

    Questa frase (le parole esatte nell'ordine preciso in +campi numerata).

    + + +
  • + + +
  • + +

    Parole simili (parole in qualsiasi ordine in campi +numerati).condizione

    + + +
  • + + +
  • + +

    Nome del file con Caratteri Jolly.

    + + +
  • + + +
+ + +
+ + +
+ + +

Altri campi possono essere creati cliccando sul bottone +Aggiungi condizione.

+ + +

Tutti i campi saranno tra loro combinati con le clausole AND o +OR. +Tutti i tipi di condizioni, ad eccezione di "Questa frase" e "Parole +simili" accettano un insieme di parole singole e frasi (racchiuse tra +virgolette). L'espansione (Stemming) viene fatta per tutte le parole +che non iniziano con una maiuscola, ma non per le frasi.

+ + +

La ricerca avanzata permette di cercare tra documenti di un +tipo specifico (ad esmpio: solo testo semplice, o testo rtf, o testo/HTML o application/pdf +ecc...). La selzione del tipo di file (mime) può essere +salvata +come default. (il filtro non sarà attivato al lancio di +recoll, +ma la lista sarà presente come era stata salvata).

+ + +

Si può anche restringere la ricerca ad un sotto +insieme delle +cartelle indicizzate. Se questa è un'opzione che usi spesso, +puoi anche pensare a fare diversi indici così da migliorare +la +performance.

+ + +

Per iniziare la ricerca clicca sul bottone Cerca o premi Enter in qualsiasi +campo di ricerca. Il +bottone nella finestra principale esegue sempre e solo una ricerca +semplice.

+ + +

Clicca sul link 'mostra stringa' in alto nella finestra +principale per vedere la stringa di ricerca applicata.

+ + +
+ + +
+
+

3.5. Il terminale di +esplorazione

+ + +

Recoll utilizza +automaticamente +l'espansione dei termini di ricerca ai loro derivati (ad esempio: +plurali/singolare, coniugazioni dei verbi). Ma ci sono altri casi in +cui l'estto termine di ricerca non è conosciuto. Ad esempio +potresti ricordarti la pronincia ma non come il termine viene scritto, +oppure conoscere solamente l'inizio della parola da cercare.

+ + +

Il terminale di esplorazione (lanciato tramite la sua piccola +icona nella finestra principale o dal menu 'Strumenti') +può essere usato per le ricerche nell'indice del + database. Ha tre modi operativi:

+ + +
+
+ + +
Caratteri Jolly
+ + +
+ +

In questo modo operativo si possono usare stringhe con +caratteri jolly (*, +?). ad esempio: xapi* +.

+ + +
+ + +
Espressioni regolari
+ + +
+ +

In questa modalità sono accettate le +espressioni regolari. Esempio: word[0-9]+ +.

+ + +
+ + +
Espansione grammaticale
+ + +
+ +

Questa modalità esegue la normale espansione +(stemming). +In questo senso è utile per mostrare il suo funzionamento.

+ + +
+ + +
Ortografia/Fonetica
+ + +
+ +

In questa modalità si inserisce il termine come +si pensa sia scritto e Recoll +farà del suo meglio per trovare termini inseriti nel suo +indice che suonino simili. Questa modalità usa Aspell, +che quindi deve essere installata sul vostro sistema +affinchè le +cose funzionino per il verso giusto. La lingua usata nella costruzione +del dizionario (cosa che avviene alla fine dell'indicizzazione) +è quella di sistema. Cose strane possono accadere se +più +lingue sono mischiate.

+ + +
+ + +
+ + +
+ + +

Nota che nel caso Recoll +non conosca l'inizio della parola da cercare(ad esempio un carattere +jolly come *asa), +l'espansione può richiedere un certo tempo perchè +la +ricercaviene fatta sull'indice completo. L'espansione al momento +è limitata ai primi 200 risultati nel caso di caratteri +jolly o +espressioni regolari.

+ + +

Un doppio clic su di un termine nella lista dei risultati lo +inserisce nella casella della ricerca semplice nella finestra +principale. Si può naturalmente nche copiare e incollare tra +la +lista dei risultati e la casella di ricerca.

+ + +
+ + +
+
+

3.6. Database multipli

+ + +

Database e indici multipli di Recoll +dpossono essere creati usando differenti cartelle di configurazione che +conterranno di norma differenti indici per differenti aree del file +system. Un indice specifico può essere selezionato per +aggiornarlo o per effettuare una ricerca usando la variabile di +sistema RECOLL_CONFDIR +oppure lìopzione -c +di recoll e recollindex.

+ + +

Una istanza di recollindex +può aggiornare o indicizzare solo un indice specifico.

+ + +

Una istanza di recoll +è anche associata ad un indice specifico, che è +quello +che viene aggiornato, ma si possono usare più indici +di Recoll per la +ricerca. Gli indici esterni possono essere selezionati tramite la +linguetta Indici esterni nel dialogo delle preferenze.

+ + +

La selezione dell'indice viene fatta in due fasi Un set di +indici +utilizzabili deve essere prima definito, e dopo si può +indicare +un sotto insieme di indici da usare per la ricerca. Naturalmente questi +parametri sono conservati da una esecuzione del programma ad un'altra +(sono registrati separatamente per ogni configurazione di Recoll). Il set di tutti gli +indici è generalmente fisso, mentre l'indice attivo viene +probabilmente cambiato frequentemente.

+ + +

L'indice principale (definito da RECOLL_CONFDIR) +è sempre attivo. +Se ciò non è desiderabile, puoi far sì +che la tua +configurazione punti all'indicizzazione di una cartella vuota.

+ + +

Poichè costruire tutti gli indici può +essere noioso se +fatto dall'interfaccia grafica si può usare la variabile di +sistema RECOLL_EXTRA_DBS +per costruire il set +iniziale. Questo lo fa normalmente l'amministratore del sistema +così che non debba farlo ogni utente. La variabile dovrebbe +definire una lista separata da due punti delle cartelle da indicizzare. +Ad esempio:

+ + +
export RECOLL_EXTRA_DBS=/qualche/cartella/xapiandb:/qualche/altra/db
+ + +

Un tipico scenario d'uso per gli indici multipli per un +amministratore potrebbe essere la creazione di un indice di dati comuni +su cui tu potresti fare una ricerca e un indice per i tuoi dati +personali. Naturalmente ci sono altre possibilità. +Ci sono molti casi in cui conosci il sotto insieme di cartelle che devi +esaminare per trovare il risultato e quindi , restringendo il campo di +ricerca, è possibile aumentare l'efficenza e la precisione +della +ricerca stessa. Ciò può essere fatto anche con +l'opzione +che limita le cartelle su cui si effettua la ricerca nella finestra +della ricerca avanzata, ma l'indicizzazione multipla può +aumentare la performance e valere la pena di essere provata.

+ + +
+ + +
+
+

3.7. Storia dei documenti

+ + +

I documenti che hai visto col visualizzatore o con un +programma +esterno sono annotati nello storico dei documenti e quindi ricordati. +Puoi vedere la lista dello storico con la voce di menu Strumenti/Storia documenti.

+ + +
+ + +
+
+

3.8. Ordinare il risultato della +ricerca

+ + +

I documenti nella lista dei risultati sono normalmente +ordinati in +base della loro rilevanza. E' possibile specificare un diverso criterio +usano la finestra di dialogo Ordina risultati +(localizzata nel menu Strumenti).

+ + +

Lo strumento ordina un numero di documenti ordinati per +rilevanza in base a determinati criteri. I criteri attualmente sono la data e il tipo mime.

+ + +

La scelta per l'ordinamento resta invariata sino a quando non +viene +cambiata o il programma non viene chiuso. Il tipo di ordinamento +è indicato all'inizio della lista dei risultati.

+ + +
+ + +
+
+

3.9. Consigli per la ricerca, +scorciatoie

+ + +
+

Completamento della parola. I +tasti Esc Spaceifinchè +si sta scrivendo una parola nella casella di ricerca semplice +completano la stessa se essa è unica nel database, +altrimenti +aprono una finestra da cui si pppuò scegliere fra le parole +suggerite.

+ + +
+ + +
+

Prendere nuove parole dalla lista dei risultati o +dalla finestra di visualizzazione. +Un doppio clic su una parola nella lista dei risultati o nel testo +della finestra di visualizzazionie copia la stessa nella casella di +ricerca semplice.

+ + +
+ + +
+

Disabilitare l'espansione (stemming). +Scrivendo una parola nella casella di ricerca con la prima lettera +maiuscola disabilita l'espansione (nessuna ricerca per casino +se hai inserito Casa). +Questo è l'unico caso in cui le maiuscole o minuscole hanno +importanza nella ricerca. E' anche possibile eliminare l'espansione +(stemming) o cambiare la lingua nelle preferenze.

+ + +
+ + +
+

Frasi. Per cercare una frase basta +racchiuderla tra virgolette. Esempio: +"user manual" +cercherà per tutte le ricorrenze di 'user' seguito +immediatamente da 'manual'. Puoi anche usare il campo 'Questa frase' +nel dialogo avanzato di ricerca con lo stesso effetto. +Frasi possono essere immesse insieme a parole sia nella casella di +ricerca semplice che nelle caselle della ricerca avanzata, con +escluione della casell 'Questa frase'.

+ + +
+ + +
+

Scorrere la lista dei risultati nella finestra di +visualizzazione (1.5). I tasti  Shift-Down +o Shift-Up (Shift ++una freccia) nella finestra di visualizzazione mostra il documento +successivo o precedente della lista dei risultati. Ogni ricerca +secondaria attualmente attiva verrà eseguita nel nuovo +documento.

+ + +
+ + +
+

Forzare l'apertura di una nuova finestra di +visualizzazione (1.6). Con Shift+Click +sul link Preview +di un risultato della lista dei risultati si apre una nuova finestra di +visualizzazione invece di una nuova linguetta su quella già +visualizzata.

+ + +
+ + +
+

Aggiungi automaticamente frase (1.5). +Questa opzione +può essere impostata nella finestra di configurazione. +Quando +è settata sarà costruita automaticamente una +frase con le +parole della ricerca e aggiunta alla ricerca se è impostata +a +'Qualsiasi parola'I. Ciò non cambia radicalmente il +risultato +della ricerca, ma aumenta la rilevanza per quei documenti dove le +parole cercate costituiscono una frase. ad esempio: cercando le +parole virtual reality +saranno comunque +trovati tutti i documenti contenenti le parole 'virtual', 'reality' o +entrambe, ma in cima alla lista appariranno i documenti, se ci sono, +che contengono la frase 'virtual reality.

+ + +
+ + +
+

Trovare documenti simili. Se nel menu che +appare cliccando +col taso destro nella lista dei risultati si sceglie la voce 'Documenti +simili', un numero di parole 'interessanti' contenute nel documento +selezionato viene messo nella casella di ricerca semplice e viene +avviata una nuova ricerca. In questo modo, eventualmente editando +ulteriormente la casella di ricerca semplice, puoi trovare documenti in +qualche maniera simili o correlati al primo.

+ + +
+ + +
+

Nome file. Durante l'indicizzazione sono +aggiunti anche i nomi dei files. Puoi quindi inserirli come un normale +termine di ricerca (Recoll +indicizzava tutte le cartelle come termini. Questo però +è +stato abbandonato non sembrando molto utilel). In alternativa puoi +usare l'opzione 'Nome file' e la ricerca avverrà +esclusivamente +tra i nomi dei files (in tal caso è possibile usare i +caratteri jolly).

+ + +
+ + +
+

Stringa di ricerca. Puoi vedere la stringa +con cui è +stata effettuata la ricerca, incluse le espansioni e gli operatori +Booleani, cliccando sul link 'mostra stringa' all'inizio della lista +dei risultati.

+ + +
+ + +
+

Chiudere la finestra di visualizzazione. Il +tasto ^W in una linguetta, la +chiude +(e, se questa è l'ultima linguetta, chiude anche la +finestra). Il tasto Esc +chiude tutte le linguette e la finestra di visualizzazione.

+ + +
+ + +
+

Chiudere il programma. Il tast ^Q quasi dappertutto chiude il +programma.

+ + +
+ + +
+ + +
+
+

3.10. Personalizzare l'interfaccia +di ricerca

+ + +

E' possibile personalizzare alcuni aspetti dell'interfaccia di +ricerca usando la voce 'configurazione ricerca' del menu 'Preferenze'.

+ + +

Ci sono due linguette nella finestra di dialogo che riguardano +l'interfaccia stessa e i criteri adottati per la ricerca e la +presentazione dei risultati.

+ + +
+

Interfaccia utente:

+ + +
    + + +
  • + +

    Numero di risultati +per pagina

    + + +
  • + + +
  • + +

    Fonts per la lista dei +risultati: +Ci sono molte informazioni visualizzate nella lista dei risultati e +potresti voler personalizzare i caratteri e la loro dimensioneT. I +caratteri usati da Recoll +sono quelli della tua configurazione di  QT(prova il +comando qtconfig).

    + + +
  • + + +
  • + +

    Stringa di +formattazione dei risultati: +ti permette di cambiare la presentazione di ciascun risultato nella +lista. Usa string del tipo qt-html dove le seguenti sostituzioni, in +modo simile al comando +printf %, vengono fatte:

    + + + +
      + + +
    • + +
      + +

      %A. Riassunto

      + + +
      + + +
    • + + +
    • + +
      + +

      %D. Data

      + + +
      + + +
    • + + +
    • + +
      + +

      %K. Parole chiave (se ci sono)

      + + +
      + + +
    • + + +
    • + +
      + +

      %L. links Preview e Edit

      + + +
      + + +
    • + + +
    • + +
      + +

      %M. Tipo Mime

      + + +
      + + +
    • + + +
    • + +
      + +

      %N. Numero del risultato

      + + +
      + + +
    • + + +
    • + +
      + +

      %R. Rilevanza in %

      + + +
      + + +
    • + + +
    • + +
      + +

      %S. Grandezza

      + + +
      + + +
    • + + +
    • + +
      + +

      %T. Titolo

      + + +
      + + +
    • + + +
    • + +
      + +

      %U. Url

      + + +
      + + +
    • + + + +
    + + +I valori di default value per la stringa sono: + +
    %R %S %L &nbsp;&nbsp;<b>%T</b><br>
    %M&nbsp;%D&nbsp;&nbsp;&nbsp;<i>%U</i><br>
    %A %K

    + + +Puoi provare, ad esempio, la seguente stringa per una lista +più simile all'esperienza del Web: + +
    <u><b><a href="P%N">%T</a></b></u>&nbsp;%R&nbsp;%D<br>
    %A<font color=#B22C1D>%U - %M - %S</font> - %L

    + + +Il formato dei links Preview e Edit è <a +href="Pdocnum"> +and <a href="Edocnum"> +where docnum +è quello che %N dovrebbe stampare. Questo rende il titolo +nel +formato dell'esempio un link per la finestra di visualizzazione.
    + + +
    + + +
  • + + +
  • + +

    Browser HTML: +qui puoi scegliere il browser preferito, che verrà avviato +col menu 'Aiuto' per leggere il manuale utente. Puoi inserire +semplicemente il nome, se il browser è nel tuo path, oppure +l'indirizzo completo.

    + + +
  • + + +
  • + +

    Mostra le icone nella +lista dei risultati: +le icone nella lista dei risultati possono essere disabilitate. Portano +via molta memoria e tutto sommato non contengono informazioni +essenziali.

    + + +
  • + + +
  • + +

    Inizia la ricerca +quando digiti uno spazio: +se lo contrassegni, la ricerca inizia non appena digiti uno spazio +nella casella di ricerca. Questo ti permette di vedere i risultati +prima di immettere una seconda parola. E' disabilitato per default, che +ti piaccia o no...

    + + +
  • + + +
+ + +
+ + +
+ + +
+ + +
+

Parametri di ricerca:

+ + +
    + + +
  • + +

    Lingua +per l'espansione +grammaticale: l'espansione (stemming) dipende evidentemente dalla +lingua. Qui puoi scegliere tra le lingue con cui sono stati costruiti i +database di espansione durante l'indicizzazione (questo viene stabilito +nel  file +principale di configurazione), o pià tardi +aggiunto col comando recollindex +-s +(Vedi il manuale per recollindex). Le lingue di espansione aggiunte +dinamicamente saranno cancellate alla successiva indicizzazione, a meno +che non siano aggiunte al file di configurazione principale.

    + + +
  • + + +
  • + +

    Costruisci +dinamicamente il riassunto: questo decide se Recoll +cerca di costruire un riassunto del documento quando lo mostra nella +lista dei risultati. I riassunti vengono costruiti prendendo +informazioni dal contesto del documento attorno alle parole trovate. +Questo può rallentare la visualizzazione della lista dei +risultati per grossi documenti e, se vuoi, puoi disabilitarlo.

    + + +
  • + + +
  • + +

    Rimpiazza i riassunti +esistenti nel documento: questo decide se costruire un +riassunto al posto un riassunto già esistente nel documento.

    + + +
  • + + +
  • + +

    Numero caratteri per +il riassunto: scegli quello che preferisci...

    + + +
  • + + +
  • + +

    numero di parole +del riassunto per +ogni termine nel documento: quante parole devono essere mostrate +intorno ad ogni ricorrenza trovata nel documento.

    + + +
  • + + +
+ + +
+ + +
+ + +
+ + +
+

Indici +esterni: +Questa linguetta ti permette di navigare eventuali altri indici su cui +vorresti effettuare la ricerca. Gli indici esterni sono assegnati dalla +cartella del loro database (ad esempio: /home/someothergui/.recoll/xapiandb, +/usr/local/recollglobal/xapiandb).

+ + +
+ + +

Una volta scelto, l'indice apparirà nella lista +'Tutti gli +indici', e puoi scegliere quale usare spstandolo alla/dalla lista +'Indici attivi'.

+ + +

Il tuo database (quello della configueazione attuale) +è +sempre implicitamente attivo. Se ciò non è +desiderabile, +puoi sempre fare una configurazione che indicizzi, ad esempio, una +cartella vuota.

+ + +
+ + +
+ + +
+
+

Capitolo +4. Installazione

+ + +
+

4.1. Installare un pacchetto +pre-compilato

+ + +

L'installazione binaria di Recoll è sempre lincata +staticamente alla libreria di xapian , e non ha altre +dipendenze. Devi solo eventualmente installare i  pacchetti esterni per +i tipi di files che vuoi indicizzare diversi da testo, HTML ed e-mail.

+ + +
+
+

4.1.1. Installazione con +un programma di installazione

+ + +

Se usi un sistem del tipo BSD o sistemi che usano pacchetti +pre-compilati (RPM o altri), segui semplicemente le procedure usuali, e +magari dai un'occhiata alla  sezione +di configurazione (anche se non è necessario per +provare il programma con i parametri di default).

+ + +
+ + +
+
+

4.1.2. Installare Recoll +pre-compilato

+ + +

I pacchetti binari sono semplicemente un insieme di cartelle +compresse dove solo le parti utili sono conservate (gli esguibili e la +configurazione di esempio).

+ + +

I binari eseguibili sono compilati con un link statico alla +libreria libxapian e libiconv, tper rendere l'installazione +più semplice(nessuna dipendenza). Questo comunque significa +che +non potete cambiare le versioni che sono state usate.

+ + +

Dopo l'estrazione del file tar, procedi con l'installazione +come se avessi compilato il tutto da sorgente (ciò significa +dare il comando make install). L'albero delle +cartelle va in /usr/local.

+ + +

Puoi inoltre desiderare di installare le applicazioni esterne +necessarie per processare determinati tipi di files (ad esempio: +acrobat, postscript ...). Vedi la prossima sessione.

+ + +

Alla fine, se vuoi, dòà un'occhiata +alla  sezione di +configurazione.

+ + +
+ + +
+ + +
+
+

4.2. Pacchetti esterni +utilizzabili

+ + +

Recollusa +applicazioni esterne per +indicizzare alcuni tipi di files. +Devi quindi installare quelle necessarie ai tipi di files che vuoi +indicizzare (queste sono dipendenze di run-time. Nessuna di queste +applicazioni è necessaria per compilare Recoll):

+ + +
    + + +
  • + +

    Openoffice: è supportato nativamente, ma +necessita del programma unzip, +che quindi deve essere installato.

    + + +
  • + + +
  • + +

    PDF: pdftotext è parte del pacchetto Xpdf.

    + + +
  • + + +
  • + +

    Postscript: pstotext.

    + + +
  • + + +
  • + +

    MS Word: antiword.

    + + +
  • + + +
  • + +

    MS Excel and PowerPoint: catdoc.

    + + +
  • + + +
  • + +

    RTF: unrtf

    + + +
  • + + +
  • + +

    dvi: dvips

    + + +
  • + + +
  • + +

    djvu: DjVuLibre

    + + +
  • + + +
  • + +

    MP3: Recoll +usa il comado id3info del +pacchetto id3lib per estrarre i tag. Senza +questo pacchetto, solo i nomi saranno indicizzati.

    + + +
  • + + +
+ + +

Text, HTML, cartelle e-mail e files Openoffice sono processati +internamente.

+ + +
+ + +
+
+

4.3. Compilare da sorgente

+ + +
+

4.3.1. Prerequisiti

+ + +

Come minimo è necessario scaricare e installare il +pacchetto xapian core (Recoll attualmente usa la +versione 0.attualmente usa le versionidevelopment currently +uses +version 3.3.5, ma qualsiasi versione 3.3 probabilmente è OK).

+ + +

Quasi certamente sarete in grado di trovare un pacchetto +binario per qt +per il vostro sistema, ma probabilmente dovrete compilare Xapian, ma questo non +è difficile (se stai usando FreeBSD, c'è un +port).

+ + +

Ti serve anche libiconv. +Recoll attualmente usa la +versione 1.9 +(questo non dovrebbe essere critico). Sui sistemi Linux, l'interfaccia iconv fa +parte di libc e quindi non dovrebbe essere necessario fare niente di +speciale.

+ + +
+ + +
+
+

4.3.2. Compilazione

+ + +

Recoll +è stato compilato su Linux (redhat7.3, mandriva 2005/6, +Fedora Core 3/4/5, Ubuntu Edgy 64bit), FreeBSD e Solaris 8. Se lo +compili su un altro sistema, Idesidererei +vivamente ricevere eventuali patches.

+ + +

A seconad della configurazione di qt +nel vostro sistema, potreste dover settare le variabili di +sistema QTDIR e QMAKESPECS:

+ + +
    + + +
  • + +

    QTDIR dovrebbe +puntare alla cartell superiore a quella che contiene i files 'include' +di qt (ad esempio: se qt.h +è in /usr/local/qt/include/qt.h, +QTDIR dovrebbe essere /usr/local/qt).

    + + +
  • + + +
  • + +

    QMAKESPECS +dovrebbe puntare ad una delle sotto-cartelle mkspecs di qt (ad esempio: linux-g++).

    + + +
  • + + +
+ + +

Su molti sistemi Linux, QTDIR +è settata dallo script di login, e +QMAKESPECS inon +è becessaria perchè c'è un link +simbolico in mkspecs/.

+ + +
+

Opzioni per configure: --without-aspell +disabilita il codice per la ricerca fonetica. --with-fam +o --with-inotify +abilita il codice per l'indicizzazione in tempo reale real time +indexing. Il supporto inotify è abilitato di default nei +sistemi +Linux recenti.

+ + +
+ + +

Procedura normale:

+ + +
 cd recoll-xxx
configure
make +
+ + +

Piccola auto-configurazione. Lo script di configurazione +essenzialmente linca uno dei files specifici del sistema nella cartella +mk alla cartella mk/sysconf. Se il vostro sistema non è +attualmente conosciuto ve lo dirà e, se volete, potete +copiare e +modificare manualmente uno dei files esistenti (il nome del file +dovrebbe essere il risultato del comando uname -s).

+ + +
+ + +
+
+

4.3.3. Installazione

+ + +

Dai il comado make +install oppure esegui recollinstall +prefix, +nella cartella root. Questo copierà gli eseguibili nella +cartella prefix/bin +e gli esempi di configurazione, +scripts e altri dati nella cartella prefix/share/recoll.

+ + +

Se il prefisso di installazione dato al comando recollinstall +è differente da quello usato eseguendo il comando configure, +dovete settare la variabile di sistema RECOLL_DATADIR +per indicare dove sono i dati comuni.

+ + +

Potete poi procedere alla  configurazione.

+ + +
+ + +
+ + +
+
+

4.4. Panoramica della +configurazione

+ + +

La maggior +parte dei parametri specifici della GUI di Recoll sono +determinati attraverso il menu 'Preferenze'e salvate nlla cartella +standard delle applicazion QT ($HOME/.qt/recollrc). +probabilmnete non hai alcuna necessità di editare tale file.

+ + +

Per altre opzioni, Recoll +usa files di +configurazione testuali. Al momento devi editarli a mano +(c'è +ancora qualche speranza per uno strimento di configurazione grafico in +futuro). La più accurata documentazione per i parametri di +configurazione si trova nei commenti negli stessi files di default e +qui quindi troverai una semplice panoramica.

+ + +

Ci sono due insiemi di files di configurazione. Quelli per la +configurazione generale del sistema si trovano nella cartella /usr/[local/]share/recoll/examples, +e definiscono i valori di default per tutto il sistema. Un insieme +parallelo di files di configurazione esiste nella cartella +.recoll nella tua cartella +home. Questa cartella può essere cambiata con la variabile +di sistema RECOLL_CONFDIR +o con l'opzione -c per recoll +e recollindex.

+ + +

Se la cartella .recoll +non esiste, essa viene creata lanciando la prima volta recoll o recollindex, +e viene riempita con un insieme vuoto di files di configurazione. recoll vi dà la scelta +se editare i files di configurazione prima di iniziare la creazione +dell'indice, recollindex +invece procederà immediatamente.

+ + +

Tutti ifiles di configurazione hanno lo stesso formato. Ad +esempio, +un piccolo estratto del file di configurazione principale +può +essere simile al seguente::

+ + +
 # Space-separated list of directories to index.
topdirs = ~/docs /usr/share/doc

[~/somedirectory-with-utf8-txt-files]
defaultcharset = utf-8

+ + +

Ci sono tre specie di linne:

+ + +
    + + +
  • + +

    Commenti (iniziano con #) o sono vuoti.

    + + +
  • + + +
  • + +

    Settaggio dei parametri (nome = +valore).

    + + +
  • + + +
  • + +

    Definizione delle sezioni ([nome di qualche cartella]).

    + + +
  • + + +
+ + +

La definizione delle sezioni permette di ridefinire alcuni +parametri  per le sotto-cartelle. Restano effettivi +sinchè +viene trovata un'altra definizione di sezione, o si arriva alla fine +del file. Alcuni dei parametri usati per l'indicizzazione sono +considerati partendo dalla cartella attuale e salendo. Non tutti i +parametri possono essere ridefiniti in maniera comprensibile, ma questo +sarà spiegato di seguito nella prossima sezione.

+ + +

La tilde (~) indica l'indirizzo completo della +cartella dell'utente.

+ + +

Spazi vuoti sono usati come separatori nelle liste. Elementi +che +contengono spazi devono pertanto essere racchiusi tra virgolette.

+ + +
+
+

4.4.1. File di +configurazione principale

+ + +

recoll.conf +è il file di configurazione principale Definisce cosa +indicizzareIt  (cartella radice e cose da ignorare), e il set +di caratteri di default da usare per i documenti che non lo definiscono +specificamente al loro interno.

+ + +

La configurazione di default indicizzerò la vostra +cartella home intera. Se questo non va bene lanciate  recoll +per creare un set di configurazione vuoto, cliccate su Cancel, ed editate i files di +configurazione prima di lanciare nuovamente recoll (o recollindex). +Verrà così iniziata l'indicizzazione, cosa che +può richiedere un certo tempo.

+ + +

Parametri:

+ + +
+
+ + +
topdirs
+ + +
+ +

Specifica la lista di cartelle e/o files da indicizzare +(recursivamente per le cartelle). L0indicizzazione non segue eventuali +liks simbolici all'interno dell'albero delle cartelle. Se la cartella +radice è un link simbolico, l'indicizzazione non inizia e +viene mostrato un avviso di errore.

+ + +
+ + +
dbdir
+ + +
+ +

E' il nome della cartella Xapian dei dati. La +cartella, se necessario, verrà creata all'inizio +dell'indicizzazione. Se non è un indirizzo assoluto, +verrà interpretato come relativo alla cartella di +configurazioneI.

+ + +
+ + +
skippedNames
+ + +
+ +

Una lista di cartelle e nomi di files, separati da uno +spazio vuoto, di ciò che deve essere completamente ignorato +dal processo di indicizzazione. The list defined in La lista di default +è:e default file is:

+ + + +
*~ #* bin CVS Cache caughtspam tmp
+ + + +

Alla lista possono essere aggiunte sotto-cartelle, che +però devono essere nell'albero delle cartelle definite in topdirs.

+ + + +

Le cartelle presenti in topdirs +non risentono di eventuali omonimi in skippedNames +(vale a dire che una cartella scritta in topdirs +viene indicizzata comunque, anche se il suo nome compare nella lista di + skippedNames).

+ + + +

La lista della configurazione di default non esclude le +cartelle nascoste (nomi preceduti da un punto), il che significa che +verranno indicizzte anche alcune cose che non vorreste. D'altra parte i +programmi di posta, come thunderbird, +normalmente salvano i messaggi in cartelle nascoste e probabilmente +volete indicizzarli. Una possibile soluzione è avere .* in skippedNames, +e aggiungere qualcosa come  ~/.thunderbird +o ~/.evolution in topdirs.

+ + +
+ + +
loglevel,daemloglevel
+ + +
+ +

Livello di verbosità per recoll e recollindex. +Un valore di 4 produce molti messaggi di +debug/informationi. 2 solo una lista di errori. Daemversion +è specifico al demone che monitorizza l'indicizzazione.

+ + +
+ + +
logfilename, +daemlogfilename
+ + +
+ +

Dove vanno i messaggi. 'stderr' può essere +usato come valore speciale, ed è quello di default.

+ + +
+ + +
filtersdir
+ + +
+ +

La cartella ove cercare gli sripts esterni necessari ad +indicizzare alcuni tipi di files. Non dovrebbe esserci motivo per +cambiarlo, a meno che non vogliate modificare gli script originali +mettendoli altrove. Il valore può essere ridefinito per ogni +sott-cartella.

+ + +
+ + +
indexstemminglanguages
+ + +
+ +

Una lista di lingue per le quali verrà +costruito il database per l'espansione grammaticale. Guardate +recollindex(1) per possibili valori (man recollindex). Puoi aggiungere +un database per qualsiasi lingua usando il comando recollindex +-s, ma tale database verrà cancellato alla +successiva re-indicizzazione Soltanto i database delle ingue listate +nella configurazione sono permanenti.

+ + +
+ + +
defaultcharset
+ + +
+ +

Nome del set di caratteri usati per files che non hanno +una definizione dei caratteri (ad esempio: files plain text). +Può essere definito per ogni sub-cartella, se non +è dato alcun set di caratteriviene utilizzato quello di +sistema (LC_ALL, +LC_CTYPE, LANG), or iso8859-1.

+ + +
+ + +
guesscharset
+ + +
+ +

Decide se cercare di indovinare il set di caratteri del +documanto qualora questo non sia specificato nel documento stesso +(ad esempio: files plain text). Ciò non funziona bene in +molti casi, e probabilmente non dovrebbe essere usato.

+ + +
+ + +
usesystemfilecommand
+ + +
+ +

Decide se usare il comando di sistema file -i per determinare il tipo +mime del file (la procedura normale usa l'associazione dei suffissi +come definiti nel file  mimemap). +Ciò può essere utile per files senza suffisso, ma +causa anche l'indicizzazione di molti strani files di "testo".

+ + +
+ + +
indexallfilenames
+ + +
+ +

Recoll +indicizza i nomi dei files in una speciale sezione del database per +permettere le ricerche dei nomi dei files anche con i caratteri jolly +Questo parametro decide se indicizzare solo i nomi di files che hanno +un suffisso che ne permette l'indicizzazione completa, o se +indicizzarli tutti indipendentemente dal suffisso.

+ + +
+ + +
idxabsmlen
+ + +
+ +

Recoll salva +un riassunto per ogni file indicizzato nel database. Questo +è quello che viene mostrato nella lista dei risultati senza +dover leggere il file originale. Questo parametro definisce la +dimensione del riassunto salvato (che può provenire +dall'attuale sezione o dall'inizio del testo). Il valore di default +è +250 caratteri.

+ + +
+ + +
iconsdir
+ + +
+ +

Il nome della cartella dove si trovano le icone che +vengono mostrate nella lista dei risultati. La puoi cambiare se vuoi +immagini differenti.

+ + +
+ + +
+ + +
+ + +
+ + +
+
+

4.4.2. Il file mimemap

+ + +

mimemap specifica +l'estensione mime del file per la sua mappatura nei tipi mime.

+ + +

Per i files senza un'estensione o con un'estensione non +riconosciuta viene eseguito il comando di sistema file +-i per determinarne  il tipo mime (ciò +può essere disbilitato nel file di configurazione).

+ + +

La mappatura può essere specificata su una base di +sotto-cartelle, cosa che può essere utile in certe +occasioni. Esempio: i logs di gaim hanno un'estensione .txt ma dovrebbero essere +trattai diversamente, cosa che è possibile perchè +essi generalmente sono posti in ina specifica cartella.

+ + +

mimemap ha anche +una variabile recoll_noindex +che è una lista di suffissi. I files con tali suffissi +vengono ignorati (il che evita decompressioni o esecuzioni non +necessarie ). Questo è una duplicazione parziale +della variabile skippedNames +inel file di configurazione principale, però con due +differenza: non riguarda le cartelle, e non può dipendere +dalla locazione nel file system (è un parametro di +configurazione generale). Potete quindi fare con skippedNames tutto quello che fa recoll_noindex. L'ultimo +parametro è usato normalmente per cose che si sa non sono +indicizzabili con una determinata versione di Recoll. Mettendole in questo +file si evita di toccare la variabile skippedNames +più orientata all'utente e alla localizzazione.

+ + +
+ + +
+
+

4.4.3. Il file mimeconf

+ + +

mimeconf +specifica come vengono trattati i vari tipi mime per l'indicizzazione, +e quali icone devono essere mostrate nella lista dei risultati di recoll.

+ + +

Cambiare i parametri nella sezione [index] non +è probabilmente una buona idea a meno che non siate +sviluppatori di Recoll.

+ + +

La sezione [icons] permette di cambiare le icone che +vengono mostrate nella lista dei risultati (i nomi sono quelli +delle immagini png, senza suffisso, che si trovano nella cartella iconsdir (specificata in recoll.conf).

+ + +
+ + +
+
+

4.4.4. Il file mimeview

+ + +

mimeview +specifica il programma che deve essere lanciato quando clicchi su Edit +nella lista dei risultati. ad esempio: HTML viene normalmente aperto +con firefox, ma potresti +preferire Konqueror, il +programma openoffice.org +potrebbe essere chiamato oofice +invece di openoffice etc.

+ + +

Cambiamenti a questo file possono essere fatti direttamente o +attraverso il dialogo 'Preferenze' del programma recoll.

+ + +

Come tutti gli altri files di configurazione, l'uso normale +è avere un mimeview +nella vostra cartella personale, con solo le voci non di default, che +si sovrapporrà a quello centrale per tutto il sistema.

+ + +

Per favore prendi nota che queste 'entrate' devono essere +fatte in una sezione nominata [view] +section.

+ + +
+ + +
+
+

4.4.5. Esempio

+ + +

Esempio:

+ + +

pensiamo di aggiungere la possibilità di +indicizzare i files +con estensione .lyx (file fatti col programma Lyx) in modo da poter +avere una visualizzazione corretta degli stessi e di poterli aprire con +il programma Lyx quando clicchiamo sul link edit. Dovremo, so +già non l'abbiamo, procurarci dal sito di recoll lo script +rcllyx necessario per l'indicizzazione dei files .lyx.
+ + +Tale script è un file di testo e va messo nella cartella +/usr/share/recoll/filters e reso eseguibile.

+ + +

Vogliamo inoltre poter aprire i file con estensione .kwd e +.kwt +(flies fatti con Kword) con il polor programma: Kword. (Questi files +non potranno essere indicizzate, se non con il loro nome (quindi niente +visualizzazione, ma possibilità di apertura degli stessi).

+ + +Per prima cosa dobbiamo trovare il tipo mime dato dal sistema +ai  +files di Lyx e di Kword. Troveremo che il tipo per ifiles di Lyx +è application/x-lyx +mentre per i files di Kword application/x-kword
+ + +(La procedura è molto semplice. Ad esempi con KDE si +apre konqueror, il menu impostazioni/associazione caratteri, +si +mette l'estensione del file nell'apposita casella e si prende nota +dell'associazione corrispondente.)
+ + +
+ + +A questo punto possiamo procedere. Di seguito i tre files modificati, +dove le linee in neretto + si riferiscono ai files Lyx, mentre quello rosse +ai files di Kword.
+ + +
+ + +MIMEMAP
+ + +# @(#$Id: usermanual-italian.html,v 1.1 2007-02-02 10:05:22 dockes Exp $  (C) +2004 J.F.Dockes
+ + +# Recoll: associations of file name extensions to mime types
+ + +
+ + +.txt = text/plain
+ + +.text = text/plain
+ + +.d    = text/plain
+ + +.lyx = application/x-lyx
+ + +.kwt += application/x-kword
+ + +.kwd += application/x-kword
+ + +
+ + +# Source files. Defining them as text/x-c will enable ext viewer. If
+ + +# text/plain they will be somewhat indexed
+ + +.cpp = text/x-c
+ + +.h   = text/x-c
+ + +.c   = text/x-c
+ + +.cc  = text/x-c
+ + +
+ + +.rtf  = text/rtf
+ + +
+ + +.html = text/html
+ + +.htm = text/html
+ + +.shtml = text/html
+ + +.php = text/html
+ + +
+ + +.pdf = application/pdf
+ + +
+ + +.ps = application/postscript
+ + +.eps = application/postscript
+ + +.ai = application/postscript
+ + +
+ + +.dvi = application/x-dvi
+ + +
+ + +.djvu = image/vnd.djvu
+ + +
+ + +.gz = application/x-gzip
+ + +.Z = application/x-gzip
+ + +.bz2 = application/x-bzip2
+ + +#.Z  = application/x-compress
+ + +
+ + +.doc = application/msword
+ + +.ppt = application/vnd.ms-powerpoint
+ + +.xls = application/vnd.ms-excel
+ + +
+ + +# OpenOffice / opendocument. We handle opendocument as old openoffice +files
+ + +# for now
+ + +.sxc = application/vnd.sun.xml.calc
+ + +.ods = application/vnd.sun.xml.calc
+ + +.stc = application/vnd.sun.xml.calc.template
+ + +.sxd = application/vnd.sun.xml.draw
+ + +.std = application/vnd.sun.xml.draw.template
+ + +.sxi = application/vnd.sun.xml.impress
+ + +.odp = application/vnd.sun.xml.impress
+ + +.sti = application/vnd.sun.xml.impress.template
+ + +.sxm = application/vnd.sun.xml.math
+ + +.sxw = application/vnd.sun.xml.writer
+ + +.odt = application/vnd.sun.xml.writer
+ + +.sxg = application/vnd.sun.xml.writer.global
+ + +.stw = application/vnd.sun.xml.writer.template
+ + +
+ + +
+ + +.wpd = application/vnd.wordperfect
+ + +.rtf = text/rtf
+ + +
+ + +.mp3 = audio/mpeg
+ + +.png = image/png
+ + +.jpg = image/jpeg
+ + +
+ + +# A list of stuff that we don't want to touch at all (for now). Having +the
+ + +# suffixes listed in there speeds up things quite a lot by avoiding
+ + +# unneeded decompression or 'file' calls. File names still get indexed +if
+ + +# indexallfilenames is set
+ + +recoll_noindex = .tar.gz .tgz .tar.bz2 .tbz .log.gz .md5 .map \
+ + +       .m4 .tcl +.js .sh .pl .awk \
+ + +       .o .lib +.dll .a \
+ + +       .dat .bak +.rdf .log .db .ini .msf .pid \
+ + +       .gnm +.gnumeric .tex \
+ + +       .gif .bmp +.xpm \
+ + +       ,v ~ #
+ + +
+ + +# Special handling of .txt files inside ~/.gaim directory
+ + +[~/.gaim]
+ + +.txt = text/x-gaim-log
+ + +
+ + +MIMECONF
+ + +# @(#$Id: usermanual-italian.html,v 1.1 2007-02-02 10:05:22 dockes Exp $  +(C) 2004 J.F.Dockes
+ + +
+ + +# Recoll : associations of mime types to processing filters.
+ + +# There are different sections for decompression, 'interning' for +indexing
+ + +# and preview, and external viewers
+ + +
+ + +## #######################################
+ + +# Decompression: these types need a first pass to create a temp file to
+ + +# work with. We use a script because uncompress utilities usually work +in
+ + +# place, which is not suitable.
+ + +#
+ + +# The %t parameter will be substituted to the name of a temporary +directory
+ + +# by recoll. This directory is guaranteed empty when calling the filter
+ + +#
+ + +# The %f parameter will be substituted with the input file.
+ + +#
+ + +# The script (ie: rcluncomp) must output the uncompressed file name on
+ + +# stdout.
+ + +application/x-gzip  =  uncompress rcluncomp gunzip %f +%t
+ + +application/x-compress = uncompress rcluncomp gunzip %f %t
+ + +application/x-bzip2 =  uncompress rcluncomp bunzip2 %f %t
+ + +
+ + +## ###################################
+ + +# Filters for indexing and internal preview.
+ + +# The external (exec) filters  output the document in simple +html format,
+ + +# have a look at the scripts.
+ + +[index]
+ + +application/msword = exec rcldoc
+ + +application/pdf = exec rclpdf
+ + +application/postscript = exec rclps
+ + +application/vnd.ms-powerpoint = exec rclppt
+ + +application/vnd.ms-excel = exec rclxls
+ + +application/vnd.sun.xml.calc = exec rclsoff
+ + +application/vnd.sun.xml.calc.template = exec rclsoff
+ + +application/vnd.sun.xml.draw = exec rclsoff
+ + +application/vnd.sun.xml.draw.template = exec rclsoff
+ + +application/vnd.sun.xml.impress = exec rclsoff
+ + +application/vnd.sun.xml.impress.template = exec rclsoff
+ + +application/vnd.sun.xml.math = exec rclsoff
+ + +application/vnd.sun.xml.writer = exec rclsoff
+ + +application/vnd.sun.xml.writer.global = exec rclsoff
+ + +application/vnd.sun.xml.writer.template = exec rclsoff
+ + +application/x-dvi = exec rcldvi
+ + +audio/mpeg = exec rclmedia
+ + +image/vnd.djvu = exec rcldjvu
+ + +message/rfc822 = internal
+ + +text/html  = internal
+ + +text/plain = internal
+ + +text/rtf = exec rclrtf
+ + +text/x-gaim-log = exec rclgaim
+ + +text/x-mail = internal
+ + +application/x-lyx = +exec rcllyx
+ + +
+ + +## #############################################
+ + +# Icons to be used in the result list if required by gui config
+ + +[icons]
+ + +application/msword = wordprocessing
+ + +application/pdf = pdf
+ + +application/postscript = postscript
+ + +application/vnd.ms-excel = spreadsheet
+ + +application/vnd.ms-powerpoint = presentation
+ + +application/vnd.sun.xml.calc = spreadsheet
+ + +application/vnd.sun.xml.calc.template = spreadsheet
+ + +application/vnd.sun.xml.draw = drawing
+ + +application/vnd.sun.xml.draw.template = drawing
+ + +application/vnd.sun.xml.impress = presentation
+ + +application/vnd.sun.xml.impress.template = presentation
+ + +application/vnd.sun.xml.writer = wordprocessing
+ + +application/vnd.sun.xml.writer.global = wordprocessing
+ + +application/vnd.sun.xml.writer.template = wordprocessing
+ + +application/x-fsdirectory = folder
+ + +application/x-dvi = document
+ + +audio/mpeg = sownd
+ + +image/jpeg = image
+ + +image/png = image
+ + +image/vnd.djvu = document
+ + +message/rfc822 = message
+ + +text/html = html
+ + +text/plain = txt
+ + +text/x-mail = message
+ + +text/x-c = source
+ + +application/x-lyx = +wordprocessing
+ + +application/x-kword = +wordprocessing
+ + +

+ + +[categories]
+ + +
+ + +texts = application/msword \
+ + +      application/pdf \
+ + +      +application/postscript \
+ + +      +application/vnd.sun.xml.writer \
+ + +      +application/vnd.sun.xml.writer.global \
+ + +      +application/vnd.sun.xml.writer.template \
+ + +      application/x-dvi \
+ + +      image/vnd.djvu \
+ + +      text/html \
+ + +      text/plain \
+ + +      application/x-lyx +\
+ + +     application/x-kword +\
+ + +
      text/rtf
+ + +
+ + +spreadsheets = application/vnd.ms-excel \
+ + +         +application/vnd.sun.xml.calc \
+ + +         +application/vnd.sun.xml.calc.template
+ + +
+ + +presentations = application/vnd.ms-powerpoint \
+ + +    +      +application/vnd.sun.xml.impress \
+ + +    +      +application/vnd.sun.xml.impress.template
+ + +
+ + +media = audio/mpeg \
+ + +      image/jpeg \
+ + +      image/png \
+ + +
+ + +messages = message/rfc822 \
+ + +     text/x-gaim-log \
+ + +     text/x-mail \
+ + +
+ + +other = application/vnd.sun.xml.draw \
+ + +      +application/vnd.sun.xml.draw.template \
+ + +      +application/vnd.sun.xml.math \
+ + +      +application/x-fsdirectory
+ + +
+ + +MIMEVIEW
+ + +
+ + +# @(#$Id: mimeview,v +1.2 2006/12/19 08:40:50 dockes Exp $  (C) 2004 J.F.Dockes
+ + +
+ + +## +##########################################
+ + +# External viewers, +launched by the recoll GUI when you click on a result
+ + +# 'edit' link
+ + +
+ + +[view]
+ + +application/msword = +openoffice %f
+ + +application/pdf  += kpdf %f
+ + +application/postscript += gv %f
+ + +application/vnd.ms-excel += openoffice %f
+ + +application/vnd.ms-powerpoint += openoffice %f
+ + +application/vnd.sun.xml.calc += openoffice %f
+ + +application/vnd.sun.xml.calc.template += openoffice %f
+ + +application/vnd.sun.xml.draw += openoffice %f
+ + +application/vnd.sun.xml.draw.template += openoffice %f
+ + +application/vnd.sun.xml.impress += openoffice %f
+ + +application/vnd.sun.xml.impress.template += openoffice %f
+ + +application/vnd.sun.xml.math += openoffice %f
+ + +application/vnd.sun.xml.writer += openoffice %f
+ + +application/vnd.sun.xml.writer.global += openoffice %f
+ + +application/vnd.sun.xml.writer.template += openoffice %f
+ + +application/x-fsdirectory += rox %f
+ + +application/x-dvi = +xdvi %f
+ + +audio/mpeg = xmms %f
+ + +image/jpeg = gimp %f
+ + +image/png = gimp %f
+ + +image/vnd.djvu = djview +%f
+ + +# Or firefox -remote +"openFile(%u)"
+ + +text/html = konqueror %u
+ + +application/x-lyx = +lyx %f
+ + +
application/x-kword += kword %f
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ + + + diff --git a/src/doc/user/usermanual.html b/src/doc/user/usermanual.html new file mode 100644 index 00000000..ae4bbbe8 --- /dev/null +++ b/src/doc/user/usermanual.html @@ -0,0 +1,9622 @@ + + + + + + + + Recoll user manual + + + + + + +
+
+
+
+

Recoll user manual

+
+ +
+
+

Jean-Francois Dockes

+ +
+ +
+
+
+ +
+ +
+ +
+
+

Permission is granted to copy, + distribute and/or modify this document under the terms + of the GNU Free Documentation License, Version 1.3 or + any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover + Texts, and no Back-Cover Texts. A copy of the license + can be found at the following location: GNU web site.

+ +

This document introduces full text search notions + and describes the installation and use of the + Recoll application. + This version describes Recoll 1.22.

+
+
+
+
+
+ +
+

Table of Contents

+ +
+
1. Introduction
+ +
+
+
1.1. Giving it a + try
+ +
1.2. Full text + search
+ +
1.3. Recoll + overview
+
+
+ +
2. Indexing
+ +
+
+
2.1. Introduction
+ +
+
+
2.1.1. Indexing + modes
+ +
2.1.2. Configurations, + multiple indexes
+ +
2.1.3. Document types
+ +
2.1.4. Indexing failures
+ +
2.1.5. Recovery
+
+
+ +
2.2. Index storage
+ +
+
+
2.2.1. Xapian index + formats
+ +
2.2.2. Security + aspects
+
+
+ +
2.3. Index + configuration
+ +
+
+
2.3.1. Multiple + indexes
+ +
2.3.2. Index case and + diacritics sensitivity
+ +
2.3.3. The index configuration + GUI
+
+
+ +
2.4. Indexing WEB pages you + wisit
+ +
2.5. Extended attributes + data
+ +
2.6. Importing external + tags
+ +
2.7. Periodic + indexing
+ +
+
+
2.7.1. Running + indexing
+ +
2.7.2. Using cron to automate + indexing
+
+
+ +
2.8. Real time + indexing
+ +
+
+
2.8.1. Slowing down the + reindexing rate for fast changing + files
+
+
+
+
+ +
3. Searching
+ +
+
+
3.1. Searching with the Qt graphical user + interface
+ +
+
+
3.1.1. Simple + search
+ +
3.1.2. The default result + list
+ +
3.1.3. The result + table
+ +
3.1.4. Running arbitrary + commands on result files (1.20 and + later)
+ +
3.1.5. Displaying + thumbnails
+ +
3.1.6. The preview + window
+ +
3.1.7. The Query Fragments + window
+ +
3.1.8. Complex/advanced + search
+ +
3.1.9. The term explorer + tool
+ +
3.1.10. Multiple + indexes
+ +
3.1.11. Document + history
+ +
3.1.12. Sorting search results and + collapsing duplicates
+ +
3.1.13. Search tips, + shortcuts
+ +
3.1.14. Saving and restoring queries + (1.21 and later)
+ +
3.1.15. Customizing the search + interface
+
+
+ +
3.2. Searching with the KDE KIO + slave
+ +
+
+
3.2.1. What's this
+ +
3.2.2. Searchable + documents
+
+
+ +
3.3. Searching on the command + line
+ +
3.4. Using Synonyms (Recoll 1.22 and + later)
+ +
3.5. Path translations
+ +
3.6. The query language
+ +
+
+
3.6.1. Modifiers
+
+
+ +
3.7. Search case and diacritics + sensitivity
+ +
3.8. Anchored searches and + wildcards
+ +
+
+
3.8.1. More about + wildcards
+ +
3.8.2. Anchored + searches
+
+
+ +
3.9. Desktop + integration
+ +
+
+
3.9.1. Hotkeying + recoll
+ +
3.9.2. The KDE Kicker Recoll + applet
+
+
+
+
+ +
4. Programming interface
+ +
+
+
4.1. Writing a document input + handler
+ +
+
+
4.1.1. Simple input + handlers
+ +
4.1.2. "Multiple" + handlers
+ +
4.1.3. Telling + Recoll about the + handler
+ +
4.1.4. Input handler HTML + output
+ +
4.1.5. Page + numbers
+
+
+ +
4.2. Field data + processing
+ +
4.3. API
+ +
+
+
4.3.1. Interface + elements
+ +
4.3.2. Python + interface
+
+
+
+
+ +
5. Installation and + configuration
+ +
+
+
5.1. Installing a binary + copy
+ +
5.2. Supporting + packages
+ +
5.3. Building from + source
+ +
+
+
5.3.1. Prerequisites
+ +
5.3.2. Building
+ +
5.3.3. Installation
+
+
+ +
5.4. Configuration + overview
+ +
+
+
5.4.1. Environment + variables
+ +
5.4.2. The main + configuration file, recoll.conf
+ +
5.4.3. The fields + file
+ +
5.4.4. The mimemap + file
+ +
5.4.5. The mimeconf + file
+ +
5.4.6. The mimeview + file
+ +
5.4.7. The ptrans file
+ +
5.4.8. Examples of + configuration adjustments
+
+
+
+
+
+
+ +
+
+
+
+

Chapter 1. Introduction

+
+
+
+ +

This document introduces full text search notions and + describes the installation and use of the Recoll application. This version + describes Recoll 1.22.

+ +

Recoll was for a long + time dedicated to Unix-like systems. It was only lately + (2015) ported to MS-Windows. + Many references in this manual, especially file locations, + are specific to Unix, and not valid on Windows. Some described features are + also not available on Windows.

+ +

The manual will be progressively updated for Windows. Until this happens, most + references to files can be translated by looking under the + Recoll installation directory (esp. the Share subdirectory). The user configuration + is stored by default under AppData/Local/Recoll inside the user + directory, along with the index itself.

+ +
+
+
+
+

1.1. Giving it a + try

+
+
+
+ +

If you do not like reading manuals (who does?) but wish + to give Recoll a try, just + install the + application and start the recoll graphical user + interface (GUI), which will ask permission to index your + home directory by default, allowing you to search + immediately after indexing completes.

+ +

Do not do this if your home directory contains a huge + number of documents and you do not want to wait or are very + short on disk space. In this case, you may first want to + customize the configuration to + restrict the indexed area (for the very impatient with a + completed package install, from the recoll GUI: PreferencesIndexing configuration, then adjust + the Top directories + section).

+ +

Also be aware that you may need to install the + appropriate supporting + applications for document types that need them (for + example antiword for + Microsoft Word files).

+
+ +
+
+
+
+

1.2. Full text + search

+
+
+
+ +

Recoll is a full text + search application, which means that it finds your data by + content rather than by external attributes (like the file + name). You specify words (terms) which should or should not + appear in the text you are looking for, and receive in + return a list of matching documents, ordered so that the + most relevant + documents will appear first.

+ +

You do not need to remember in what file or email + message you stored a given piece of information. You just + ask for related terms, and the tool will return a list of + documents where these terms are prominent, in a similar way + to Internet search engines.

+ +

Full text search applications try to determine which + documents are most relevant to the search terms you + provide. Computer algorithms for determining relevance can + be very complex, and in general are inferior to the power + of the human mind to rapidly determine relevance. The + quality of relevance guessing is probably the most + important aspect when evaluating a search application.

+ +

In many cases, you are looking for all the forms of a + word, including plurals, different tenses for a verb, or + terms derived from the same root or stem (example: floor, floors, floored, + flooring...). Queries are usually automatically + expanded to all such related terms (words that reduce to + the same stem). This can be prevented for searching for a + specific form.

+ +

Stemming, by itself, does not accommodate for + misspellings or phonetic searches. A full text search + application may also support this form of approximation. + For example, a search for aliterattion returning no + result may propose, depending on index contents, alliteration alteration alterations + altercation as possible replacement terms.

+
+ +
+
+
+
+

1.3. Recoll + overview

+
+
+
+ +

Recoll uses the + Xapian + information retrieval library as its storage and retrieval + engine. Xapian is a very + mature package using a + sophisticated probabilistic ranking model.

+ +

The Xapian library + manages an index database which describes where terms + appear in your document files. It efficiently processes the + complex queries which are produced by the Recoll query expansion mechanism, and + is in charge of the all-important relevance computation + task.

+ +

Recoll provides the + mechanisms and interface to get data into and out of the + index. This includes translating the many possible document + formats into pure text, handling term variations (using + Xapian stemmers), and + spelling approximations (using the aspell speller), interpreting user + queries and presenting results.

+ +

In a shorter way, Recoll does the dirty footwork, + Xapian deals with the + intelligent parts of the process.

+ +

The Xapian index can be + big (roughly the size of the original document set), but it + is not a document archive. Recoll can only display documents that + still exist at the place from which they were indexed. + (Actually, there is a way to reconstruct a document from + the information in the index, but the result is not nice, + as all formatting, punctuation and capitalization are + lost).

+ +

Recoll stores all + internal data in Unicode + UTF-8 format, and it can index files of many types + with different character sets, encodings, and languages + into the same index. It can process documents embedded + inside other documents (for example a pdf document stored + inside a Zip archive sent as an email attachment...), down + to an arbitrary depth.

+ +

Stemming is the process by which Recoll reduces words to their radicals + so that searching does not depend, for example, on a word + being singular or plural (floor, floors), or on a verb + tense (flooring, floored). Because the mechanisms used for + stemming depend on the specific grammatical rules for each + language, there is a separate Xapian stemmer module for most common + languages where stemming makes sense.

+ +

Recoll stores the + unstemmed versions of terms in the main index and uses + auxiliary databases for term expansion (one for each + stemming language), which means that you can switch + stemming languages between searches, or add a language + without needing a full reindex.

+ +

Storing documents written in different languages in the + same index is possible, and commonly done. In this + situation, you can specify several stemming languages for + the index.

+ +

Recoll currently makes + no attempt at automatic language recognition, which means + that the stemmer will sometimes be applied to terms from + other languages with potentially strange results. In + practise, even if this introduces possibilities of + confusion, this approach has been proven quite useful, and + it is much less cumbersome than separating your documents + according to what language they are written in.

+ +

By default, Recoll + strips most accents and diacritics from terms, and converts + them to lower case before either storing them in the index + or searching for them. As a consequence, it is impossible + to search for a particular capitalization of a term + (US / us), or to discriminate two terms based on + diacritics (sake / + saké, mate / maté).

+ +

Recoll versions 1.18 + and newer can optionally store the raw terms, without + accent stripping or case conversion. In this configuration, + default searches will behave as before, but it is possible + to perform searches sensitive to case and diacritics. This + is described in more detail in the section + about index case and diacritics sensitivity.

+ +

Recoll has many + parameters which define exactly what to index, and how to + classify and decode the source documents. These are kept in + configuration files. A + default configuration is copied into a standard location + (usually something like /usr/share/recoll/examples) during + installation. The default values set by the configuration + files in this directory may be overridden by values set + inside your personal configuration, found by default in the + .recoll sub-directory of your + home directory. The default configuration will index your + home directory with default parameters and should be + sufficient for giving Recoll a try, but you may want to + adjust it later, which can be done either by editing the + text files or by using configuration menus in the + recoll GUI. + Some other parameters affecting only the recoll GUI are stored in + the standard location defined by Qt.

+ +

The indexing process + is started automatically the first time you execute the + recoll GUI. + Indexing can also be performed by executing the + recollindex + command. Recoll indexing + is multithreaded by default when appropriate hardware + resources are available, and can perform in parallel + multiple tasks among text extraction, segmentation and + index updates.

+ +

Searches are usually + performed inside the recoll GUI, which has + many options to help you find what you are looking for. + However, there are other ways to perform Recoll searches: mostly a command line + interface, a Python programming interface, a + KDE KIO slave module, and Ubuntu + Unity Lens (for older versions) or Scope (for current versions) modules.

+
+
+ +
+
+
+
+

Chapter 2. Indexing

+
+
+
+ +
+
+
+
+

2.1. Introduction

+
+
+
+ +

Indexing is the process by which the set of documents is + analyzed and the data entered into the database. + Recoll indexing is + normally incremental: documents will only be processed if + they have been modified since the last run. On the first + execution, all documents will need processing. A full index + build can be forced later by specifying an option to the + indexing command (recollindex -z or -Z).

+ +

recollindex skips files + which caused an error during a previous pass. This is a + performance optimization, and a new behaviour in version + 1.21 (failed files were always retried by previous + versions). The command line option -k can be set to retry failed files, for + example after updating a filter.

+ +

The following sections give an overview of different + aspects of the indexing processes and configuration, with + links to detailed sections.

+ +

Depending on your data, temporary files may be needed + during indexing, some of them possibly quite big. You can + use the RECOLL_TMPDIR or + TMPDIR environment variables to + determine where they are created (the default is to use + /tmp). Using TMPDIR has the nice property that it may + also be taken into account by auxiliary commands executed + by recollindex.

+ +
+
+
+
+

2.1.1. Indexing + modes

+
+
+
+ +

Recoll indexing can + be performed along two different modes:

+ +
+
    +
  • +

    Periodic (or + batch) indexing: indexing takes place + at discrete times, by executing the recollindex + command. The typical usage is to have a nightly + indexing run programmed + into your cron file.

    +
  • + +
  • +

    Real time + indexing: indexing takes place as soon + as a file is created or changed. recollindex runs + as a daemon and uses a file system alteration + monitor such as inotify, Fam or Gamin to detect file + changes.

    +
  • +
+
+ +

The choice between the two methods is mostly a matter + of preference, and they can be combined by setting up + multiple indexes (ie: use periodic indexing on a big + documentation directory, and real time indexing on a + small home directory). Monitoring a big file system tree + can consume significant system resources.

+ +

The choice of method and the parameters used can be + configured from the recoll GUI: + Preferences → + Indexing schedule

+
+ +
+
+
+
+

2.1.2. Configurations, + multiple indexes

+
+
+
+ +

The parameters describing what is to be indexed and + local preferences are defined in text files contained in + a configuration + directory.

+ +

All parameters have defaults, defined in system-wide + files.

+ +

Without further configuration, Recoll will index all appropriate + files from your home directory, with a reasonable set of + defaults.

+ +

A default personal configuration directory + ($HOME/.recoll/) is created + when a Recoll program is + first executed. It is possible to create other + configuration directories, and use them by setting the + RECOLL_CONFDIR environment + variable, or giving the -c + option to any of the Recoll commands.

+ +

In some cases, it may be interesting to index + different areas of the file system to separate databases. + You can do this by using multiple configuration + directories, each indexing a file system area to a + specific database. Typically, this would be done to + separate personal and shared indexes, or to take + advantage of the organization of your data to improve + search precision.

+ +

The generated indexes can be queried concurrently in a + transparent manner.

+ +

For index generation, multiple configurations are + totally independant from each other. When multiple + indexes need to be used for a single search, some parameters should be + consistent among the configurations.

+
+ +
+
+
+
+

2.1.3. Document types

+
+
+
+ +

Recoll knows about + quite a few different document types. The parameters for + document types recognition and processing are set in + configuration + files.

+ +

Most file types, like HTML or word processing files, + only hold one document. Some file types, like email + folders or zip archives, can hold many individually + indexed documents, which may themselves be compound ones. + Such hierarchies can go quite deep, and Recoll can process, for example, a + LibreOffice document + stored as an attachment to an email message inside an + email folder archived in a zip file...

+ +

Recoll indexing + processes plain text, HTML, OpenDocument + (Open/LibreOffice), email formats, and a few others + internally.

+ +

Other file types (ie: postscript, pdf, ms-word, rtf + ...) need external applications for preprocessing. The + list is in the installation section. + After every indexing operation, Recoll updates a list of commands + that would be needed for indexing existing files types. + This list can be displayed by selecting the menu option + FileShow Missing Helpers in the + recoll GUI. + It is stored in the missing + text file inside the configuration directory.

+ +

By default, Recoll + will try to index any file type that it has a way to + read. This is sometimes not desirable, and there are ways + to either exclude some types, or on the contrary to + define a positive list of types to be indexed. In the + latter case, any type not in the list will be + ignored.

+ +

Excluding types can be done by adding wildcard name + patterns to the skippedNames + list, which can be done from the GUI Index configuration + menu. For versions 1.20 and later, you can alternatively + set the excludedmimetypes + list in the configuration file. This can be redefined for + subdirectories.

+ +

You can also define an exclusive list of MIME types to + be indexed (no others will be indexed), by settting the + indexedmimetypes + configuration variable. Example:

+
+indexedmimetypes = text/html application/pdf
+          
+
+ +

It is possible to redefine this parameter for + subdirectories. Example:

+
+[/path/to/my/dir]
+indexedmimetypes = application/pdf
+          
+
+ +

(When using sections like this, don't forget that they + remain in effect until the end of the file or another + section indicator).

+ +

excludedmimetypes or + indexedmimetypes, can be set + either by editing the main + configuration file (recoll.conf), or from the GUI index + configuration tool.

+
+ +
+
+
+
+

2.1.4. Indexing + failures

+
+
+
+ +

Indexing may fail for some documents, for a number of + reasons: a helper program may be missing, the document + may be corrupt, we may fail to uncompress a file because + no file system space is available, etc.

+ +

Recoll versions prior + to 1.21 always retried to index files which had + previously caused an error. This guaranteed that anything + that may have become indexable (for example because a + helper had been installed) would be indexed. However this + was bad for performance because some indexing failures + may be quite costly (for example failing to uncompress a + big file because of insufficient disk space).

+ +

The indexer in Recoll + versions 1.21 and later does not retry failed file by + default. Retrying will only occur if an explicit option + (-k) is set on the + recollindex + command line, or if a script executed when recollindex starts up + says so. The script is defined by a configuration + variable (checkneedretryindexscript), and makes a + rather lame attempt at deciding if a helper command may + have been installed, by checking if any of the common + bin directories have + changed.

+
+ +
+
+
+
+

2.1.5. Recovery

+
+
+
+ +

In the rare case where the index becomes corrupted + (which can signal itself by weird search results or + crashes), the index files need to be erased before + restarting a clean indexing pass. Just delete the + xapiandb directory (see + next section), or, + alternatively, start the next recollindex with the + -z option, which will reset + the database before indexing.

+
+
+ +
+
+
+
+

2.2. Index + storage

+
+
+
+ +

The default location for the index data is the + xapiandb subdirectory of the + Recoll configuration + directory, typically $HOME/.recoll/xapiandb/. This can be + changed via two different methods (with different + purposes):

+ +
+
    +
  • +

    You can specify a different configuration + directory by setting the RECOLL_CONFDIR environment variable, + or using the -c option to + the Recoll commands. + This method would typically be used to index + different areas of the file system to different + indexes. For example, if you were to issue the + following command:

    +
    +recoll -c ~/.indexes-email
    +
    + +

    Then Recoll would + use configuration files stored in ~/.indexes-email/ and, (unless + specified otherwise in recoll.conf) would look for the + index in ~/.indexes-email/xapiandb/.

    + +

    Using multiple configuration directories and + + configuration options allows you to tailor + multiple configurations and indexes to handle + whatever subset of the available data you wish to + make searchable.

    +
  • + +
  • +

    For a given configuration directory, you can + specify a non-default storage location for the index + by setting the dbdir + parameter in the configuration file (see the + + configuration section). This method would mainly + be of use if you wanted to keep the configuration + directory in its default location, but desired + another location for the index, typically out of disk + occupation concerns.

    +
  • +
+
+ +

The size of the index is determined by the size of the + set of documents, but the ratio can vary a lot. For a + typical mixed set of documents, the index size will often + be close to the data set size. In specific cases (a set of + compressed mbox files for example), the index can become + much bigger than the documents. It may also be much smaller + if the documents contain a lot of images or other + non-indexed data (an extreme example being a set of mp3 + files where only the tags would be indexed).

+ +

Of course, images, sound and video do not increase the + index size, which means that nowadays (2012), typically, + even a big index will be negligible against the total + amount of data on the computer.

+ +

The index data directory (xapiandb) only contains data that can be + completely rebuilt by an index run (as long as the original + documents exist), and it can always be destroyed + safely.

+ +
+
+
+
+

2.2.1. Xapian + index formats

+
+
+
+ +

Xapian versions + usually support several formats for index storage. A + given major Xapian + version will have a current format, used to create new + indexes, and will also support the format from the + previous major version.

+ +

Xapian will not + convert automatically an existing index from the older + format to the newer one. If you want to upgrade to the + new format, or if a very old index needs to be converted + because its format is not supported any more, you will + have to explicitly delete the old index, then run a + normal indexing process.

+ +

Using the -z option to + recollindex + is not sufficient to change the format, you will have to + delete all files inside the index directory (typically + ~/.recoll/xapiandb) before + starting the indexing.

+
+ +
+
+
+
+

2.2.2. Security + aspects

+
+
+
+ +

The Recoll index does + not hold copies of the indexed documents. But it does + hold enough data to allow for an almost complete + reconstruction. If confidential data is indexed, access + to the database directory should be restricted.

+ +

Recoll will create + the configuration directory with a mode of 0700 (access + by owner only). As the index data directory is by default + a sub-directory of the configuration directory, this + should result in appropriate protection.

+ +

If you use another setup, you should think of the kind + of protection you need for your index, set the directory + and files access modes appropriately, and also maybe + adjust the umask used during + index updates.

+
+
+ +
+
+
+
+

2.3. Index + configuration

+
+
+
+ +

Variables set inside the Recoll configuration files control + which areas of the file system are indexed, and how files + are processed. These variables can be set either by editing + the text files or by using the dialogs in the + recoll + GUI.

+ +

The first time you start recoll, you will be asked + whether or not you would like it to build the index. If you + want to adjust the configuration before indexing, just + click Cancel at this point, + which will get you into the configuration interface. If you + exit at this point, recoll + will have created a ~/.recoll + directory containing empty configuration files, which you + can edit by hand.

+ +

The configuration is documented inside the installation chapter + of this document, or in the recoll.conf(5) man page, but + the most current information will most likely be the + comments inside the sample file. The most immediately + useful variable you may interested in is probably topdirs, which determines what + subtrees get indexed.

+ +

The applications needed to index file types other than + text, HTML or email (ie: pdf, postscript, ms-word...) are + described in the external packages + section.

+ +

As of Recoll 1.18 there are two incompatible types of + Recoll indexes, depending on the treatment of character + case and diacritics. The next section describes the two + types in more detail.

+ +
+
+
+
+

2.3.1. Multiple + indexes

+
+
+
+ +

Multiple Recoll + indexes can be created by using several configuration + directories which are usually set to index different + areas of the file system. A specific index can be + selected for updating or searching, using the + RECOLL_CONFDIR environment + variable or the -c option to + recoll and + recollindex.

+ +

When working with the recoll index + configuration GUI, the configuration directory for which + parameters are modified is the one which was selected by + RECOLL_CONFDIR or the + -c parameter, and there is no + way to switch configurations within the GUI.

+ +

Additional configuration directory (beyond + ~/.recoll) must be created + by hand (mkdir or such), the GUI + will not do it. This is to avoid mistakenly creating + additional directories when an argument is mistyped.

+ +

A typical usage scenario for the multiple index + feature would be for a system administrator to set up a + central index for shared data, that you choose to search + or not in addition to your personal data. Of course, + there are other possibilities. There are many cases where + you know the subset of files that should be searched, and + where narrowing the search can improve the results. You + can achieve approximately the same effect with the + directory filter in advanced search, but multiple indexes + will have much better performance and may be worth the + trouble.

+ +

A recollindex program + instance can only update one specific index.

+ +

The main index (defined by RECOLL_CONFDIR or -c) is always active. If this is + undesirable, you can set up your base configuration to + index an empty directory.

+ +

The different search interfaces (GUI, command line, + ...) have different methods to define the set of indexes + to be used, see the appropriate section.

+ +

If a set of multiple indexes are to be used together + for searches, some configuration parameters must be + consistent among the set. These are parameters which need + to be the same when indexing and searching. As the + parameters come from the main configuration when + searching, they need to be compatible with what was set + when creating the other indexes (which came from their + respective configuration directories).

+ +

Most importantly, all indexes to be queried + concurrently must have the same option concerning + character case and diacritics stripping, but there are + other constraints. Most of the relevant parameters are + described in the + linked section.

+
+ +
+
+
+
+

2.3.2. Index + case and diacritics sensitivity

+
+
+
+ +

As of Recoll version + 1.18 you have a choice of building an index with terms + stripped of character case and diacritics, or one with + raw terms. For a source term of Résumé, the former will + store resume, the latter + Résumé.

+ +

Each type of index allows performing searches + insensitive to case and diacritics: with a raw index, the + user entry will be expanded to match all case and + diacritics variations present in the index. With a + stripped index, the search term will be stripped before + searching.

+ +

A raw index allows for another possibility which a + stripped index cannot offer: using case and diacritics to + discriminate between terms, returning different results + when searching for US and + us or resume and résumé. Read the section + about search case and diacritics sensitivity for more + details.

+ +

The type of index to be created is controlled by the + indexStripChars + configuration variable which can only be changed by + editing the configuration file. Any change implies an + index reset (not automated by Recoll), and all indexes in a search + must be set in the same way (again, not checked by + Recoll).

+ +

If the indexStripChars is + not set, Recoll 1.18 + creates a stripped index by default, for compatibility + with previous versions.

+ +

As a cost for added capability, a raw index will be + slightly bigger than a stripped one (around 10%). Also, + searches will be more complex, so probably slightly + slower, and the feature is still young, so that a certain + amount of weirdness cannot be excluded.

+ +

One of the most adverse consequence of using a raw + index is that some phrase and proximity searches may + become impossible: because each term needs to be + expanded, and all combinations searched for, the + multiplicative expansion may become unmanageable.

+
+ +
+
+
+
+

2.3.3. The + index configuration GUI

+
+
+
+ +

Most parameters for a given index configuration can be + set from a recoll GUI running on + this configuration (either as default, or by setting + RECOLL_CONFDIR or the + -c option.)

+ +

The interface is started from the PreferencesIndex Configuration menu entry. It + is divided in four tabs, Global + parameters, Local + parameters, Web + history (which is explained in the next section) + and Search parameters.

+ +

The Global parameters + tab allows setting global variables, like the lists of + top directories, skipped paths, or stemming + languages.

+ +

The Local parameters tab + allows setting variables that can be redefined for + subdirectories. This second tab has an initially empty + list of customisation directories, to which you can add. + The variables are then set for the currently selected + directory (or at the top level if the empty line is + selected).

+ +

The Search parameters + section defines parameters which are used at query time, + but are global to an index and affect all search tools, + not only the GUI.

+ +

The meaning for most entries in the interface is + self-evident and documented by a ToolTip popup on the text label. For + more detail, you will need to refer to the configuration + section of this guide.

+ +

The configuration tool normally respects the comments + and most of the formatting inside the configuration file, + so that it is quite possible to use it on hand-edited + files, which you might nevertheless want to backup + first...

+
+
+ +
+
+
+
+

2.4. Indexing WEB + pages you wisit

+
+
+
+ +

With the help of a Firefox extension, Recoll can index the Internet pages + that you visit. The extension was initially designed for + the Beagle indexer, but it + has recently be renamed and better adapted to Recoll.

+ +

The extension works by copying visited WEB pages to an + indexing queue directory, which Recoll then processes, indexing the + data, storing it into a local cache, then removing the file + from the queue.

+ +

This feature can be enabled in the GUI Index configuration panel, or by editing + the configuration file (set processwebqueue to 1).

+ +

A current pointer to the extension can be found, along + with up-to-date instructions, on the Recoll wiki.

+ +

A copy of the indexed WEB pages is retained by Recoll in + a local cache (from which previews can be fetched). The + cache size can be adjusted from the Index configuration / Web history panel. Once the maximum size + is reached, old pages are purged - both from the cache and + the index - to make room for new ones, so you need to + explicitly archive in some other place the pages that you + want to keep indefinitely.

+
+ +
+
+
+
+

2.5. Extended + attributes data

+
+
+
+ +

User extended attributes are named pieces of information + that most modern file systems can attach to any file.

+ +

Recoll versions 1.19 + and later process extended attributes as document fields by + default. For older versions, this has to be activated at + build time.

+ +

A freedesktop standard defines a few + special attributes, which are handled as such by + Recoll:

+ +
+
+
mime_type
+ +
+

If set, this overrides any other determination of + the file MIME type.

+
+ +
charset
+ +
If set, this defines the file character set (mostly + useful for plain text files).
+
+
+ +

By default, other attributes are handled as Recoll fields. On Linux, the + user prefix is removed from + the name. This can be configured more precisely inside the + fields configuration file.

+
+ +
+
+
+
+

2.6. Importing + external tags

+
+
+
+ +

During indexing, it is possible to import metadata for + each file by executing commands. For example, this could + extract user tag data for the file and store it in a field + for indexing.

+ +

See the section about + the metadatacmds field in + the main configuration chapter for more detail.

+
+ +
+
+
+
+

2.7. Periodic + indexing

+
+
+
+ +
+
+
+
+

2.7.1. Running + indexing

+
+
+
+ +

Indexing is always performed by the recollindex program, + which can be started either from the command line or from + the File menu in the + recoll GUI + program. When started from the GUI, the indexing will run + on the same configuration recoll was started on. + When started from the command line, recollindex will use + the RECOLL_CONFDIR variable or + accept a -c confdir option to specify + a non-default configuration directory.

+ +

If the recoll program finds no + index when it starts, it will automatically start + indexing (except if canceled).

+ +

The recollindex indexing + process can be interrupted by sending an interrupt + (Ctrl-C, SIGINT) or terminate + (SIGTERM) signal. Some time may elapse before the process + exits, because it needs to properly flush and close the + index. This can also be done from the recoll GUI FileStop Indexing menu entry.

+ +

After such an interruption, the index will be somewhat + inconsistent because some operations which are normally + performed at the end of the indexing pass will have been + skipped (for example, the stemming and spelling databases + will be inexistant or out of date). You just need to + restart indexing at a later time to restore consistency. + The indexing will restart at the interruption point (the + full file tree will be traversed, but files that were + indexed up to the interruption and for which the index is + still up to date will not need to be reindexed).

+ +

recollindex has a + number of other options which are described in its man + page. Only a few will be described here.

+ +

Option -z will reset the + index when starting. This is almost the same as + destroying the index files (the nuance is that the + Xapian format version + will not be changed).

+ +

Option -Z will force the + update of all documents without resetting the index + first. This will not have the "clean start" aspect of + -z, but the advantage is that + the index will remain available for querying while it is + rebuilt, which can be a significant advantage if it is + very big (some installations need days for a full index + rebuild).

+ +

Option -k will force + retrying files which previously failed to be indexed, for + example because of a missing helper program.

+ +

Of special interest also, maybe, are the -i and -f + options. -i allows indexing + an explicit list of files (given as command line + parameters or read on stdin). -f + tells recollindex to ignore + file selection parameters from the configuration. + Together, these options allow building a custom file + selection process for some area of the file system, by + adding the top directory to the skippedPaths list and using an + appropriate file selection method to build the file list + to be fed to recollindex + -if. Trivial example:

+
+            find . -name indexable.txt -print | recollindex -if
+          
+
+ +

recollindex + -i will not descend into + subdirectories specified as parameters, but just add them + as index entries. It is up to the external file selection + method to build the complete file list.

+
+ +
+
+
+
+

2.7.2. Using + cron + to automate indexing

+
+
+
+ +

The most common way to set up indexing is to have a + cron task execute it every night. For example the + following crontab entry + would do it every day at 3:30AM (supposing recollindex is in your + PATH):

+
+30 3 * * * recollindex > /some/tmp/dir/recolltrace 2>&1
+
+ +

Or, using anacron:

+
+1  15  su mylogin -c "recollindex recollindex > /tmp/rcltraceme 2>&1"
+
+ +

As of version 1.17 the Recoll GUI has dialogs to manage + crontab entries for + recollindex. You can + reach them from the PreferencesIndexing Schedule menu. They only + work with the good old cron, and do not give + access to all features of cron scheduling.

+ +

The usual command to edit your crontab is crontab -e (which will usually start the + vi editor + to edit the file). You may have more sophisticated tools + available on your system.

+ +

Please be aware that there may be differences between + your usual interactive command line environment and the + one seen by crontab commands. Especially the PATH + variable may be of concern. Please check the crontab + manual pages about possible issues.

+
+
+ +
+
+
+
+

2.8. Real time + indexing

+
+
+
+ +

Real time monitoring/indexing is performed by starting + the recollindex -m command. With this option, recollindex will detach + from the terminal and become a daemon, permanently + monitoring file changes and updating the index.

+ +

Under KDE, Gnome and some other desktop + environments, the daemon can automatically started when you + log in, by creating a desktop file inside the ~/.config/autostart directory. This can + be done for you by the Recoll GUI. Use the Preferences->Indexing Schedule + menu.

+ +

With older X11 setups, + starting the daemon is normally performed as part of the + user session script.

+ +

The rclmon.sh script can + be used to easily start and stop the daemon. It can be + found in the examples + directory (typically /usr/local/[share/]recoll/examples).

+ +

For example, my out of fashion xdm-based session has a .xsession script with the following lines + at the end:

+
+recollconf=$HOME/.recoll-home
+recolldata=/usr/local/share/recoll
+RECOLL_CONFDIR=$recollconf $recolldata/examples/rclmon.sh start
+
+fvwm 
+
+
+ +

The indexing daemon gets started, then the window + manager, for which the session waits.

+ +

By default the indexing daemon will monitor the state of + the X11 session, and exit when it finishes, it is not + necessary to kill it explicitly. (The X11 server monitoring can be disabled + with option -x to recollindex).

+ +

If you use the daemon completely out of an X11 session, you need to add option + -x to disable X11 session monitoring (else the + daemon will not start).

+ +

By default, the messages from the indexing daemon will + be setn to the same file as those from the interactive + commands (logfilename). You + may want to change this by setting the daemlogfilename and daemloglevel configuration parameters. + Also the log file will only be truncated when the daemon + starts. If the daemon runs permanently, the log file may + grow quite big, depending on the log level.

+ +

When building Recoll, + the real time indexing support can be customised during + package configuration with the + --with[out]-fam or --with[out]-inotify options. The default is + currently to include inotify monitoring on systems that + support it, and, as of Recoll 1.17, gamin support on FreeBSD.

+ +

While it is convenient that data is indexed in real + time, repeated indexing can generate a significant load on + the system when files such as email folders change. Also, + monitoring large file trees by itself significantly taxes + system resources. You probably do not want to enable it if + your system is short on resources. Periodic indexing is + adequate in most cases.

+ +
+

Increasing resources for inotify

+ +

On Linux systems, monitoring a big tree may need + increasing the resources available to inotify, which are + normally defined in /etc/sysctl.conf.

+
+### inotify
+#
+# cat  /proc/sys/fs/inotify/max_queued_events   - 16384
+# cat  /proc/sys/fs/inotify/max_user_instances  - 128
+# cat  /proc/sys/fs/inotify/max_user_watches    - 16384
+#
+# -- Change to:
+#
+fs.inotify.max_queued_events=32768
+fs.notify.max_user_instances=256
+fs.inotify.max_user_watches=32768
+          
+
+ +

Especially, you will need to trim your tree or adjust + the max_user_watches value + if indexing exits with a message about errno ENOSPC (28) from inotify_add_watch.

+
+ +
+
+
+
+

2.8.1. Slowing + down the reindexing rate for fast changing + files

+
+
+
+ +

When using the real time monitor, it may happen that + some files need to be indexed, but change so often that + they impose an excessive load for the system.

+ +

Recoll provides a + configuration option to specify the minimum time before + which a file, specified by a wildcard pattern, cannot be + reindexed. See the mondelaypatterns parameter in the + configuration + section.

+
+
+
+ +
+
+
+
+

Chapter 3. Searching

+
+
+
+ +
+
+
+
+

3.1. Searching with the Qt + graphical user interface

+
+
+
+ +

The recoll + program provides the main user interface for searching. It + is based on the Qt + library.

+ +

recoll has + two search modes:

+ +
+
    +
  • +

    Simple search (the default, on the main screen) + has a single entry field where you can enter multiple + words.

    +
  • + +
  • +

    Advanced search (a panel accessed through the + Tools menu or the + toolbox bar icon) has multiple entry fields, which + you may use to build a logical condition, with + additional filtering on file type, location in the + file system, modification date, and size.

    +
  • +
+
+ +

In most cases, you can enter the terms as you think + them, even if they contain embedded punctuation or other + non-textual characters. For example, Recoll can handle things like email + addresses, or arbitrary cut and paste from another text + window, punctation and all.

+ +

The main case where you should enter text differently + from how it is printed is for east-asian languages + (Chinese, Japanese, Korean). Words composed of single or + multiple characters should be entered separated by white + space in this case (they would typically be printed without + white space).

+ +

Some searches can be quite complex, and you may want to + re-use them later, perhaps with some tweaking. Recoll versions 1.21 and later can + save and restore searches, using XML files. See + Saving and restoring queries.

+ +
+
+
+
+

3.1.1. Simple + search

+
+
+
+ +
+
    +
  1. +

    Start the recoll + program.

    +
  2. + +
  3. +

    Possibly choose a search mode: Any term, All terms, File name or Query language.

    +
  4. + +
  5. +

    Enter search term(s) in the text field at the + top of the window.

    +
  6. + +
  7. +

    Click the Search + button or hit the Enter key to start + the search.

    +
  8. +
+
+ +

The initial default search mode is Query language. Without special + directives, this will look for documents containing all + of the search terms (the ones with more terms will get + better scores), just like the All + terms mode which will ignore such directives. + Any term will search for + documents where at least one of the terms appear.

+ +

The Query Language + features are described in a + separate section.

+ +

All search modes allow wildcards inside terms + (*, ?, []). You + may want to have a look at the section about + wildcards for more information about this.

+ +

File name will + specifically look for file names. The point of having a + separate file name search is that wild card expansion can + be performed more efficiently on a small subset of the + index (allowing wild cards on the left of terms without + excessive penality). Things to know:

+ +
+
    +
  • +

    White space in the entry should match white + space in the file name, and is not treated + specially.

    +
  • + +
  • +

    The search is insensitive to character case and + accents, independantly of the type of index.

    +
  • + +
  • +

    An entry without any wild card character and not + capitalized will be prepended and appended with '*' + (ie: etc + -> *etc*, but + Etc -> + etc).

    +
  • + +
  • +

    If you have a big index (many files), + excessively generic fragments may result in + inefficient searches.

    +
  • +
+
+ +

You can search for exact phrases (adjacent words in a + given order) by enclosing the input inside double quotes. + Ex: "virtual reality".

+ +

When using a stripped index, character case has no + influence on search, except that you can disable stem + expansion for any term by capitalizing it. Ie: a search + for floor will also normally + look for flooring, + floored, etc., but a search + for Floor will only look for + floor, in any character + case. Stemming can also be disabled globally in the + preferences. When using a raw index, the + rules are a bit more complicated.

+ +

Recoll remembers the + last few searches that you performed. You can use the + simple search text entry widget (a combobox) to recall + them (click on the thing at the right of the text field). + Please note, however, that only the search texts are + remembered, not the mode (all/any/file name).

+ +

Typing Esc Space while entering a + word in the simple search entry will open a window with + possible completions for the word. The completions are + extracted from the database.

+ +

Double-clicking on a word in the result list or a + preview window will insert it into the simple search + entry field.

+ +

You can cut and paste any text into an All terms or Any + term search field, punctuation, newlines and all - + except for wildcard characters (single ? characters are ok). Recoll will process it and produce a + meaningful search. This is what most differentiates this + mode from the Query + Language mode, where you have to care about the + syntax.

+ +

You can use the ToolsAdvanced search dialog for more + complex searches.

+
+ +
+
+
+
+

3.1.2. The + default result list

+
+
+
+ +

After starting a search, a list of results will + instantly be displayed in the main list window.

+ +

By default, the document list is presented in order of + relevance (how well the system estimates that the + document matches the query). You can sort the result by + ascending or descending date by using the vertical arrows + in the toolbar.

+ +

Clicking on the Preview + link for an entry will open an internal preview window + for the document. Further Preview clicks for the same search will + open tabs in the existing preview window. You can use + Shift+Click + to force the creation of another preview window, which + may be useful to view the documents side by side. (You + can also browse successive results in a single preview + window by typing Shift+ArrowUp/Down in the + window).

+ +

Clicking the Open link + will start an external viewer for the document. By + default, Recoll lets the + desktop choose the appropriate application for most + document types (there is a short list of exceptions, see + further). If you prefer to completely customize the + choice of applications, you can uncheck the Use desktop preferences option in the + GUI preferences dialog, and click the Choose editor applications button to + adjust the predefined Recoll choices. The tool accepts + multiple selections of MIME types (e.g. to set up the + editor for the dozens of office file types).

+ +

Even when Use desktop + preferences is checked, there is a small list of + exceptions, for MIME types where the Recoll choice should override the + desktop one. These are applications which are well + integrated with Recoll, + especially evince for + viewing PDF and Postscript files because of its support + for opening the document at a specific page and passing a + search string as an argument. Of course, you can edit the + list (in the GUI preferences) if you would prefer to lose + the functionality and use the standard desktop tool.

+ +

You may also change the choice of applications by + editing the mimeview configuration file if you + find this more convenient.

+ +

Each result entry also has a right-click menu with an + Open With entry. This lets + you choose an application from the list of those which + registered with the desktop for the document MIME + type.

+ +

The Preview and + Open edit links may not be + present for all entries, meaning that Recoll has no configured way to + preview a given file type (which was indexed by name + only), or no configured external editor for the file + type. This can sometimes be adjusted simply by tweaking + the mimemap and mimeview configuration files (the + latter can be modified with the user preferences + dialog).

+ +

The format of the result list entries is entirely + configurable by using the preference dialog to edit an HTML + fragment.

+ +

You can click on the Query + details link at the top of the results page to see + the query actually performed, after stem expansion and + other processing.

+ +

Double-clicking on any word inside the result list or + a preview window will insert it into the simple search + text.

+ +

The result list is divided into pages (the size of + which you can change in the preferences). Use the arrow + buttons in the toolbar or the links at the bottom of the + page to browse the results.

+ +
+
+
+
+

3.1.2.1. No + results: the spelling suggestions

+
+
+
+ +

When a search yields no result, and if the + aspell dictionary is + configured, Recoll + will try to check for misspellings among the query + terms, and will propose lists of replacements. Clicking + on one of the suggestions will replace the word and + restart the search. You can hold any of the modifier + keys (Ctrl, Shift, etc.) while clicking if you would + rather stay on the suggestion screen because several + terms need replacement.

+
+ +
+
+
+
+

3.1.2.2. The + result list right-click menu

+
+
+
+ +

Apart from the preview and edit links, you can + display a pop-up menu by right-clicking over a + paragraph in the result list. This menu has the + following entries:

+ +
+
    +
  • +

    Preview

    +
  • + +
  • +

    Open

    +
  • + +
  • +

    Open With

    +
  • + +
  • +

    Run Script

    +
  • + +
  • +

    Copy File + Name

    +
  • + +
  • +

    Copy Url

    +
  • + +
  • +

    Save to File

    +
  • + +
  • +

    Find similar

    +
  • + +
  • +

    Preview Parent + document

    +
  • + +
  • +

    Open Parent + document

    +
  • + +
  • +

    Open Snippets + Window

    +
  • +
+
+ +

The Preview and + Open entries do the same + thing as the corresponding links.

+ +

Open With lets you + open the document with one of the applications claiming + to be able to handle its MIME type (the information + comes from the .desktop + files in /usr/share/applications).

+ +

Run Script allows + starting an arbitrary command on the result file. It + will only appear for results which are top-level files. + See + further for a more detailed description.

+ +

The Copy File Name and + Copy Url copy the + relevant data to the clipboard, for later pasting.

+ +

Save to File allows + saving the contents of a result document to a chosen + file. This entry will only appear if the document does + not correspond to an existing file, but is a + subdocument inside such a file (ie: an email + attachment). It is especially useful to extract + attachments with no associated editor.

+ +

The Open/Preview Parent + document entries allow working with the higher + level document (e.g. the email message an attachment + comes from). Recoll is + sometimes not totally accurate as to what it can or + can't do in this area. For example the Parent entry will also appear for an + email which is part of an mbox folder file, but you + can't actually visualize the mbox (there will be an + error dialog if you try).

+ +

If the document is a top-level file, Open Parent will start the default + file manager on the enclosing filesystem directory.

+ +

The Find similar entry + will select a number of relevant term from the current + document and enter them into the simple search field. + You can then start a simple search, with a good chance + of finding documents related to the current result. I + can't remember a single instance where this function + was actually useful to me...

+ +

The + Open Snippets Window + entry will only appear for documents which support page + breaks (typically PDF, Postscript, DVI). The snippets + window lists extracts from the document, taken around + search terms occurrences, along with the corresponding + page number, as links which can be used to start the + native viewer on the appropriate page. If the viewer + supports it, its search function will also be primed + with one of the search terms.

+
+
+ +
+
+
+
+

3.1.3. The + result table

+
+
+
+ +

In Recoll 1.15 and + newer, the results can be displayed in spreadsheet-like + fashion. You can switch to this presentation by clicking + the table-like icon in the toolbar (this is a toggle, + click again to restore the list).

+ +

Clicking on the column headers will allow sorting by + the values in the column. You can click again to invert + the order, and use the header right-click menu to reset + sorting to the default relevance order (you can also use + the sort-by-date arrows to do this).

+ +

Both the list and the table display the same + underlying results. The sort order set from the table is + still active if you switch back to the list mode. You can + click twice on a date sort arrow to reset it from + there.

+ +

The header right-click menu allows adding or deleting + columns. The columns can be resized, and their order can + be changed (by dragging). All the changes are recorded + when you quit recoll

+ +

Hovering over a table row will update the detail area + at the bottom of the window with the corresponding + values. You can click the row to freeze the display. The + bottom area is equivalent to a result list paragraph, + with links for starting a preview or a native + application, and an equivalent right-click menu. Typing + Esc (the + Escape key) will unfreeze the display.

+
+ +
+
+
+
+

3.1.4. Running + arbitrary commands on result files (1.20 and + later)

+
+
+
+ +

Apart from the Open and + Open With operations, which + allow starting an application on a result document (or a + temporary copy), based on its MIME type, it is also + possible to run arbitrary commands on results which are + top-level files, using the Run + Script entry in the results pop-up menu.

+ +

The commands which will appear in the Run Script submenu must be defined by + .desktop files inside the + scripts subdirectory of the + current configuration directory.

+ +

Here follows an example of a .desktop file, which could be named for + example, ~/.recoll/scripts/myscript.desktop (the + exact file name inside the directory is irrelevant):

+
+[Desktop Entry]
+Type=Application
+Name=MyFirstScript
+Exec=/home/me/bin/tryscript %F
+MimeType=*/*
+      
+
+ +

The Name attribute + defines the label which will appear inside the + Run Script menu. The + Exec attribute defines the + program to be run, which does not need to actually be a + script, of course. The MimeType attribute is not used, but + needs to exist.

+ +

The commands defined this way can also be used from + links inside the result paragraph.

+ +

As an example, it might make sense to write a script + which would move the document to the trash and purge it + from the Recoll + index.

+
+ +
+
+
+
+

3.1.5. Displaying + thumbnails

+
+
+
+ +

The default format for the result list entries and the + detail area of the result table display an icon for each + result document. The icon is either a generic one + determined from the MIME type, or a thumbnail of the + document appearance. Thumbnails are only displayed if + found in the standard freedesktop location, where they + would typically have been created by a file manager.

+ +

Recoll has no capability to create thumbnails. A + relatively simple trick is to use the Open parent document/folder entry in + the result list popup menu. This should open a file + manager window on the containing directory, which should + in turn create the thumbnails (depending on your + settings). Restarting the search should then display the + thumbnails.

+ +

There are also some pointers about thumbnail + generation on the Recoll wiki.

+
+ +
+
+
+
+

3.1.6. The + preview window

+
+
+
+ +

The preview window opens when you first click a + Preview link inside the + result list.

+ +

Subsequent preview requests for a given search open + new tabs in the existing window (except if you hold the + Shift key + while clicking which will open a new window for side by + side viewing).

+ +

Starting another search and requesting a preview will + create a new preview window. The old one stays open until + you close it.

+ +

You can close a preview tab by typing Ctrl-W (Ctrl + W) in the window. + Closing the last tab for a window will also close the + window.

+ +

Of course you can also close a preview window by using + the window manager button in the top of the frame.

+ +

You can display successive or previous documents from + the result list inside a preview tab by typing + Shift+Down or Shift+Up (Down and Up are the arrow + keys).

+ +

A right-click menu in the text area allows switching + between displaying the main text or the contents of + fields associated to the document (ie: author, abtract, + etc.). This is especially useful in cases where the term + match did not occur in the main text but in one of the + fields. In the case of images, you can switch between + three displays: the image itself, the image metadata as + extracted by exiftool and the + fields, which is the metadata stored in the index.

+ +

You can print the current preview window contents by + typing Ctrl-P (Ctrl + P) in the window + text.

+ +
+
+
+
+

3.1.6.1. Searching + inside the preview

+
+
+
+ +

The preview window has an internal search + capability, mostly controlled by the panel at the + bottom of the window, which works in two modes: as a + classical editor incremental search, where we look for + the text entered in the entry zone, or as a way to walk + the matches between the document and the Recoll query that found it.

+ +
+
+
Incremental text + search
+ +
+

The preview tabs have an internal incremental + search function. You initiate the search either + by typing a / (slash) or + CTL-F inside the + text area or by clicking into the Search for: text field and + entering the search string. You can then use the + Next and + Previous buttons to + find the next/previous occurrence. You can also + type F3 inside the + text area to get to the next occurrence.

+ +

If you have a search string entered and you + use Ctrl-Up/Ctrl-Down to browse the results, the + search is initiated for each successive document. + If the string is found, the cursor will be + positioned at the first occurrence of the search + string.

+
+ +
Walking the match + lists
+ +
+

If the entry area is empty when you click the + Next or + Previous buttons, + the editor will be scrolled to show the next + match to any search term (the next highlighted + zone). If you select a search group from the + dropdown list and click Next or Previous, the match list for + this group will be walked. This is not the same + as a text search, because the occurences will + include non-exact matches (as caused by stemming + or wildcards). The search will revert to the text + mode as soon as you edit the entry area.

+
+
+
+
+
+ +
+
+
+
+

3.1.7. The + Query Fragments window

+
+
+
+ +

Selecting the Tools + → Query Fragments + menu entry will open a window with radio- and + check-buttons which can be used to activate query + language fragments for filtering the current query. This + can be useful if you have frequent reusable selectors, + for example, filtering on alternate directories, or + searching just one category of files, not covered by the + standard category selectors.

+ +

The contents of the window are entirely customizable, + and defined by the contents of the fragbuts.xml file inside the + configuration directory. The sample file distributed with + Recoll (which you should + be able to find under /usr/share/recoll/examples/fragbuts.xml), + contains an example which filters the results from the + WEB history.

+ +

Here follows an example:

+
+<?xml version="1.0" encoding="UTF-8"?>
+
+<fragbuts version="1.0">
+
+  <radiobuttons>
+
+    <fragbut>
+      <label>Include Web Results</label>
+      <frag></frag>
+    </fragbut>
+
+    <fragbut>
+      <label>Exclude Web Results</label>
+      <frag>-rclbes:BGL</frag>
+    </fragbut>
+
+    <fragbut>
+      <label>Only Web Results</label>
+      <frag>rclbes:BGL</frag>
+    </fragbut>
+
+  </radiobuttons>
+
+  <buttons>
+
+    <fragbut>
+      <label>Year 2010</label>
+      <frag>date:2010-01-01/2010-12-31</frag>
+    </fragbut>
+
+    <fragbut>
+      <label>My Great Directory Only</label>
+      <frag>dir:/my/great/directory</frag>
+    </fragbut>
+
+  </buttons>
+</fragbuts>
+
+ +

Each radiobuttons or + buttons section defines a + line of checkbuttons or radiobuttons inside the window. + Any number of buttons can be selected, but the + radiobuttons in a line are exclusive.

+ +

Each fragbut section + defines the label for a button, and the Query Language + fragment which will be added (as an AND filter) before + performing the query if the button is active.

+ +

This feature is new in Recoll 1.20, and will probably be + refined depending on user feedback.

+
+ +
+
+
+
+

3.1.8. Complex/advanced + search

+
+
+
+ +

The advanced search dialog helps you build more + complex queries without memorizing the search language + constructs. It can be opened through the Tools menu or through the main + toolbar.

+ +

Recoll keeps a + history of searches. See Advanced search + history.

+ +

The dialog has two tabs:

+ +
+
    +
  1. +

    The first tab lets you specify terms to search + for, and permits specifying multiple clauses which + are combined to build the search.

    +
  2. + +
  3. +

    The second tab lets filter the results according + to file size, date of modification, MIME type, or + location.

    +
  4. +
+
+ +

Click on the Start + Search button in the advanced search dialog, or + type Enter + in any text field to start the search. The button in the + main window always performs a simple search.

+ +

Click on the Show query + details link at the top of the result page to see + the query expansion.

+ +
+
+
+
+

3.1.8.1. Avanced + search: the "find" tab

+
+
+
+ +

This part of the dialog lets you constructc a query + by combining multiple clauses of different types. Each + entry field is configurable for the following + modes:

+ +
+
    +
  • +

    All terms.

    +
  • + +
  • +

    Any term.

    +
  • + +
  • +

    None of the terms.

    +
  • + +
  • +

    Phrase (exact terms in order within an + adjustable window).

    +
  • + +
  • +

    Proximity (terms in any order within an + adjustable window).

    +
  • + +
  • +

    Filename search.

    +
  • +
+
+ +

Additional entry fields can be created by clicking + the Add clause + button.

+ +

When searching, the non-empty clauses will be + combined either with an AND or an OR conjunction, + depending on the choice made on the left (All clauses or Any clause).

+ +

Entries of all types except "Phrase" and "Near" + accept a mix of single words and phrases enclosed in + double quotes. Stemming and wildcard expansion will be + performed as for simple search.

+ +

Phrases and Proximity searches. These + two clauses work in similar ways, with the difference + that proximity searches do not impose an order on the + words. In both cases, an adjustable number (slack) of + non-matched words may be accepted between the searched + ones (use the counter on the left to adjust this + count). For phrases, the default count is zero (exact + match). For proximity it is ten (meaning that two + search terms, would be matched if found within a window + of twelve words). Examples: a phrase search for + quick fox with a slack of + 0 will match quick fox but + not quick brown fox. With + a slack of 1 it will match the latter, but not + fox quick. A proximity + search for quick fox with + the default slack will match the latter, and also + a fox is a cunning and quick + animal.

+
+ +
+
+
+
+

3.1.8.2. Avanced + search: the "filter" tab

+
+
+
+ +

This part of the dialog has several sections which + allow filtering the results of a search according to a + number of criteria

+ +
+
    +
  • +

    The first section allows filtering by dates of + last modification. You can specify both a minimum + and a maximum date. The initial values are set + according to the oldest and newest documents + found in the index.

    +
  • + +
  • +

    The next section allows filtering the results + by file size. There are two entries for minimum + and maximum size. Enter decimal numbers. You can + use suffix multipliers: k/K, m/M, g/G, t/T for 1E3, 1E6, 1E9, 1E12 + respectively.

    +
  • + +
  • +

    The next section allows filtering the results + by their MIME types, or MIME categories (ie: + media/text/message/etc.).

    + +

    You can transfer the types between two boxes, + to define which will be included or excluded by + the search.

    + +

    The state of the file type selection can be + saved as the default (the file type filter will + not be activated at program start-up, but the + lists will be in the restored state).

    +
  • + +
  • +

    The bottom section allows restricting the + search results to a sub-tree of the indexed area. + You can use the Invert checkbox to search for + files not in the sub-tree instead. If you use + directory filtering often and on big subsets of + the file system, you may think of setting up + multiple indexes instead, as the performance may + be better.

    + +

    You can use relative/partial paths for + filtering. Ie, entering dirA/dirB would match either + /dir1/dirA/dirB/myfile1 or + /dir2/dirA/dirB/someother/myfile2.

    +
  • +
+
+
+ +
+
+
+
+

3.1.8.3. Avanced + search history

+
+
+
+ +

The advanced search tool memorizes the last 100 + searches performed. You can walk the saved searches by + using the up and down arrow keys while the keyboard + focus belongs to the advanced search dialog.

+ +

The complex search history can be erased, along with + the one for simple search, by selecting the + FileErase Search History menu + entry.

+
+
+ +
+
+
+
+

3.1.9. The + term explorer tool

+
+
+
+ +

Recoll automatically + manages the expansion of search terms to their + derivatives (ie: plural/singular, verb inflections). But + there are other cases where the exact search term is not + known. For example, you may not remember the exact + spelling, or only know the beginning of the name.

+ +

The search will only propose replacement terms with + spelling variations when no matching document were found. + In some cases, both proper spellings and mispellings are + present in the index, and it may be interesting to look + for them explicitely.

+ +

The term explorer tool (started from the toolbar icon + or from the Term explorer + entry of the Tools menu) + can be used to search the full index terms list. It has + three modes of operations:

+ +
+
+
Wildcard
+ +
+

In this mode of operation, you can enter a + search string with shell-like wildcards (*, ?, []). + ie: xapi* + would display all index terms beginning with + xapi. + (More about wildcards here).

+
+ +
Regular expression
+ +
+

This mode will accept a regular expression as + input. Example: word[0-9]+. The + expression is implicitely anchored at the + beginning. Ie: press will match + pression + but not expression. You can + use .*press to match + the latter, but be aware that this will cause a + full index term list scan, which can be quite + long.

+
+ +
Stem expansion
+ +
+

This mode will perform the usual stem expansion + normally done as part user input processing. As + such it is probably mostly useful to demonstrate + the process.

+
+ +
Spelling/Phonetic
+ +
+

In this mode, you enter the term as you think it + is spelled, and Recoll will do its best to + find index terms that sound like your entry. This + mode uses the Aspell spelling application, + which must be installed on your system for things + to work (if your documents contain non-ascii + characters, Recoll + needs an aspell version newer than 0.60 for UTF-8 + support). The language which is used to build the + dictionary out of the index terms (which is done at + the end of an indexing pass) is the one defined by + your NLS environment. Weird things will probably + happen if languages are mixed up.

+
+
+
+ +

Note that in cases where Recoll does not know the beginning + of the string to search for (ie a wildcard expression + like *coll), + the expansion can take quite a long time because the full + index term list will have to be processed. The expansion + is currently limited at 10000 results for wildcards and + regular expressions. It is possible to change the limit + in the configuration file.

+ +

Double-clicking on a term in the result list will + insert it into the simple search entry field. You can + also cut/paste between the result list and any entry + field (the end of lines will be taken care of).

+
+ +
+
+
+
+

3.1.10. Multiple + indexes

+
+
+
+ +

See the section describing the use + of multiple indexes for generalities. Only the + aspects concerning the recoll GUI are + described here.

+ +

A recoll + program instance is always associated with a specific + index, which is the one to be updated when requested from + the File menu, but it can + use any number of Recoll + indexes for searching. The external indexes can be + selected through the external + indexes tab in the preferences dialog.

+ +

Index selection is performed in two phases. A set of + all usable indexes must first be defined, and then the + subset of indexes to be used for searching. These + parameters are retained across program executions (there + are kept separately for each Recoll configuration). The set of + all indexes is usually quite stable, while the active + ones might typically be adjusted quite frequently.

+ +

The main index (defined by RECOLL_CONFDIR) is always active. If this + is undesirable, you can set up your base configuration to + index an empty directory.

+ +

When adding a new index to the set, you can select + either a Recoll + configuration directory, or directly a Xapian index directory. In the first + case, the Xapian index + directory will be obtained from the selected + configuration.

+ +

As building the set of all indexes can be a little + tedious when done through the user interface, you can use + the RECOLL_EXTRA_DBS + environment variable to provide an initial set. This + might typically be set up by a system administrator so + that every user does not have to do it. The variable + should define a colon-separated list of index + directories, ie:

+
+export RECOLL_EXTRA_DBS=/some/place/xapiandb:/some/other/db
+
+ +

Another environment variable, RECOLL_ACTIVE_EXTRA_DBS allows adding to + the active list of indexes. This variable was suggested + and implemented by a Recoll user. It is mostly useful if + you use scripts to mount external volumes with + Recoll indexes. By using + RECOLL_EXTRA_DBS and + RECOLL_ACTIVE_EXTRA_DBS, you + can add and activate the index for the mounted volume + when starting recoll.

+ +

RECOLL_ACTIVE_EXTRA_DBS is + available for Recoll + versions 1.17.2 and later. A change was made in the same + update so that recoll will + automatically deactivate unreachable indexes when + starting up.

+
+ +
+
+
+
+

3.1.11. Document + history

+
+
+
+ +

Documents that you actually view (with the internal + preview or an external tool) are entered into the + document history, which is remembered.

+ +

You can display the history list by using the + Tools/Doc History menu entry.

+ +

You can erase the document history by using the + Erase document history + entry in the File menu.

+
+ +
+
+
+
+

3.1.12. Sorting + search results and collapsing duplicates

+
+
+
+ +

The documents in a result list are normally sorted in + order of relevance. It is possible to specify a different + sort order, either by using the vertical arrows in the + GUI toolbox to sort by date, or switching to the result + table display and clicking on any header. The sort order + chosen inside the result table remains active if you + switch back to the result list, until you click one of + the vertical arrows, until both are unchecked (you are + back to sort by relevance).

+ +

Sort parameters are remembered between program + invocations, but result sorting is normally always + inactive when the program starts. It is possible to keep + the sorting activation state between program invocations + by checking the Remember sort + activation state option in the preferences.

+ +

It is also possible to hide duplicate entries inside + the result list (documents with the exact same contents + as the displayed one). The test of identity is based on + an MD5 hash of the document container, not only of the + text contents (so that ie, a text document with an image + added will not be a duplicate of the text only). + Duplicates hiding is controlled by an entry in the + GUI configuration dialog, + and is off by default.

+ +

As of release 1.19, when a result document does have + undisplayed duplicates, a Dups link will be shown with the result + list entry. Clicking the link will display the paths + (URLs + ipaths) for the duplicate entries.

+
+ +
+
+
+
+

3.1.13. Search tips, + shortcuts

+
+
+
+ +
+
+
+
+

3.1.13.1. Terms + and search expansion

+
+
+
+ +

Term completion. Typing Esc Space in the simple + search entry field while entering a word will either + complete the current word if its beginning matches a + unique term in the index, or open a window to propose a + list of completions.

+ +

Picking up new terms from result or preview + text. Double-clicking on a word in the result + list or in a preview window will copy it to the simple + search entry field.

+ +

Wildcards. Wildcards can be used inside + search terms in all forms of searches. More about + wildcards.

+ +

Automatic suffixes. Words like + odt or ods can be automatically turned into + query language ext:xxx + clauses. This can be enabled in the Search preferences panel in the + GUI.

+ +

Disabling stem expansion. Entering a + capitalized word in any search field will prevent stem + expansion (no search for gardening if you enter Garden instead of garden). This is the only case where + character case should make a difference for a + Recoll search. You can + also disable stem expansion or change the stemming + language in the preferences.

+ +

Finding related documents. Selecting the + Find similar documents + entry in the result list paragraph right-click menu + will select a set of "interesting" terms from the + current result, and insert them into the simple search + entry field. You can then possibly edit the list and + start a search to find documents which may be + apparented to the current result.

+ +

File names. File names are added as + terms during indexing, and you can specify them as + ordinary terms in normal search fields (Recoll used to index all + directories in the file path as terms. This has been + abandoned as it did not seem really useful). + Alternatively, you can use the specific file name + search which will only look for file names, + and may be faster than the generic search especially + when using wildcards.

+
+ +
+
+
+
+

3.1.13.2. Working + with phrases and proximity

+
+
+
+ +

Phrases and Proximity searches. A phrase + can be looked for by enclosing it in double quotes. + Example: "user manual" + will look only for occurrences of user immediately followed by + manual. You can use the + This phrase field of the + advanced search dialog to the same effect. Phrases can + be entered along simple terms in all simple or advanced + search entry fields (except This + exact phrase).

+ +

AutoPhrases. This option can be set in + the preferences dialog. If it is set, a phrase will be + automatically built and added to simple searches when + looking for Any terms. + This will not change radically the results, but will + give a relevance boost to the results where the search + terms appear as a phrase. Ie: searching for + virtual reality will still + find all documents where either virtual or reality or both appear, but those + which contain virtual + reality should appear sooner in the list.

+ +

Phrase searches can strongly slow down a query if + most of the terms in the phrase are common. This is why + the autophrase option is + off by default for Recoll versions before 1.17. As of + version 1.17, autophrase + is on by default, but very common terms will be removed + from the constructed phrase. The removal threshold can + be adjusted from the search preferences.

+ +

Phrases and abbreviations. As of + Recoll version 1.17, + dotted abbreviations like I.B.M. are also automatically indexed + as a word without the dots: IBM. Searching for the word inside a + phrase (ie: "the IBM + company") will only match the dotted + abrreviation if you increase the phrase slack (using + the advanced search panel control, or the o query language modifier). Literal + occurences of the word will be matched normally.

+
+ +
+
+
+
+

3.1.13.3. Others

+
+
+
+ +

Using fields. You can use the query language and + field specifications to only search certain parts of + documents. This can be especially helpful with email, + for example only searching emails from a specific + originator: search tips + from:helpfulgui

+ +

Ajusting the result table columns. When + displaying results in table mode, you can use a right + click on the table headers to activate a pop-up menu + which will let you adjust what columns are displayed. + You can drag the column headers to adjust their order. + You can click them to sort by the field displayed in + the column. You can also save the result list in CSV + format.

+ +

Changing the GUI geometry. It is + possible to configure the GUI in wide form factor by + dragging the toolbars to one of the sides (their + location is remembered between sessions), and moving + the category filters to a menu (can be set in the + Preferences → + GUI configuration + → User interface + panel).

+ +

Query explanation. You can get an exact + description of what the query looked for, including + stem expansion, and Boolean operators used, by clicking + on the result list header.

+ +

Advanced search history. As of + Recoll 1.18, you can + display any of the last 100 complex searches performed + by using the up and down arrow keys while the advanced + search panel is active.

+ +

Browsing the result list inside a preview + window. Entering Shift-Down or + Shift-Up + (Shift + + an arrow key) in a preview window will display the next + or the previous document from the result list. Any + secondary search currently active will be executed on + the new document.

+ +

Scrolling the result list from the + keyboard. You can use PageUp and + PageDown + to scroll the result list, Shift+Home to go back + to the first page. These work even while the focus is + in the search entry.

+ +

Result table: moving the focus to the + table. You can use Ctrl-r to move the + focus from the search entry to the table, and then use + the arrow keys to change the current row. Ctrl-Shift-s returns + to the search.

+ +

Result table: open / preview. With the + focus in the result table, you can use Ctrl-o to open the + document from the current row, Ctrl-Shift-o to open + the document and close recoll, Ctrl-d to preview the + document.

+ +

Editing a new search while the focus is not in + the search entry. You can use the Ctrl-Shift-S shortcut + to return the cursor to the search entry (and select + the current search text), while the focus is anywhere + in the main window.

+ +

Forced opening of a preview window. You + can use Shift+Click on a + result list Preview link + to force the creation of a preview window instead of a + new tab in the existing one.

+ +

Closing previews. Entering Ctrl-W in a tab will + close it (and, for the last tab, close the preview + window). Entering Esc will close the + preview window and all its tabs.

+ +

Printing previews. Entering Ctrl-P in a preview + window will print the currently displayed text.

+ +

Quitting. Entering Ctrl-Q almost anywhere + will close the application.

+
+
+ +
+
+
+
+

3.1.14. Saving and + restoring queries (1.21 and later)

+
+
+
+ +

Both simple and advanced query dialogs save recent + history, but the amount is limited: old queries will + eventually be forgotten. Also, important queries may be + difficult to find among others. This is why both types of + queries can also be explicitely saved to files, from the + GUI menus: File → + Save last query / Load last + query

+ +

The default location for saved queries is a + subdirectory of the current configuration directory, but + saved queries are ordinary files and can be written or + moved anywhere.

+ +

Some of the saved query parameters are part of the + preferences (e.g. autophrase + or the active external indexes), and may differ when the + query is loaded from the time it was saved. In this case, + Recoll will warn of the + differences, but will not change the user + preferences.

+
+ +
+
+
+
+

3.1.15. Customizing + the search interface

+
+
+
+ +

You can customize some aspects of the search interface + by using the GUI + configuration entry in the Preferences menu.

+ +

There are several tabs in the dialog, dealing with the + interface itself, the parameters used for searching and + returning results, and what indexes are searched.

+ +

User interface + parameters: 

+ +
+
    +
  • +

    Highlight color for query + terms: Terms from the user query are + highlighted in the result list samples and the + preview window. The color can be chosen here. Any + Qt color string should work (ie red, #ff0000). The default is + blue.

    +
  • + +
  • +

    Style sheet: The + name of a Qt style + sheet text file which is applied to the whole + Recoll application on startup. The default value is + empty, but there is a skeleton style sheet + (recoll.qss) inside + the /usr/share/recoll/examples + directory. Using a style sheet, you can change most + recoll graphical + parameters: colors, fonts, etc. See the sample file + for a few simple examples.

    + +

    You should be aware that parameters (e.g.: the + background color) set inside the Recoll GUI style sheet will + override global system preferences, with possible + strange side effects: for example if you set the + foreground to a light color and the background to a + dark one in the desktop preferences, but only the + background is set inside the Recoll style sheet, and it is + light too, then text will appear light-on-light + inside the Recoll + GUI.

    +
  • + +
  • +

    Maximum text size + highlighted for preview Inserting highlights + on search term inside the text before inserting it + in the preview window involves quite a lot of + processing, and can be disabled over the given text + size to speed up loading.

    +
  • + +
  • +

    Prefer HTML to plain text + for preview if set, Recoll will display HTML + as such inside the preview window. If this causes + problems with the Qt HTML display, you can uncheck + it to display the plain text version instead.

    +
  • + +
  • +

    Plain text to HTML line + style: when displaying plain text inside the + preview window, Recoll tries to preserve some + of the original text line breaks and indentation. + It can either use PRE HTML tags, which will well + preserve the indentation but will force horizontal + scrolling for long lines, or use BR tags to break + at the original line breaks, which will let the + editor introduce other line breaks according to the + window width, but will lose some of the original + indentation. The third option has been available in + recent releases and is probably now the best one: + use PRE tags with line wrapping.

    +
  • + +
  • +

    Choose editor + applicationsr: this opens a dialog which + allows you to select the application to be used to + open each MIME type. The default is nornally to use + the xdg-open utility, + but you can override it.

    +
  • + +
  • +

    Exceptions: even + wen xdg-open is used + by default for opening documents, you can set + exceptions for MIME types that will still be opened + according to Recoll preferences. This is + useful for passing parameters like page numbers or + search strings to applications that support them + (e.g. evince). + This cannot be done with xdg-open which + only supports passing one parameter.

    +
  • + +
  • +

    Document filter choice + style: this will let you choose if the + document categories are displayed as a list or a + set of buttons, or a menu.

    +
  • + +
  • +

    Start with simple search + mode: this lets you choose the value of the + simple search type on program startup. Either a + fixed value (e.g. Query + Language, or the value in use when the + program last exited.

    +
  • + +
  • +

    Auto-start simple search + on white space entry: if this is checked, a + search will be executed each time you enter a space + in the simple search input field. This lets you + look at the result list as you enter new terms. + This is off by default, you may like it or + not...

    +
  • + +
  • +

    Start with advanced + search dialog open : If you use this dialog + frequently, checking the entries will get it to + open when recoll starts.

    +
  • + +
  • +

    Remember sort activation + state if set, Recoll will remember the sort + tool stat between invocations. It normally starts + with sorting disabled.

    +
  • +
+
+ +

Result list + parameters: 

+ +
+
    +
  • +

    Number of results in a + result page

    +
  • + +
  • +

    Result list font: + There is quite a lot of information shown in the + result list, and you may want to customize the font + and/or font size. The rest of the fonts used by + Recoll are + determined by your generic Qt config (try the + qtconfig + command).

    +
  • + +
  • +

    Edit result list paragraph format + string: allows you to change the + presentation of each result list entry. See the + result list + customisation section.

    +
  • + +
  • +

    Edit result page HTML header + insert: allows you to define text inserted + at the end of the result page HTML header. More + detail in the result list + customisation section.

    +
  • + +
  • +

    Date format: + allows specifying the format used for displaying + dates inside the result list. This should be + specified as an strftime() string (man + strftime).

    +
  • + +
  • +

    Abstract snippet separator: for + synthetic abstracts built from index data, which + are usually made of several snippets from different + parts of the document, this defines the snippet + separator, an ellipsis by default.

    +
  • +
+
+ +

Search + parameters: 

+ +
+
    +
  • +

    Hide duplicate + results: decides if result list entries are + shown for identical documents found in different + places.

    +
  • + +
  • +

    Stemming language: + stemming obviously depends on the document's + language. This listbox will let you chose among the + stemming databases which were built during indexing + (this is set in the + main configuration file), or later added with + recollindex + -s (See the recollindex manual). + Stemming languages which are dynamically added will + be deleted at the next indexing pass unless they + are also added in the configuration file.

    +
  • + +
  • +

    Automatically add phrase + to simple searches: a phrase will be + automatically built and added to simple searches + when looking for Any + terms. This will give a relevance boost to + the results where the search terms appear as a + phrase (consecutive and in order).

    +
  • + +
  • +

    Autophrase term frequency + threshold percentage: very frequent terms + should not be included in automatic phrase searches + for performance reasons. The parameter defines the + cutoff percentage (percentage of the documents + where the term appears).

    +
  • + +
  • +

    Replace abstracts from + documents: this decides if we should + synthesize and display an abstract in place of an + explicit abstract found within the document + itself.

    +
  • + +
  • +

    Dynamically build + abstracts: this decides if Recoll tries to build document + abstracts (lists of snippets) when + displaying the result list. Abstracts are + constructed by taking context from the document + information, around the search terms.

    +
  • + +
  • +

    Synthetic abstract + size: adjust to taste...

    +
  • + +
  • +

    Synthetic abstract + context words: how many words should be + displayed around each term occurrence.

    +
  • + +
  • +

    Query language magic file + name suffixes: a list of words which + automatically get turned into ext:xxx file name suffix clauses + when starting a query language query (ie: + doc xls xlsx...). This + will save some typing for people who use file types + a lot when querying.

    +
  • +
+
+ +

External + indexes: This panel will let you browse for + additional indexes that you may want to search. External + indexes are designated by their database directory (ie: + /home/someothergui/.recoll/xapiandb, + /usr/local/recollglobal/xapiandb).

+ +

Once entered, the indexes will appear in the + External indexes list, and + you can chose which ones you want to use at any moment by + checking or unchecking their entries.

+ +

Your main database (the one the current configuration + indexes to), is always implicitly active. If this is not + desirable, you can set up your configuration so that it + indexes, for example, an empty directory. An alternative + indexer may also need to implement a way of purging the + index from stale data,

+ +
+
+
+
+

3.1.15.1. The + result list format

+
+
+
+ +

Newer versions of Recoll (from 1.17) normally use + WebKit HTML widgets for the result list and the + snippets + window (this may be disabled at build time). Total + customisation is possible with full support for CSS and + Javascript. Conversely, there are limits to what you + can do with the older Qt QTextBrowser, but still, it is + possible to decide what data each result will contain, + and how it will be displayed.

+ +

The result list presentation can be exhaustively + customized by adjusting two elements:

+ +
+
    +
  • +

    The paragraph format

    +
  • + +
  • +

    HTML code inside the header section. For + versions 1.21 and later, this is also used for + the snippets + window

    +
  • +
+
+ +

The paragraph format and the header fragment can be + edited from the Result + list tab of the GUI + configuration.

+ +

The header fragment is used both for the result list + and the snippets window. The snippets list is a table + and has a snippets class + attribute. Each paragraph in the result list is a + table, with class respar, + but this can be changed by editing the paragraph + format.

+ +

There are a few examples on the page about customising the result list on + the Recoll web + site.

+ +
+
+
+
+
The + paragraph format
+
+
+
+ +

This is an arbitrary HTML string where the + following printf-like % + substitutions will be performed:

+ +
+
    +
  • +

    %A. Abstract

    +
  • + +
  • +

    %D. Date

    +
  • + +
  • +

    %I. Icon image name. This is + normally determined from the MIME type. The + associations are defined inside the mimeconf configuration + file. If a thumbnail for the file is found + at the standard Freedesktop location, this will + be displayed instead.

    +
  • + +
  • +

    %K. Keywords (if any)

    +
  • + +
  • +

    %L. Precooked Preview, Edit, and + possibly Snippets links

    +
  • + +
  • +

    %M. MIME type

    +
  • + +
  • +

    %N. result Number inside the + result page

    +
  • + +
  • +

    %P. Parent folder Url. In the + case of an embedded document, this is the + parent folder for the top level container + file.

    +
  • + +
  • +

    %R. Relevance percentage

    +
  • + +
  • +

    %S. Size information

    +
  • + +
  • +

    %T. Title or Filename if not + set.

    +
  • + +
  • +

    %t. Title or Filename if not + set.

    +
  • + +
  • +

    %U. Url

    +
  • +
+
+ +

The format of the Preview, Edit, and Snippets + links is <a + href="P%N">, <a + href="E%N"> and <a + href="A%N"> where docnum (%N) expands + to the document number inside the result page).

+ +

A link target defined as "F%N" will open the document + corresponding to the %P + parent folder expansion, usually creating a file + manager window on the folder where the container file + resides. E.g.:

+
+<a href="F%N">%P</a>
+
+ +

A link target defined as R%N|scriptname + will run the corresponding script on the result file + (if the document is embedded, the script will be + started on the top-level parent). See the + section about defining scripts.

+ +

In addition to the predefined values above, all + strings like %(fieldname) will be replaced by the + value of the field named fieldname for this document. Only + stored fields can be accessed in this way, the value + of indexed but not stored fields is not known at this + point in the search process (see field + configuration). There are currently very few + fields stored by default, apart from the values above + (only author and + filename), so this + feature will need some custom local configuration to + be useful. An example candidate would be the + recipient field which is + generated by the message input handlers.

+ +

The default value for the paragraph format string + is:

+
+    "<table class=\"respar\">\n"
+    "<tr>\n"
+    "<td><a href='%U'><img src='%I' width='64'></a></td>\n"
+    "<td>%L &nbsp;<i>%S</i> &nbsp;&nbsp;<b>%T</b><br>\n"
+    "<span style='white-space:nowrap'><i>%M</i>&nbsp;%D</span>&nbsp;&nbsp;&nbsp; <i>%U</i>&nbsp;%i<br>\n"
+    "%A %K</td>\n"
+    "</tr></table>\n"
+
+ +

You may, for example, try the following for a more + web-like experience:

+
+<u><b><a href="P%N">%T</a></b></u><br>
+%A<font color=#008000>%U - %S</font> - %L
+
+ +

Note that the P%N link in the above paragraph + makes the title a preview link. Or the clean + looking:

+
+<img src="%I" align="left">%L <font color="#900000">%R</font>
+&nbsp;&nbsp;<b>%T&</b><br>%S&nbsp;
+<font color="#808080"><i>%U</i></font>
+<table bgcolor="#e0e0e0">
+<tr><td><div>%A</div></td></tr>
+</table>%K
+
+ +

These samples, and some others are on the web site, with pictures to show + how they look.

+ +

It is also possible to define the value of + the snippet separator inside the abstract + section.

+
+
+
+
+ +
+
+
+
+

3.2. Searching with the KDE + KIO slave

+
+
+
+ +
+
+
+
+

3.2.1. What's + this

+
+
+
+ +

The Recoll KIO slave + allows performing a Recoll search by entering an + appropriate URL in a KDE open dialog, or with an + HTML-based interface displayed in Konqueror.

+ +

The HTML-based interface is similar to the Qt-based + interface, but slightly less powerful for now. Its + advantage is that you can perform your search while + staying fully within the KDE framework: drag and drop + from the result list works normally and you have your + normal choice of applications for opening files.

+ +

The alternative interface uses a directory view of + search results. Due to limitations in the current KIO + slave interface, it is currently not obviously useful (to + me).

+ +

The interface is described in more detail inside a + help file which you can access by entering recoll:/ inside the konqueror URL line + (this works only if the recoll KIO slave has been + previously installed).

+ +

The instructions for building this module are located + in the source tree. See: kde/kio/recoll/00README.txt. Some Linux + distributions do package the kio-recoll module, so check + before diving into the build process, maybe it's already + out there ready for one-click installation.

+
+ +
+
+
+
+

3.2.2. Searchable + documents

+
+
+
+ +

As a sample application, the Recoll KIO slave could allow + preparing a set of HTML documents (for example a manual) + so that they become their own search interface inside + konqueror.

+ +

This can be done by either explicitly inserting + <a + href="recoll://..."> links around some document + areas, or automatically by adding a very small + javascript program to + the documents, like the following example, which would + initiate a search by double-clicking any term:

+
+<script language="JavaScript">
+    function recollsearch() {
+        var t = document.getSelection();
+        window.location.href = 'recoll://search/query?qtp=a&p=0&q=' +
+            encodeURIComponent(t);
+    }
+</script>
+ ....
+<body ondblclick="recollsearch()">
+
+
+
+
+ +
+
+
+
+

3.3. Searching on + the command line

+
+
+
+ +

There are several ways to obtain search results as a + text stream, without a graphical interface:

+ +
+
    +
  • +

    By passing option -t + to the recoll program.

    +
  • + +
  • +

    By using the recollq + program.

    +
  • + +
  • +

    By writing a custom Python program, using the + Recoll Python + API.

    +
  • +
+
+ +

The first two methods work in the same way and + accept/need the same arguments (except for the additional + -t to recoll). The query to be + executed is specified as command line arguments.

+ +

recollq is + not built by default. You can use the Makefile in the query directory to build it. This is a + very simple program, and if you can program a little c++, + you may find it useful to taylor its output format to your + needs. Not that recollq is only really useful on systems + where the Qt libraries (or even the X11 ones) are not + available. Otherwise, just use recoll + -t, which takes the exact same parameters and + options which are described for recollq

+ +

recollq + has a man page (not installed by default, look in the + doc/man directory). The Usage + string is as follows:

+
+recollq: usage:
+ -P: Show the date span for all the documents present in the index
+ [-o|-a|-f] [-q] <query string>
+ Runs a recoll query and displays result lines. 
+  Default: will interpret the argument(s) as a xesam query string
+    query may be like: 
+    implicit AND, Exclusion, field spec:    t1 -t2 title:t3
+    OR has priority: t1 OR t2 t3 OR t4 means (t1 OR t2) AND (t3 OR t4)
+    Phrase: "t1 t2" (needs additional quoting on cmd line)
+  -o Emulate the GUI simple search in ANY TERM mode
+  -a Emulate the GUI simple search in ALL TERMS mode
+  -f Emulate the GUI simple search in filename mode
+  -q is just ignored (compatibility with the recoll GUI command line)
+Common options:
+    -c <configdir> : specify config directory, overriding $RECOLL_CONFDIR
+    -d also dump file contents
+    -n [first-]<cnt> define the result slice. The default value for [first]
+       is 0. Without the option, the default max count is 2000.
+       Use n=0 for no limit
+    -b : basic. Just output urls, no mime types or titles
+    -Q : no result lines, just the processed query and result count
+    -m : dump the whole document meta[] array for each result
+    -A : output the document abstracts
+    -S fld : sort by field <fld>
+    -s stemlang : set stemming language to use (must exist in index...)
+       Use -s "" to turn off stem expansion
+    -D : sort descending
+    -i <dbdir> : additional index, several can be given
+    -e use url encoding (%xx) for urls
+    -F <field name list> : output exactly these fields for each result.
+       The field values are encoded in base64, output in one line and 
+       separated by one space character. This is the recommended format 
+       for use by other programs. Use a normal query with option -m to 
+       see the field names.
+
+ +

Sample execution:

+
+recollq 'ilur -nautique mime:text/html'
+Recoll query: ((((ilur:(wqf=11) OR ilurs) AND_NOT (nautique:(wqf=11)
+  OR nautiques OR nautiqu OR nautiquement)) FILTER Ttext/html))
+4 results
+text/html       [file:///Users/uncrypted-dockes/projets/bateaux/ilur/comptes.html]      [comptes.html]  18593   bytes   
+text/html       [file:///Users/uncrypted-dockes/projets/nautique/webnautique/articles/ilur1/index.html] [Constructio...
+text/html       [file:///Users/uncrypted-dockes/projets/pagepers/index.html]    [psxtcl/writemime/recoll]...
+text/html       [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/recu-chasse-maree....
+
+
+ +
+
+
+
+

3.4. Using Synonyms + (Recoll 1.22 and + later)

+
+
+
+ +

There are a number of different uses for synonyms in + text search. They can be used at index time (either to + increase or decrease the number of indexed terms), or at + query time, to reduce user terms to a set of canonical + ones, or to expand queries to match texts containing + synonyms of the user terms.

+ +

Only the last approach is used in Recoll. Synonym groups can be defined + so that a user query term which is found to be part of a + synonym group will be optionally expanded into an OR query + for all synonyms.

+ +

What is it good for ? The synonyms function is probably + not going to help you find your letters to Mr. Smith. It is + best used for domain-specific searches. For example, it was + initially suggested by a user performing searches among + historical documents: the synonyms file would contains + nicknames and aliases for each of the persons of + interest.

+ +

In practise, synonym groups are defined inside ordinary + text files. Each line in the file defines a group. + Example:

+
+hi hello "good morning"
+
+# not sure about "au revoir" though. Is this english ?
+bye goodbye "see you" \
+  "au revoir" 
+    
+
+ +

As usual lines beginning with a # are comments, empty lines are ignored, + and lines can be continued by ending them with a + backslash.

+ +

The synonyms are searched for matches with user terms + after these are stem-expanded, but the contents of the + synonyms file itself is not subjected to stem expansion + (1.22). This means that a match will not be found if the + form present in the synonyms file is not present anywhere + in the document set.

+ +

Multi-word synonyms are supported, but be aware that + these will generate phrase queries, which may degrade + performance (and also, no stemming).

+ +

A synonyms file can be specified in the GUI preferences, + or as an option to recollq.

+ +

This feature is new in Recoll 1.22 and will probably need to + be refined after some user feedback.

+
+ +
+
+
+
+

3.5. Path + translations

+
+
+
+ +

In some cases, the document paths stored inside the + index do not match the actual ones, so that document + previews and accesses will fail. This can occur in a number + of circumstances:

+ +
+
    +
  • +

    When using multiple indexes it is a relatively + common occurrence that some will actually reside on a + remote volume, for exemple mounted via NFS. In this + case, the paths used to access the documents on the + local machine are not necessarily the same than the + ones used while indexing on the remote machine. For + example, /home/me may + have been used as a topdirs elements while indexing, but + the directory might be mounted as /net/server/home/me on the local + machine.

    +
  • + +
  • +

    The case may also occur with removable disks. It + is perfectly possible to configure an index to live + with the documents on the removable disk, but it may + happen that the disk is not mounted at the same place + so that the documents paths from the index are + invalid.

    +
  • + +
  • +

    As a last exemple, one could imagine that a big + directory has been moved, but that it is currently + inconvenient to run the indexer.

    +
  • +
+
+ +

Recoll has a facility + for rewriting access paths when extracting the data from + the index. The translations can be defined for the main + index and for any additional query index.

+ +

The path translation facility will be useful whenever + the documents paths seen by the indexer are not the same as + the ones which should be used at query time.

+ +

In the above NFS example, Recoll could be instructed to rewrite + any file:///home/me URL from + the index to file:///net/server/home/me, allowing + accesses from the client.

+ +

The translations are defined in the ptrans configuration file, which can + be edited by hand or from the GUI external indexes + configuration dialog: PreferencesExternal index dialog, then click the + Paths translations button on + the right below the index list.

+ +
+

Note

+ +

Due to a current bug, the GUI must be restarted after + changing the ptrans values + (even when they were changed from the GUI).

+
+
+ +
+
+
+
+

3.6. The query + language

+
+
+
+ +

The query language processor is activated in the GUI + simple search entry when the search mode selector is set to + Query Language. It can also + be used with the KIO slave or the command line search. It + broadly has the same capabilities as the complex search + interface in the GUI.

+ +

The language is based on the (seemingly defunct) + Xesam user search language + specification.

+ +

If the results of a query language search puzzle you and + you doubt what has been actually searched for, you can use + the GUI Show Query link at the + top of the result list to check the exact query which was + finally executed by Xapian.

+ +

Here follows a sample request that we are going to + explain:

+
+          author:"john doe" Beatles OR Lennon Live OR Unplugged -potatoes
+      
+
+ +

This would search for all documents with John Doe appearing as a + phrase in the author field (exactly what this is would + depend on the document type, ie: the From: header, for an email message), and + containing either beatles or lennon and either + live or + unplugged but not + potatoes (in any + part of the document).

+ +

An element is composed of an optional field + specification, and a value, separated by a colon (the field + separator is the last colon in the element). Examples: + Eugenie, + author:balzac, + dc:title:grandet + dc:title:"eugenie + grandet"

+ +

The colon, if present, means "contains". Xesam defines + other relations, which are mostly unsupported for now + (except in special cases, described further down).

+ +

All elements in the search entry are normally combined + with an implicit AND. It is possible to specify that + elements be OR'ed instead, as in Beatles OR Lennon. The OR must be entered literally (capitals), + and it has priority over the AND associations: word1 word2 OR word3 means word1 AND (word2 OR word3) not (word1 AND word2) OR word3.

+ +

With Recoll versions + 1.21 and later, you can use parentheses to group elements, + which will sometimes make things clearer, and may allow + expressing combinations which would have been difficult + otherwise.

+ +

An element preceded by a - + specifies a term that should not appear.

+ +

As usual, words inside quotes define a phrase (the order + of words is significant), so that title:"prejudice pride" is + not the same as title:prejudice + title:pride, and is unlikely to find a + result.

+ +

Words inside phrases and capitalized words are not + stem-expanded. Wildcards may be used anywhere inside a + term. Specifying a wild-card on the left of a term can + produce a very slow search (or even an incorrect one if the + expansion is truncated because of excessive size). Also see + More about + wildcards.

+ +

To save you some typing, recent Recoll versions (1.20 and later) + interpret a comma-separated list of terms as an AND list + inside the field. Use slash characters ('/') for an OR + list. No white space is allowed. So

+
+author:john,lennon
+
+ +

will search for documents with john and lennon inside the author field (in any order), and

+
+author:john/ringo
+
+ +

would search for john or + ringo.

+ +

Modifiers can be set on a double-quote value, for + example to specify a proximity search (unordered). See + the modifier section. No space + must separate the final double-quote and the modifiers + value, e.g. "two + one"po10

+ +

Recoll currently + manages the following default fields:

+ +
+
    +
  • +

    title, subject or caption are synonyms which specify + data to be searched for in the document title or + subject.

    +
  • + +
  • +

    author or + from for searching the + documents originators.

    +
  • + +
  • +

    recipient or + to for searching the + documents recipients.

    +
  • + +
  • +

    keyword for searching + the document-specified keywords (few documents + actually have any).

    +
  • + +
  • +

    filename for the + document's file name. This is not necessarily set for + all documents: internal documents contained inside a + compound one (for example an EPUB section) do not + inherit the container file name any more, this was + replaced by an explicit field (see next). + Sub-documents can still have a specific filename, if it is implied by the + document format, for example the attachment file name + for an email attachment.

    +
  • + +
  • +

    containerfilename. + This is set for all documents, both top-level and + contained sub-documents, and is always the name of + the filesystem directory entry which contains the + data. The terms from this field can only be matched + by an explicit field specification (as opposed to + terms from filename + which are also indexed as general document content). + This avoids getting matches for all the sub-documents + when searching for the container file name.

    +
  • + +
  • +

    ext specifies the + file name extension (Ex: ext:html)

    +
  • +
+
+ +

Recoll 1.20 and later + have a way to specify aliases for the field names, which + will save typing, for example by aliasing filename to fn or containerfilename to cfn. See the section about the + fields file

+ +

The field syntax also supports a few field-like, but + special, criteria:

+ +
+
    +
  • +

    dir for filtering the + results on file location (Ex: dir:/home/me/somedir). -dir also works to find results not + in the specified directory (release >= 1.15.8). + Tilde expansion will be performed as usual (except + for a bug in versions 1.19 to 1.19.11p1). Wildcards + will be expanded, but please have a + look at an important limitation of wildcards in + path filters.

    + +

    Relative paths also make sense, for example, + dir:share/doc would + match either /usr/share/doc or /usr/local/share/doc

    + +

    Several dir clauses + can be specified, both positive and negative. For + example the following makes sense:

    +
    +dir:recoll dir:src -dir:utils -dir:common
    +            
    +
    + +

    This would select results which have both + recoll and src in the path (in any order), and + which have not either utils or common.

    + +

    You can also use OR + conjunctions with dir: + clauses.

    + +

    A special aspect of dir clauses is that the values in + the index are not transcoded to UTF-8, and never + lower-cased or unaccented, but stored as binary. This + means that you need to enter the values in the exact + lower or upper case, and that searches for names with + diacritics may sometimes be impossible because of + character set conversion issues. Non-ASCII UNIX file + paths are an unending source of trouble and are best + avoided.

    + +

    You need to use double-quotes around the path + value if it contains space characters.

    +
  • + +
  • +

    size for filtering + the results on file size. Example: size<10000. You can use + <, > or = as operators. You can specify a + range like the following: size>100 size<1000. The usual + k/K, m/M, g/G, t/T can + be used as (decimal) multipliers. Ex: size>1k to search for files + bigger than 1000 bytes.

    +
  • + +
  • +

    date for searching or + filtering on dates. The syntax for the argument is + based on the ISO8601 standard for dates and time + intervals. Only dates are supported, no times. The + general syntax is 2 elements separated by a + / character. Each + element can be a date or a period of time. Periods + are specified as PnYnMnD. The n numbers are the + respective numbers of years, months or days, any of + which may be missing. Dates are specified as + YYYY-MM-DD. The days and + months parts may be missing. If the / is present but an element is + missing, the missing element is interpreted as the + lowest or highest date in the index. Examples:

    + +
    +
      +
    • +

      2001-03-01/2002-05-01 the + basic syntax for an interval of dates.

      +
    • + +
    • +

      2001-03-01/P1Y2M the same + specified with a period.

      +
    • + +
    • +

      2001/ from the + beginning of 2001 to the latest date in the + index.

      +
    • + +
    • +

      2001 the whole + year of 2001

      +
    • + +
    • +

      P2D/ means 2 + days ago up to now if there are no documents + with dates in the future.

      +
    • + +
    • +

      /2003 all + documents from 2003 or older.

      +
    • +
    +
    + +

    Periods can also be specified with small letters + (ie: p2y).

    +
  • + +
  • +

    mime or format for specifying the MIME type. + These clauses are processed besides the normal + Boolean logic of the search. Multiple values will be + OR'ed (instead of the normal AND). You can specify + types to be excluded, with the usual -, and use wildcards. Example: + mime:text/* + -mime:text/plain Specifying an explicit + boolean operator before a mime specification is not supported + and will produce strange results.

    +
  • + +
  • +

    type or rclcat for specifying the category + (as in text/media/presentation/etc.). The + classification of MIME types in categories is defined + in the Recoll + configuration (mimeconf), and can be modified or + extended. The default category names are those which + permit filtering results in the main GUI screen. + Categories are OR'ed like MIME types above, and can + be negated with -.

    +
  • +
+
+ +
+

Note

+ +

mime is the only field with an + OR default. You do need to + use OR with ext terms for example.

+
+ +

The document input handlers used while indexing have the + possibility to create other fields with arbitrary names, + and aliases may be defined in the configuration, so that + the exact field search possibilities may be different for + you if someone took care of the customisation.

+ +
+
+
+
+

3.6.1. Modifiers

+
+
+
+ +

Some characters are recognized as search modifiers + when found immediately after the closing double quote of + a phrase, as in "some + term"modifierchars. The actual "phrase" can be a + single term of course. Supported modifiers:

+ +
+
    +
  • +

    l can be used to + turn off stemming (mostly makes sense with + p because stemming is + off by default for phrases).

    +
  • + +
  • +

    s can be used to + turn off synonym expansion, if a synonyms file is + in place (only for Recoll 1.22 and later).

    +
  • + +
  • +

    o can be used to + specify a "slack" for phrase and proximity + searches: the number of additional terms that may + be found between the specified ones. If + o is followed by an + integer number, this is the slack, else the default + is 10.

    +
  • + +
  • +

    p can be used to + turn the default phrase search into a proximity one + (unordered). Example: "order + any in"p

    +
  • + +
  • +

    C will turn on case + sensitivity (if the index supports it).

    +
  • + +
  • +

    D will turn on + diacritics sensitivity (if the index supports + it).

    +
  • + +
  • +

    A weight can be specified for a query element by + specifying a decimal value at the start of the + modifiers. Example: "Important"2.5.

    +
  • +
+
+
+
+ +
+
+
+
+

3.7. Search case and + diacritics sensitivity

+
+
+
+ +

For Recoll versions + 1.18 and later, and when working + with a raw index (not the default), searches + can be made sensitive to character case and diacritics. How + this happens is controlled by configuration variables and + what search data is entered.

+ +

The general default is that searches are insensitive to + case and diacritics. An entry of resume will match any of Resume, RESUME, résumé, Résumé etc.

+ +

Two configuration variables can automate switching on + sensitivity:

+ +
+
+
autodiacsens
+ +
+

If this is set, search sensitivity to diacritics + will be turned on as soon as an accented character + exists in a search term. When the variable is set to + true, resume will start + a diacritics-unsensitive search, but résumé will be matched + exactly. The default value is false.

+
+ +
autocasesens
+ +
+

If this is set, search sensitivity to character + case will be turned on as soon as an upper-case + character exists in a search term except for the first one. + When the variable is set to true, us or Us will start a + diacritics-unsensitive search, but US will be matched exactly. The + default value is true (contrary to + autodiacsens).

+
+
+
+ +

As in the past, capitalizing the first letter of a word + will turn off its stem expansion and have no effect on + case-sensitivity.

+ +

You can also explicitely activate case and diacritics + sensitivity by using modifiers with the query language. + C will make the term + case-sensitive, and D will + make it diacritics-sensitive. Examples:

+
+        "us"C
+   
+
+ +

will search for the term us + exactly (Us will not be a + match).

+
+        "resume"D
+      
+
+ +

will search for the term resume exactly (résumé will not be a + match).

+ +

When either case or diacritics sensitivity is activated, + stem expansion is turned off. Having both does not make + much sense.

+
+ +
+
+
+
+

3.8. Anchored + searches and wildcards

+
+
+
+ +

Some special characters are interpreted by Recoll in search strings to expand or + specialize the search. Wildcards expand a root term in + controlled ways. Anchor characters can restrict a search to + succeed only if the match is found at or near the beginning + of the document or one of its fields.

+ +
+
+
+
+

3.8.1. More + about wildcards

+
+
+
+ +

All words entered in Recoll search fields will be + processed for wildcard expansion before the request is + finally executed.

+ +

The wildcard characters are:

+ +
+
    +
  • +

    * which matches 0 + or more characters.

    +
  • + +
  • +

    ? which matches a + single character.

    +
  • + +
  • +

    [] which allow + defining sets of characters to be matched (ex: + [abc] matches a single character which + may be 'a' or 'b' or 'c', [0-9] matches any number.

    +
  • +
+
+ +

You should be aware of a few things when using + wildcards.

+ +
+
    +
  • +

    Using a wildcard character at the beginning of a + word can make for a slow search because + Recoll will have + to scan the whole index term list to find the + matches. However, this is much less a problem for + field searches, and queries like author:*@domain.com + can sometimes be very useful.

    +
  • + +
  • +

    For Recoll + version 18 only, when working with a raw index + (preserving character case and diacritics), the + literal part of a wildcard expression will be + matched exactly for case and diacritics. This is + not true any more for versions 19 and later.

    +
  • + +
  • +

    Using a * at the + end of a word can produce more matches than you + would think, and strange search results. You can + use the term + explorer tool to check what completions exist + for a given term. You can also see exactly what + search was performed by clicking on the link at the + top of the result list. In general, for natural + language terms, stem expansion will produce better + results than an ending * (stem expansion is turned off + when any wildcard character appears in the + term).

    +
  • +
+
+ +
+
+
+
+

3.8.1.1. Wildcards + and path filtering

+
+
+
+ +

Due to the way that Recoll processes wildcards inside + dir path filtering + clauses, they will have a multiplicative effect on the + query size. A clause containg wildcards in several + paths elements, like, for example, dir:/home/me/*/*/docdir, + will almost certainly fail if your indexed tree is of + any realistic size.

+ +

Depending on the case, you may be able to work + around the issue by specifying the paths elements more + narrowly, with a constant prefix, or by using 2 + separate dir: clauses + instead of multiple wildcards, as in dir:/home/me dir:docdir. The latter + query is not equivalent to the initial one because it + does not specify a number of directory levels, but + that's the best we can do (and it may be actually more + useful in some cases).

+
+
+ +
+
+
+
+

3.8.2. Anchored + searches

+
+
+
+ +

Two characters are used to specify that a search hit + should occur at the beginning or at the end of the text. + ^ at the beginning of a term + or phrase constrains the search to happen at the start, + $ at the end force it to + happen at the end.

+ +

As this function is implemented as a phrase search it + is possible to specify a maximum distance at which the + hit should occur, either through the controls of the + advanced search panel, or using the query language, for + example, as in:

+
+"^someterm"o10
+
+ +

which would force someterm to be found within 10 terms of + the start of the text. This can be combined with a field + search as in somefield:"^someterm"o10 or somefield:someterm$.

+ +

This feature can also be used with an actual phrase + search, but in this case, the distance applies to the + whole phrase and anchor, so that, for example, + bla bla my unexpected term + at the beginning of the text would be a match for + "^my term"o5.

+ +

Anchored searches can be very useful for searches + inside somewhat structured documents like scientific + articles, in case explicit metadata has not been supplied + (a most frequent case), for example for looking for + matches inside the abstract or the list of authors (which + occur at the top of the document).

+
+
+ +
+
+
+
+

3.9. Desktop + integration

+
+
+
+ +

Being independant of the desktop type has its drawbacks: + Recoll desktop integration + is minimal. However there are a few tools available:

+ +
+ +
+ +

Here follow a few other things that may help.

+ +
+
+
+
+

3.9.1. Hotkeying + recoll

+
+
+
+ +

It is surprisingly convenient to be able to show or + hide the Recoll GUI with + a single keystroke. Recoll comes with a small Python + script, based on the libwnck window manager interface + library, which will allow you to do just this. The + detailed instructions are on this wiki page.

+
+ +
+
+
+
+

3.9.2. The KDE Kicker + Recoll applet

+
+
+
+ +

This is probably obsolete now. Anyway:

+ +

The Recoll source + tree contains the source code to the recoll_applet, a small application + derived from the find_applet. This can be used to add + a small Recoll launcher + to the KDE panel.

+ +

The applet is not automatically built with the main + Recoll programs, nor is + it included with the main source distribution (because + the KDE build boilerplate makes it relatively big). You + can download its source from the recoll.org download + page. Use the omnipotent configure;make;make + install incantation to build and + install.

+ +

You can then add the applet to the panel by + right-clicking the panel and choosing the Add applet entry.

+ +

The recoll_applet has + a small text window where you can type a Recoll query (in query language + form), and an icon which can be used to restrict the + search to certain types of files. It is quite primitive, + and launches a new recoll GUI instance every time (even + if it is already running). You may find it useful + anyway.

+
+
+
+ +
+
+
+
+

Chapter 4. Programming + interface

+
+
+
+ +

Recoll has an Application + Programming Interface, usable both for indexing and + searching, currently accessible from the Python language.

+ +

Another less radical way to extend the application is to + write input handlers for new types of documents.

+ +

The processing of metadata attributes for documents + (fields) is highly + configurable.

+ +
+
+
+
+

4.1. Writing a + document input handler

+
+
+
+ +
+

Terminology

The small programs or + pieces of code which handle the processing of the + different document types for Recoll used to be called + filters, which is still + reflected in the name of the directory which holds them + and many configuration variables. They were named this + way because one of their primary functions is to filter + out the formatting directives and keep the text content. + However these modules may have other behaviours, and the + term input handler is now + progressively substituted in the documentation. + filter is still used in many + places though. +
+ +

Recoll input handlers + cooperate to translate from the multitude of input document + formats, simple ones as opendocument, acrobat), or compound ones such as + Zip or Email, into the final Recoll indexing input format, which is + plain text. Most input handlers are executable programs or + scripts. A few handlers are coded in C++ and live inside + recollindex. + This latter kind will not be described here.

+ +

There are currently (1.18 and since 1.13) two kinds of + external executable input handlers:

+ +
+
    +
  • +

    Simple exec handlers + run once and exit. They can be bare programs like + antiword, or + scripts using other programs. They are very simple to + write, because they just need to print the converted + document to the standard output. Their output can be + plain text or HTML. HTML is usually preferred because + it can store metadata fields and it allows preserving + some of the formatting for the GUI preview.

    +
  • + +
  • +

    Multiple execm + handlers can process multiple files (sparing the + process startup time which can be very significant), + or multiple documents per file (e.g.: for + zip or chm files). They communicate + with the indexer through a simple protocol, but are + nevertheless a bit more complicated than the older + kind. Most of new handlers are written in + Python, using a + common module to handle the protocol. There is an + exception, rclimg which is + written in Perl. The subdocuments output by these + handlers can be directly indexable (text or HTML), or + they can be other simple or compound documents that + will need to be processed by another handler.

    +
  • +
+
+ +

In both cases, handlers deal with regular file system + files, and can process either a single document, or a + linear list of documents in each file. Recoll is responsible for performing + up to date checks, deal with more complex embedding and + other upper level issues.

+ +

A simple handler returning a document in text/plain format, can transfer no + metadata to the indexer. Generic metadata, like document + size or modification date, will be gathered and stored by + the indexer.

+ +

Handlers that produce text/html format can return an arbitrary + amount of metadata inside HTML meta tags. These will be processed + according to the directives found in the fields configuration file.

+ +

The handlers that can handle multiple documents per file + return a single piece of data to identify each document + inside the file. This piece of data, called an ipath element will be sent back by + Recoll to extract the + document at query time, for previewing, or for creating a + temporary file to be opened by a viewer.

+ +

The following section describes the simple handlers, and + the next one gives a few explanations about the + execm ones. You could + conceivably write a simple handler with only the elements + in the manual. This will not be the case for the other + ones, for which you will have to look at the code.

+ +
+
+
+
+

4.1.1. Simple + input handlers

+
+
+
+ +

Recoll simple + handlers are usually shell-scripts, but this is in no way + necessary. Extracting the text from the native format is + the difficult part. Outputting the format expected by + Recoll is trivial. + Happily enough, most document formats have translators or + text extractors which can be called from the handler. In + some cases the output of the translating program is + completely appropriate, and no intermediate shell-script + is needed.

+ +

Input handlers are called with a single argument which + is the source file name. They should output the result to + stdout.

+ +

When writing a handler, you should decide if it will + output plain text or HTML. Plain text is simpler, but you + will not be able to add metadata or vary the output + character encoding (this will be defined in a + configuration file). Additionally, some formatting may be + easier to preserve when previewing HTML. Actually the + deciding factor is metadata: Recoll has a way to extract metadata + from the HTML header and use it for field + searches..

+ +

The RECOLL_FILTER_FORPREVIEW environment + variable (values yes, + no) tells the handler if the + operation is for indexing or previewing. Some handlers + use this to output a slightly different format, for + example stripping uninteresting repeated keywords (ie: + Subject: for email) when + indexing. This is not essential.

+ +

You should look at one of the simple handlers, for + example rclps for a starting + point.

+ +

Don't forget to make your handler executable before + testing !

+
+ +
+
+
+
+

4.1.2. "Multiple" + handlers

+
+
+
+ +

If you can program and want to write an execm handler, it should not be too + difficult to make sense of one of the existing modules. + For example, look at rclzip which uses Zip + file paths as identifiers (ipath), and rclics, which uses an + integer index. Also have a look at the comments inside + the internfile/mh_execm.h + file and possibly at the corresponding module.

+ +

execm handlers sometimes + need to make a choice for the nature of the ipath elements that they use in + communication with the indexer. Here are a few + guidelines:

+ +
+
    +
  • +

    Use ASCII or UTF-8 (if the identifier is an + integer print it, for example, like printf %d would + do).

    +
  • + +
  • +

    If at all possible, the data should make some + kind of sense when printed to a log file to help + with debugging.

    +
  • + +
  • +

    Recoll uses a + colon (:) as a + separator to store a complex path internally (for + deeper embedding). Colons inside the ipath elements output by a handler + will be escaped, but would be a bad choice as a + handler-specific separator (mostly, again, for + debugging issues).

    +
  • +
+
+ +

In any case, the main goal is that it should be easy + for the handler to extract the target document, given the + file name and the ipath + element.

+ +

execm handlers will also + produce a document with a null ipath element. Depending on the type of + document, this may have some associated data (e.g. the + body of an email message), or none (typical for an + archive file). If it is empty, this document will be + useful anyway for some operations, as the parent of the + actual data documents.

+
+ +
+
+
+
+

4.1.3. Telling + Recoll about the + handler

+
+
+
+ +

There are two elements that link a file to the handler + which should process it: the association of file to MIME + type and the association of a MIME type with a + handler.

+ +

The association of files to MIME types is mostly based + on name suffixes. The types are defined inside the + mimemap file. Example:

+
+
+.doc = application/msword
+
+ +

If no suffix association is found for the file name, + Recoll will try to + execute the file + -i command to determine a MIME type.

+ +

The association of file types to handlers is performed + in the mimeconf file. A sample will + probably be of better help than a long explanation:

+
+
+[index]
+application/msword = exec antiword -t -i 1 -m UTF-8;\
+     mimetype = text/plain ; charset=utf-8
+
+application/ogg = exec rclogg
+
+text/rtf = exec unrtf --nopict --html; charset=iso-8859-1; mimetype=text/html
+
+application/x-chm = execm rclchm
+
+ +

The fragment specifies that:

+ +
+
    +
  • +

    application/msword + files are processed by executing the antiword program, + which outputs text/plain encoded in utf-8.

    +
  • + +
  • +

    application/ogg + files are processed by the rclogg script, + with default output type (text/html, with encoding specified + in the header, or utf-8 by default).

    +
  • + +
  • +

    text/rtf is + processed by unrtf, which + outputs text/html. The + iso-8859-1 encoding is + specified because it is not the utf-8 default, and not output by + unrtf + in the HTML header section.

    +
  • + +
  • +

    application/x-chm + is processed by a persistant handler. This is + determined by the execm keyword.

    +
  • +
+
+
+ +
+
+
+
+

4.1.4. Input + handler HTML output

+
+
+
+ +

The output HTML could be very minimal like the + following example:

+
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+   Some text content
+  </body>
+</html>
+          
+
+ +

You should take care to escape some characters inside + the text by transforming them into appropriate entities. + At the very minimum, "&" + should be transformed into "&amp;", "<" should be transformed into + "&lt;". This is not + always properly done by translating programs which output + HTML, and of course never by those which output plain + text.

+ +

When encapsulating plain text in an HTML body, the + display of a preview may be improved by enclosing the + text inside <pre> + tags.

+ +

The character set needs to be specified in the header. + It does not need to be UTF-8 (Recoll will take care of translating + it), but it must be accurate for good results.

+ +

Recoll will process + meta tags inside the header + as possible document fields candidates. Documents fields + can be processed by the indexer in different ways, for + searching or displaying inside query results. This is + described in a following + section.

+ +

By default, the indexer will process the standard + header fields if they are present: title, meta/description, and meta/keywords are both indexed and + stored for query-time display.

+ +

A predefined non-standard meta tag will also be processed by + Recoll without further + configuration: if a date tag + is present and has the right format, it will be used as + the document date (for display and sorting), in + preference to the file modification date. The date format + should be as follows:

+
+<meta name="date" content="YYYY-mm-dd HH:MM:SS">
+or
+<meta name="date" content="YYYY-mm-ddTHH:MM:SS">
+          
+
+ +

Example:

+
+<meta name="date" content="2013-02-24 17:50:00">
+          
+
+ +

Input handlers also have the possibility to "invent" + field names. This should also be output as meta tags:

+
+<meta name="somefield" content="Some textual data" />
+
+ +

You can embed HTML markup inside the content of custom + fields, for improving the display inside result lists. In + this case, add a (wildly non-standard) markup attribute to tell Recoll that the value is HTML and + should not be escaped for display.

+
+<meta name="somefield" markup="html" content="Some <i>textual</i> data" />
+
+ +

As written above, the processing of fields is + described in a further + section.

+
+ +
+
+
+
+

4.1.5. Page + numbers

+
+
+
+ +

The indexer will interpret ^L characters in the handler output as + indicating page breaks, and will record them. At query + time, this allows starting a viewer on the right page for + a hit or a snippet. Currently, only the PDF, Postscript + and DVI handlers generate page breaks.

+
+
+ +
+
+
+
+

4.2. Field data + processing

+
+
+
+ +

Fields are named pieces of + information in or about documents, like title, author, abstract.

+ +

The field values for documents can appear in several + ways during indexing: either output by input handlers as + meta fields in the HTML header + section, or extracted from file extended attributes, or + added as attributes of the Doc + object when using the API, or again synthetized internally + by Recoll.

+ +

The Recoll query + language allows searching for text in a specific field.

+ +

Recoll defines a number + of default fields. Additional ones can be output by + handlers, and described in the fields configuration file.

+ +

Fields can be:

+ +
+
    +
  • +

    indexed, meaning that + their terms are separately stored in inverted lists + (with a specific prefix), and that a field-specific + search is possible.

    +
  • + +
  • +

    stored, meaning that + their value is recorded in the index data record for + the document, and can be returned and displayed with + search results.

    +
  • +
+
+ +

A field can be either or both indexed and stored. This + and other aspects of fields handling is defined inside the + fields configuration + file.

+ +

The sequence of events for field processing is as + follows:

+ +
+
    +
  • +

    During indexing, recollindex scans + all meta fields in HTML + documents (most document types are transformed into + HTML at some point). It compares the name for each + element to the configuration defining what should be + done with fields (the fields file)

    +
  • + +
  • +

    If the name for the meta element matches one for a field + that should be indexed, the contents are processed + and the terms are entered into the index with the + prefix defined in the fields file.

    +
  • + +
  • +

    If the name for the meta element matches one for a field + that should be stored, the content of the element is + stored with the document data record, from which it + can be extracted and displayed at query time.

    +
  • + +
  • +

    At query time, if a field search is performed, the + index prefix is computed and the match is only + performed against appropriately prefixed terms in the + index.

    +
  • + +
  • +

    At query time, the field can be displayed inside + the result list by using the appropriate directive in + the definition of the result list + paragraph format. All fields are displayed on the + fields screen of the preview window (which you can + reach through the right-click menu). This is + independant of the fact that the search which + produced the results used the field or not.

    +
  • +
+
+ +

You can find more information in the section about the + fields file, or in + comments inside the file.

+ +

You can also have a look at the example on the Wiki, detailing how one + could add a page + count field to pdf documents for displaying + inside result lists.

+
+ +
+
+
+
+

4.3. API

+
+
+
+ +
+
+
+
+

4.3.1. Interface + elements

+
+
+
+ +

A few elements in the interface are specific and and + need an explanation.

+ +
+
+
udi
+ +
+

An udi (unique document identifier) identifies a + document. Because of limitations inside the index + engine, it is restricted in length (to 200 bytes), + which is why a regular URI cannot be used. The + structure and contents of the udi is defined by the + application and opaque to the index engine. For + example, the internal file system indexer uses the + complete document path (file path + internal path), + truncated to length, the suppressed part being + replaced by a hash value.

+
+ +
ipath
+ +
+

This data value (set as a field in the Doc + object) is stored, along with the URL, but not + indexed by Recoll. + Its contents are not interpreted, and its use is up + to the application. For example, the Recoll internal file system + indexer stores the part of the document access path + internal to the container file (ipath in this case is a list of + subdocument sequential numbers). url and ipath are + returned in every search result and permit access + to the original document.

+
+ +
Stored and indexed + fields
+ +
+

The fields file + inside the Recoll + configuration defines which document fields are + either "indexed" (searchable), "stored" + (retrievable with search results), or both.

+
+
+
+ +

Data for an external indexer, should be stored in a + separate index, not the one for the Recoll internal file system indexer, + except if the latter is not used at all). The reason is + that the main document indexer purge pass would remove + all the other indexer's documents, as they were not seen + during indexing. The main indexer documents would also + probably be a problem for the external indexer purge + operation.

+
+ +
+
+
+
+

4.3.2. Python + interface

+
+
+
+ +
+
+
+
+

4.3.2.1. Introduction

+
+
+
+ +

Recoll versions + after 1.11 define a Python programming interface, both + for searching and indexing. The indexing portion has + seen little use, but the searching one is used in the + Recoll Ubuntu Unity Lens and Recoll Web UI.

+ +

The API is inspired by the Python database API + specification. There were two major changes in recent + Recoll versions:

+ +
+
    +
  • The basis for the Recoll API changed from Python + database API version 1.0 (Recoll versions up to 1.18.1), + to version 2.0 (Recoll 1.18.2 and later).
  • + +
  • The recoll module became a package + (with an internal recoll module) as of Recoll version 1.19, in order + to add more functions. For existing code, this only + changes the way the interface must be + imported.
  • +
+
+ +

We will mostly describe the new API and package + structure here. A paragraph at the end of this section + will explain a few differences and ways to write code + compatible with both versions.

+ +

The Python interface can be found in the source + package, under python/recoll.

+ +

The python/recoll/ + directory contains the usual setup.py. After configuring the main + Recoll code, you can + use the script to build and install the Python + module:

+
+            cd recoll-xxx/python/recoll
+            python setup.py build
+            python setup.py install
+          
+
+ +

The normal Recoll + installer installs the Python API along with the main + code.

+ +

When installing from a repository, and depending on + the distribution, the Python API can sometimes be found + in a separate package.

+
+ +
+
+
+
+

4.3.2.2. Recoll + package

+
+
+
+ +

The recoll package + contains two modules:

+ +
+
    +
  • +

    The recoll module + contains functions and classes used to query (or + update) the index.

    +
  • + +
  • +

    The rclextract + module contains functions and classes used to + access document data.

    +
  • +
+
+
+ +
+
+
+
+

4.3.2.3. The + recoll module

+
+
+
+ +
+
+
+
+
Functions
+
+
+
+ +
+
+
connect(confdir=None, + extra_dbs=None, writable = False)
+ +
+ The connect() + function connects to one or several + Recoll + index(es) and returns a Db object. + +
+
    +
  • confdir may specify a + configuration directory. The usual defaults + apply.
  • + +
  • extra_dbs is a list of + additional indexes (Xapian + directories).
  • + +
  • writable decides if we can + index new data through this + connection.
  • +
+
This call initializes the recoll module, + and it should always be performed before any + other call or object creation. +
+
+
+
+ +
+
+
+
+
Classes
+
+
+
+ +
+
+
+
+
The + Db class
+
+
+
+ +

A Db object is created by a connect() call and holds a + connection to a Recoll index.

+ +
+

Methods

+ +
+
Db.close()
+ +
Closes the connection. You can't do + anything with the Db object after this.
+ +
Db.query(), + Db.cursor()
+ +
These aliases return a blank Query object for this + index.
+ +
Db.setAbstractParams(maxchars, + contextwords)
+ +
Set the parameters used to build snippets + (sets of keywords in context text fragments). + maxchars defines + the maximum total size of the abstract. + contextwords + defines how many terms are shown around the + keyword.
+ +
Db.termMatch(match_type, + expr, field='', maxlen=-1, casesens=False, + diacsens=False, lang='english')
+ +
Expand an expression against the index term + list. Performs the basic function from the GUI + term explorer tool. match_type can be either of + wildcard, + regexp or + stem. Returns a + list of terms expanded from the input + expression.
+
+
+
+ +
+
+
+
+
The + Query class
+
+
+
+ +

A Query object + (equivalent to a cursor in the Python DB API) is + created by a Db.query() call. It is used to + execute index searches.

+ +
+

Methods

+ +
+
Query.sortby(fieldname, + ascending=True)
+ +
Sort results by fieldname, in + ascending or descending order. Must be called + before executing the search.
+ +
Query.execute(query_string, stemming=1, + stemlang="english")
+ +
Starts a search for query_string, a + Recoll search + language string.
+ +
Query.executesd(SearchData)
+ +
Starts a search for the query defined by + the SearchData object.
+ +
Query.fetchmany(size=query.arraysize)
+ +
Fetches the next Doc objects in the current + search results, and returns them as an array of + the required size, which is by default the + value of the arraysize data member.
+ +
Query.fetchone()
+ +
Fetches the next Doc object from the current + search results.
+ +
Query.close()
+ +
Closes the query. The object is unusable + after the call.
+ +
Query.scroll(value, + mode='relative')
+ +
Adjusts the position in the current result + set. mode can be + relative or + absolute.
+ +
Query.getgroups()
+ +
Retrieves the expanded query terms as a + list of pairs. Meaningful only after executexx + In each pair, the first entry is a list of user + terms (of size one for simple terms, or more + for group and phrase clauses), the second a + list of query terms as derived from the user + terms and used in the Xapian Query.
+ +
Query.getxquery()
+ +
Return the Xapian query description as a + Unicode string. Meaningful only after + executexx.
+ +
Query.highlight(text, + ishtml = 0, methods = object)
+ +
Will insert <span "class=rclmatch">, + </span> tags around the match areas in + the input text and return the modified text. + ishtml can be set + to indicate that the input text is HTML and + that HTML special characters should not be + escaped. methods + if set should be an object with methods + startMatch(i) and endMatch() which will be + called for each match and should return a begin + and end tag
+ +
Query.makedocabstract(doc, methods = + object))
+ +
Create a snippets abstract for doc (a Doc object) by selecting text + around the match terms. If methods is set, will + also perform highlighting. See the highlight + method.
+ +
Query.__iter__() and + Query.next()
+ +
So that things like for doc in query: will + work.
+
+
+ +
+

Data descriptors

+ +
+
Query.arraysize
+ +
Default number of records processed by + fetchmany (r/w).
+ +
Query.rowcount
+ +
Number of records returned by the last + execute.
+ +
Query.rownumber
+ +
Next index to be fetched from results. + Normally increments after each fetchone() call, + but can be set/reset before the call to effect + seeking (equivalent to using scroll()). Starts at 0.
+
+
+
+ +
+
+
+
+
The + Doc class
+
+
+
+ +

A Doc object + contains index data for a given document. The data + is extracted from the index when searching, or set + by the indexer program when updating. The Doc + object has many attributes to be read or set by its + user. It matches exactly the Rcl::Doc C++ object. + Some of the attributes are predefined, but, + especially when indexing, others can be set, the + name of which will be processed as field names by + the indexing configuration. Inputs can be specified + as Unicode or strings. Outputs are Unicode objects. + All dates are specified as Unix timestamps, printed + as strings. Please refer to the rcldb/rcldoc.h C++ file for a + description of the predefined attributes.

+ +

At query time, only the fields that are defined + as stored either by + default or in the fields configuration file will be + meaningful in the Doc + object. Especially this will not be the case for + the document text. See the rclextract module for accessing + document contents.

+ +
+

Methods

+ +
+
get(key), [] + operator
+ +
Retrieve the named doc attribute
+ +
getbinurl()
+ +
Retrieve the URL in byte array format (no + transcoding), for use as parameter to a system + call.
+ +
items()
+ +
Return a dictionary of doc object + keys/values
+ +
keys()
+ +
list of doc object keys (attribute + names).
+
+
+
+ +
+
+
+
+
+ The SearchData class
+
+
+
+ +

A SearchData object + allows building a query by combining clauses, for + execution by Query.executesd(). It can be used + in replacement of the query language approach. The + interface is going to change a little, so no + detailed doc for now...

+ +
+

Methods

+ +
+
addclause(type='and'|'or'|'excl'|'phrase'|'near'|'sub', + qstring=string, slack=0, field='', stemming=1, + subSearch=SearchData)
+
+
+
+
+
+ +
+
+
+
+

4.3.2.4. The + rclextract module

+
+
+
+ +

Index queries do not provide document content (only + a partial and unprecise reconstruction is performed to + show the snippets text). In order to access the actual + document data, the data extraction part of the indexing + process must be performed (subdocument access and + format translation). This is not trivial in general. + The rclextract module + currently provides a single class which can be used to + access the data content for result documents.

+ +
+
+
+
+
Classes
+
+
+
+ +
+
+
+
+
+ The Extractor class
+
+
+
+ +
+

Methods

+ +
+
Extractor(doc)
+ +
An Extractor + object is built from a Doc object, output from a + query.
+ +
Extractor.textextract(ipath)
+ +
+ Extract document defined by ipath and + return a Doc + object. The doc.text field has the document + text converted to either text/plain or + text/html according to doc.mimetype. The + typical use would be as follows: +
+qdoc = query.fetchone()
+extractor = recoll.Extractor(qdoc)
+doc = extractor.textextract(qdoc.ipath)
+# use doc.text, e.g. for previewing
+
+
+ +
Extractor.idoctofile(ipath, targetmtype, + outfile='')
+ +
+ Extracts document into an output file, which + can be given explicitly or will be created as + a temporary file to be deleted by the caller. + Typical use: +
+qdoc = query.fetchone()
+extractor = recoll.Extractor(qdoc)
+filename = extractor.idoctofile(qdoc.ipath, qdoc.mimetype)
+
+
+
+
+
+
+
+ +
+
+
+
+

4.3.2.5. Example + code

+
+
+
+ +

The following sample would query the index with a + user language string. See the python/samples directory inside the + Recoll source for + other examples. The recollgui subdirectory has a very + embryonic GUI which demonstrates the highlighting and + data extraction functions.

+
+#!/usr/bin/env python
+
+from recoll import recoll
+
+db = recoll.connect()
+db.setAbstractParams(maxchars=80, contextwords=4)
+
+query = db.query()
+nres = query.execute("some user question")
+print "Result count: ", nres
+if nres > 5:
+    nres = 5
+for i in range(nres):
+    doc = query.fetchone()
+    print "Result #%d" % (query.rownumber,)
+    for k in ("title", "size"):
+        print k, ":", getattr(doc, k).encode('utf-8')
+    abs = db.makeDocAbstract(doc, query).encode('utf-8')
+    print abs
+    print
+
+
+
+
+ +
+
+
+
+

4.3.2.6. Compatibility + with the previous version

+
+
+
+ +

The following code fragments can be used to ensure + that code can run with both the old and the new API (as + long as it does not use the new abilities of the new + API of course).

+ +

Adapting to the new package structure:

+
+
+try:
+    from recoll import recoll
+    from recoll import rclextract
+    hasextract = True
+except:
+    import recoll
+    hasextract = False
+
+
+ +

Adapting to the change of nature of the next Query member. The same test can be + used to choose to use the scroll() method (new) or set the + next value (old).

+
+
+       rownum = query.next if type(query.next) == int else \
+                 query.rownumber
+
+
+
+
+
+
+ +
+
+
+
+

Chapter 5. Installation and + configuration

+
+
+
+ +
+
+
+
+

5.1. Installing a + binary copy

+
+
+
+ +

Recoll binary copies + are always distributed as regular packages for your system. + They can be obtained either through the system's normal + software distribution framework (e.g. Debian/Ubuntu apt, FreeBSD ports, etc.), or from some + type of "backports" repository providing versions newer + than the standard ones, or found on the Recoll WEB site in some cases. The + most up-to-date information about Recoll packages can + usually be found on the Recoll WEB site + downloads page

+ +

There used to exist another form of binary install, as + pre-compiled source trees, but these are just less + convenient than the packages and don't exist any more.

+ +

The package management tools will usually automatically + deal with hard dependancies for packages obtained from a + proper package repository. You will have to deal with them + by hand for downloaded packages (for example, when + dpkg + complains about missing dependancies).

+ +

In all cases, you will have to check or install + supporting applications + for the file types that you want to index beyond those that + are natively processed by Recoll (text, HTML, email files, and a + few others).

+ +

You should also maybe have a look at the configuration + section (but this may not be necessary for a quick test + with default parameters). Most parameters can be more + conveniently set from the GUI interface.

+
+ +
+
+
+
+

5.2. Supporting + packages

+
+
+
+ +
+

Note

+ +

The Windows + installation of Recoll + is self-contained, and only needs Python 2.7 to be + externally installed. Windows users can skip this + section.

+
+ +

Recoll uses external + applications to index some file types. You need to install + them for the file types that you wish to have indexed + (these are run-time optional dependencies. None is needed + for building or running Recoll except for indexing their + specific file type).

+ +

After an indexing pass, the commands that were found + missing can be displayed from the recoll File menu. The list is stored in the + missing text file inside the + configuration directory.

+ +

A list of common file types which need external commands + follows. Many of the handlers need the iconv command, which is + not always listed as a dependancy.

+ +

Please note that, due to the relatively dynamic nature + of this information, the most up to date version is now + kept on http://www.recoll.org/features.html along with + links to the home pages or best source/patches pages, and + misc tips. The list below is not updated often and may be + quite stale.

+ +

For many Linux distributions, most of the commands + listed can be installed from the package repositories. + However, the packages are sometimes outdated, or not the + best version for Recoll, + so you should take a look at http://www.recoll.org/features.html if a file + type is important to you.

+ +

As of Recoll release + 1.14, a number of XML-based formats that were handled by ad + hoc handler code now use the xsltproc command, which + usually comes with libxslt. These are: abiword, fb2 + (ebooks), kword, openoffice, svg.

+ +

Now for the list:

+ +
+
    +
  • +

    Openoffice files need unzip and + xsltproc.

    +
  • + +
  • +

    PDF files need pdftotext which is + part of Poppler + (usually comes with the poppler-utils package). Avoid the + original one from Xpdf.

    +
  • + +
  • +

    Postscript files need pstotext. The + original version has an issue with shell character in + file names, which is corrected in recent packages. + See http://www.recoll.org/features.html + for more detail.

    +
  • + +
  • +

    MS Word needs antiword. It is + also useful to have wvWare installed as + it may be be used as a fallback for some files which + antiword does not + handle.

    +
  • + +
  • +

    MS Excel and PowerPoint are processed by internal + Python + handlers.

    +
  • + +
  • +

    MS Open XML (docx) needs xsltproc.

    +
  • + +
  • +

    Wordperfect files need wpd2html from the + libwpd (or + libwpd-tools on + Ubuntu) package.

    +
  • + +
  • +

    RTF files need unrtf, which, in + its older versions, has much trouble with non-western + character sets. Many Linux distributions carry + outdated unrtf versions. + Check http://www.recoll.org/features.html + for details.

    +
  • + +
  • +

    TeX files need untex or + detex. + Check http://www.recoll.org/features.html + for sources if it's not packaged for your + distribution.

    +
  • + +
  • +

    dvi files need dvips.

    +
  • + +
  • +

    djvu files need djvutxt and + djvused + from the DjVuLibre + package.

    +
  • + +
  • +

    Audio files: Recoll releases 1.14 and later + use a single Python + handler based on mutagen for all audio file + types.

    +
  • + +
  • +

    Pictures: Recoll + uses the Exiftool + Perl package to + extract tag information. Most image file formats are + supported. Note that there may not be much interest + in indexing the technical tags (image size, aperture, + etc.). This is only of interest if you store personal + tags or textual descriptions inside the image + files.

    +
  • + +
  • +

    chm: files in Microsoft help format need Python + and the pychm module + (which needs chmlib).

    +
  • + +
  • +

    ICS: up to Recoll + 1.13, iCalendar files need Python and the icalendar module. icalendar is not needed for + newer versions, which use internal code.

    +
  • + +
  • +

    Zip archives need Python (and the standard zipfile + module).

    +
  • + +
  • +

    Rar archives need Python, the rarfile Python module and the + unrar + utility.

    +
  • + +
  • +

    Midi karaoke files need Python and the Midi + module

    +
  • + +
  • +

    Konqueror webarchive format with Python (uses the + Tarfile module).

    +
  • + +
  • +

    Mimehtml web archive format (support based on the + email handler, which introduces some mild weirdness, + but still usable).

    +
  • +
+
+ +

Text, HTML, email folders, and Scribus files are + processed internally. Lyx + is used to index Lyx files. Many handlers need iconv and the standard + sed and + awk.

+
+ +
+
+
+
+

5.3. Building from + source

+
+
+
+ +
+
+
+
+

5.3.1. Prerequisites

+
+
+
+ +

If you can install any or all of the following through + the package manager for your system, all the better. + Especially Qt is a very + big piece of software, but you will most probably be able + to find a binary package.

+ +

You may have to compile Xapian but this is easy.

+ +

The shopping list:

+ +
+
    +
  • +

    The autoconf, + automake and + libtool triad. Only + autoconf is needed up + to Recoll + 1.21.

    +
  • + +
  • +

    C++ compiler. Up to Recoll version 1.13.04, its + absence can manifest itself by strange messages + about a missing iconv_open.

    +
  • + +
  • +

    bison command + (for Recoll 1.21 + and later).

    +
  • + +
  • +

    xsltproc command. + For building the documentation (for Recoll 1.21 and later). This + sometimes comes with the libxslt package. And also the + Docbook XML and style sheet files.

    +
  • + +
  • +

    Development files for Xapian core.

    + +
    +

    Important

    + +

    If you are building Xapian for an older CPU + (before Pentium 4 or Athlon 64), you need to add + the --disable-sse + flag to the configure command. Else all Xapian + application will crash with an illegal instruction error.

    +
    +
  • + +
  • +

    Development files for Qt 4 . + Recoll has not + been tested with Qt + 5 yet. Recoll 1.15.9 was the last + version to support Qt + 3. If you do not want to install or build + the Qt Webkit + module, Recoll has + a configuration option to disable its use (see + further).

    +
  • + +
  • +

    Development files for X11 and zlib.

    +
  • + +
  • +

    Development files for Python (or use --disable-python-module).

    +
  • + +
  • +

    You may also need libiconv. On Linux systems, the iconv + interface is part of libc and you should not need + to do anything special.

    +
  • +
+
+ +

Check the Recoll download + page for up to date version information.

+
+ +
+
+
+
+

5.3.2. Building

+
+
+
+ +

Recoll has been built + on Linux, FreeBSD, Mac OS X, and Solaris, most versions + after 2005 should be ok, maybe some older ones too + (Solaris 8 is ok). If you build on another system, and + need to modify things, I would very much + welcome patches.

+ +

Configure options: 

+ +
+
    +
  • +

    --without-aspell + will disable the code for phonetic matching of + search terms.

    +
  • + +
  • +

    --with-fam or + --with-inotify will + enable the code for real time indexing. Inotify + support is enabled by default on recent Linux + systems.

    +
  • + +
  • +

    --with-qzeitgeist + will enable sending Zeitgeist events about the + visited search results, and needs the qzeitgeist package.

    +
  • + +
  • +

    --disable-webkit is + available from version 1.17 to implement the result + list with a Qt + QTextBrowser instead of a WebKit widget if you do + not or can't depend on the latter.

    +
  • + +
  • +

    --disable-idxthreads + is available from version 1.19 to suppress + multithreading inside the indexing process. You can + also use the run-time configuration to restrict + recollindex to + using a single thread, but the compile-time option + may disable a few more unused locks. This only + applies to the use of multithreading for the core + index processing (data input). The Recoll monitor mode always + uses at least two threads of execution.

    +
  • + +
  • +

    --disable-python-module will avoid + building the Python module.

    +
  • + +
  • +

    --disable-xattr will + prevent fetching data from file extended + attributes. Beyond a few standard attributes, + fetching extended attributes data can only be + useful is some application stores data in there, + and also needs some simple configuration (see + comments in the fields configuration file).

    +
  • + +
  • +

    --enable-camelcase + will enable splitting camelCase words. + This is not enabled by default as it has the + unfortunate side-effect of making some phrase + searches quite confusing: ie, "MySQL manual" would be matched by + "MySQL manual" and + "my sql manual" but + not "mysql manual" + (only inside phrase searches).

    +
  • + +
  • +

    --with-file-command + Specify the version of the 'file' command to use + (ie: --with-file-command=/usr/local/bin/file). Can + be useful to enable the gnu version on systems + where the native one is bad.

    +
  • + +
  • +

    --disable-qtgui + Disable the Qt interface. Will allow building the + indexer and the command line search program in + absence of a Qt environment.

    +
  • + +
  • +

    --disable-x11mon + Disable X11 + connection monitoring inside recollindex. Together + with --disable-qtgui, this allows building recoll + without Qt and + X11.

    +
  • + +
  • +

    --disable-userdoc + will avoid building the user manual. This avoids + having to install the Docbook XML/XSL files and the + TeX toolchain used for translating the manual to + PDF.

    +
  • + +
  • +

    --disable-pic + (Recoll versions + up to 1.21 only) will compile Recoll with position-dependant + code. This is incompatible with building the KIO or + the Python or + PHP extensions, + but might yield very marginally faster code.

    +
  • + +
  • +

    Of course the usual autoconf configure + options, like --prefix + apply.

    +
  • +
+
+ +

Normal procedure (for source extracted from a tar + distribution):

+
+        cd recoll-xxx
+        ./configure
+        make
+        (practices usual hardship-repelling invocations)
+      
+
+ +

When building from source cloned from the BitBucket + repository, you also need to install autoconf, automake, and libtool and you must execute + sh autogen.sh in the top + source directory before running configure.

+ +
+
+
+
+

5.3.2.1. Building + on Solaris

+
+
+
+ +

We did not test building the GUI on Solaris for + recent versions. You will need at least Qt 4.4. There + are some hints on an old web site page, they may still be + valid.

+ +

Someone did test the 1.19 indexer and Python module + build, they do work, with a few minor glitches. Be sure + to use GNU make and install.

+
+
+ +
+
+
+
+

5.3.3. Installation

+
+
+
+ +

Either type make + install or execute recollinstall prefix, + in the root of the source tree. This will copy the + commands to prefix/bin and the + sample configuration files, scripts and other shared data + to prefix/share/recoll.

+ +

If the installation prefix given to recollinstall is + different from either the system default or the value + which was specified when executing configure (as in + configure --prefix + /some/path), you will have to set the + RECOLL_DATADIR environment + variable to indicate where the shared data is to be found + (ie for (ba)sh: export + RECOLL_DATADIR=/some/path/share/recoll).

+ +

You can then proceed to configuration.

+
+
+ +
+
+
+
+

5.4. Configuration + overview

+
+
+
+ +

Most of the parameters specific to the recoll GUI are set + through the Preferences menu + and stored in the standard Qt place ($HOME/.config/Recoll.org/recoll.conf). + You probably do not want to edit this by hand.

+ +

Recoll indexing options + are set inside text configuration files located in a + configuration directory. There can be several such + directories, each of which defines the parameters for one + index.

+ +

The configuration files can be edited by hand or through + the Index configuration + dialog (Preferences menu). + The GUI tool will try to respect your formatting and + comments as much as possible, so it is quite possible to + use both approaches on the same configuration.

+ +

The most accurate documentation for the configuration + parameters is given by comments inside the default files, + and we will just give a general overview here.

+ +

For each index, there are at least two sets of + configuration files. System-wide configuration files are + kept in a directory named like /usr/share/recoll/examples, and define + default values, shared by all indexes. For each index, a + parallel set of files defines the customized + parameters.

+ +

The default location of the customized configuration is + the .recoll directory in your + home. Most people will only use this directory.

+ +

This location can be changed, or others can be added + with the RECOLL_CONFDIR + environment variable or the -c + option parameter to recoll and recollindex.

+ +

In addition (as of Recoll version 1.19.7), it is possible + to specify two additional configuration directories which + will be stacked before and after the user configuration + directory. These are defined by the RECOLL_CONFTOP and RECOLL_CONFMID environment variables. Values + from configuration files inside the top directory will + override user ones, values from configuration files inside + the middle directory will override system ones and be + overriden by user ones. These two variables may be of use + to applications which augment Recoll functionality, and need to add + configuration data without disturbing the user's files. + Please note that the two, currently single, values will + probably be interpreted as colon-separated lists in the + future: do not use colon characters inside the directory + paths.

+ +

If the .recoll directory + does not exist when recoll or recollindex are started, + it will be created with a set of empty configuration files. + recoll will + give you a chance to edit the configuration file before + starting indexing. recollindex will proceed + immediately. To avoid mistakes, the automatic directory + creation will only occur for the default location, not if + -c or RECOLL_CONFDIR were used (in the latter + cases, you will have to create the directory).

+ +

All configuration files share the same format. For + example, a short extract of the main configuration file + might look as follows:

+
+        # Space-separated list of directories to index.
+        topdirs =  ~/docs /usr/share/doc
+
+        [~/somedirectory-with-utf8-txt-files]
+        defaultcharset = utf-8
+        
+
+ +

There are three kinds of lines:

+ +
+
    +
  • +

    Comment (starts with #) or empty.

    +
  • + +
  • +

    Parameter affectation (name = value).

    +
  • + +
  • +

    Section definition ([somedirname]).

    +
  • +
+
+ +

Long lines can be broken by ending each incomplete part + with a backslash (\).

+ +

Depending on the type of configuration file, section + definitions either separate groups of parameters or allow + redefining some parameters for a directory sub-tree. They + stay in effect until another section definition, or the end + of file, is encountered. Some of the parameters used for + indexing are looked up hierarchically from the current + directory location upwards. Not all parameters can be + meaningfully redefined, this is specified for each in the + next section.

+ +

When found at the beginning of a file path, the tilde + character (~) is expanded to the name of the user's home + directory, as a shell would do.

+ +

Some parameters are lists of strings. White space is + used for separation. List elements with embedded spaces can + be quoted using double-quotes. Double quotes inside these + elements can be escaped with a backslash.

+ +

No value inside a configuration file can contain a + newline character. Long lines can be continued by escaping + the physical newline with backslash, even inside quoted + strings.

+
+astringlist =  "some string \
+with spaces"
+thesame = "some string with spaces"        
+        
+
+ +

Parameters which are not part of string lists can't be + quoted, and leading and trailing space characters are + stripped before the value is used.

+ +

Encoding issues. Most of the configuration + parameters are plain ASCII. Two particular sets of values + may cause encoding issues:

+ +
+
    +
  • +

    File path parameters may contain non-ascii + characters and should use the exact same byte values + as found in the file system directory. Usually, this + means that the configuration file should use the + system default locale encoding.

    +
  • + +
  • +

    The unac_except_trans + parameter should be encoded in UTF-8. If your system + locale is not UTF-8, and you need to also specify + non-ascii file paths, this poses a difficulty because + common text editors cannot handle multiple encodings + in a single file. In this relatively unlikely case, + you can edit the configuration file as two separate + text files with appropriate encodings, and + concatenate them to create the complete + configuration.

    +
  • +
+
+ +
+
+
+
+

5.4.1. Environment + variables

+
+
+
+ +
+
+
RECOLL_CONFDIR
+ +
+

Defines the main configuration directory.

+
+ +
RECOLL_TMPDIR, TMPDIR
+ +
+

Locations for temporary files, in this order of + priority. The default if none of these is set is to + use /tmp. Big + temporary files may be created during indexing, + mostly for decompressing, and also for processing, + e.g. email attachments.

+
+ +
RECOLL_CONFTOP, + RECOLL_CONFMID
+ +
+

Allow adding configuration directories with + priorities below and above the user directory (see + above the Configuration overview section for + details).

+
+ +
RECOLL_EXTRA_DBS, + RECOLL_ACTIVE_EXTRA_DBS
+ +
+

Help for setting up external indexes. See + this + paragraph for explanations.

+
+ +
RECOLL_DATADIR
+ +
+

Defines replacement for the default location of + Recoll data files, normally found in, e.g., + /usr/share/recoll).

+
+ +
RECOLL_FILTERSDIR
+ +
+

Defines replacement for the default location of + Recoll filters, normally found in, e.g., + /usr/share/recoll/filters).

+
+ +
ASPELL_PROG
+ +
+

aspell program to + use for creating the spelling dictionary. The + result has to be compatible with the libaspell which Recoll is using.

+
+ +
VARNAME
+ +
+

Blabla

+
+
+
+
+ +
+
+
+
+

5.4.2. The + main configuration file, recoll.conf

+
+
+
+ +

recoll.conf is the main + configuration file. It defines things like what to index + (top directories and things to ignore), and the default + character set to use for document types which do not + specify it internally.

+ +

The default configuration will index your home + directory. If this is not appropriate, start recoll to create a + blank configuration, click Cancel, and edit the configuration file + before restarting the command. This will start the + initial indexing, which may take some time.

+ +

Most of the following parameters can be changed from + the Index Configuration + menu in the recoll interface. Some + can only be set by editing the configuration file.

+ +
+
+
+
+

5.4.2.1. Parameters + affecting what documents we index:

+
+
+
+ +
+
+
topdirs
+ +
+

Specifies the list of directories or files to + index (recursively for directories). You can use + symbolic links as elements of this list. See the + followLinks option + about following symbolic links found under the + top elements (not followed by default).

+
+ +
skippedNames
+ +
+

A space-separated list of wilcard patterns for + names of files or directories that should be + completely ignored. The list defined in the + default file is:

+
+skippedNames = #* bin CVS  Cache cache* caughtspam  tmp .thumbnails .svn \
+               *~ .beagle .git .hg .bzr loop.ps .xsession-errors \
+               .recoll* xapiandb recollrc recoll.conf 
+
+ +

The list can be redefined at any sub-directory + in the indexed area.

+ +

The top-level directories are not affected by + this list (that is, a directory in topdirs might match and would + still be indexed).

+ +

The list in the default configuration does not + exclude hidden directories (names beginning with + a dot), which means that it may index quite a few + things that you do not want. On the other hand, + email user agents like thunderbird usually store + messages in hidden directories, and you probably + want this indexed. One possible solution is to + have .* in + skippedNames, and + add things like ~/.thunderbird or ~/.evolution in topdirs.

+ +

Not even the file names are indexed for + patterns in this list. See the noContentSuffixes variable for + an alternative approach which indexes the file + names.

+
+ +
noContentSuffixes
+ +
+

This is a list of file name endings (not + wildcard expressions, nor dot-delimited + suffixes). Only the names of matching files will + be indexed (no attempt at MIME type + identification, no decompression, no content + indexing). This can be redefined for + subdirectories, and edited from the GUI. The + default value is:

+
+noContentSuffixes = .md5 .map \
+       .o .lib .dll .a .sys .exe .com \
+       .mpp .mpt .vsd \
+           .img .img.gz .img.bz2 .img.xz .image .image.gz .image.bz2 .image.xz \
+       .dat .bak .rdf .log.gz .log .db .msf .pid \
+       ,v ~ #
+
+
+ +
skippedPaths and daemSkippedPaths
+ +
+

A space-separated list of patterns for + paths of + files or directories that should be skipped. + There is no default in the sample configuration + file, but the code always adds the configuration + and database directories in there.

+ +

skippedPaths is + used both by batch and real time indexing. + daemSkippedPaths can + be used to specify things that should be indexed + at startup, but not monitored.

+ +

Example of use for skipping text files only in + a specific directory:

+
+skippedPaths = ~/somedir/*.txt
+              
+
+
+ +
+ skippedPathsFnmPathname
+ +
+

The values in the *skippedPaths variables are + matched by default with fnmatch(3), with the + FNM_PATHNAME flag. This means that '/' characters + must be matched explicitely. You can set + skippedPathsFnmPathname to 0 to + disable the use of FNM_PATHNAME (meaning that + /*/dir3 will match /dir1/dir2/dir3).

+
+ +
zipSkippedNames
+ +
+

A space-separated list of patterns for names + of files or directories that should be ignored + inside zip archives. This is used directly by the + zip handler, and has a function similar to + skippedNames, but works independantly. Can be + redefined for filesystem subdirectories. For + versions up to 1.19, you will need to update the + Zip handler and install a supplementary Python + module. The details are described on the Recoll wiki.

+
+ +
followLinks
+ +
+

Specifies if the indexer should follow + symbolic links while walking the file tree. The + default is to ignore symbolic links to avoid + multiple indexing of linked files. No effort is + made to avoid duplication when this option is set + to true. This option can be set individually for + each of the topdirs + members by using sections. It can not be changed + below the topdirs + level.

+
+ +
indexedmimetypes
+ +
+

Recoll + normally indexes any file which it knows how to + read. This list lets you restrict the indexed + MIME types to what you specify. If the variable + is unspecified or the list empty (the default), + all supported types are processed. Can be + redefined for subdirectories.

+
+ +
excludedmimetypes
+ +
+

This list lets you exclude some MIME types + from indexing. Can be redefined for + subdirectories.

+
+ +
compressedfilemaxkbs
+ +
+

Size limit for compressed (.gz or .bz2) files. + These need to be decompressed in a temporary + directory for identification, which can be very + wasteful if 'uninteresting' big compressed files + are present. Negative means no limit, 0 means no + processing of any compressed file. Defaults to + -1.

+
+ +
textfilemaxmbs
+ +
+

Maximum size for text files. Very big text + files are often uninteresting logs. Set to -1 to + disable (default 20MB).

+
+ +
textfilepagekbs
+ +
+

If set to other than -1, text files will be + indexed as multiple documents of the given page + size. This may be useful if you do want to index + very big text files as it will both reduce memory + usage at index time and help with loading data to + the preview window. A size of a few megabytes + would seem reasonable (default: 1MB).

+
+ +
membermaxkbs
+ +
+

This defines the maximum size in kilobytes for + an archive member (zip, tar or rar at the + moment). Bigger entries will be skipped.

+
+ +
indexallfilenames
+ +
+

Recoll + indexes file names in a special section of the + database to allow specific file names searches + using wild cards. This parameter decides if file + name indexing is performed only for files with + MIME types that would qualify them for full text + indexing, or for all files inside the selected + subtrees, independently of MIME type.

+
+ +
usesystemfilecommand
+ +
+

Decide if we execute a system command + (file + -i by default) as a + final step for determining the MIME type for a + file (the main procedure uses suffix associations + as defined in the mimemap file). This can be + useful for files with suffix-less names, but it + will also cause the indexing of many bogus "text" + files.

+
+ +
systemfilecommand
+ +
+

Command to use for mime for mime type + determination if usesystefilecommand is set. + Recent versions of xdg-mime + sometimes work better than file.

+
+ +
processwebqueue
+ +
+

If this is set, process the directory where + Web browser plugins copy visited pages for + indexing.

+
+ +
webqueuedir
+ +
+

The path to the web indexing queue. This is + hard-coded in the Firefox plugin as ~/.recollweb/ToIndex so there + should be no need to change it.

+
+
+
+
+ +
+
+
+
+

5.4.2.2. Parameters + affecting how we generate terms:

+
+
+
+ +

Changing some of these parameters will imply a full + reindex. Also, when using multiple indexes, it may not + make sense to search indexes that don't share the + values for these parameters, because they usually + affect both search and index operations.

+ +
+
+
indexStripChars
+ +
+

Decide if we strip characters of diacritics + and convert them to lower-case before terms are + indexed. If we don't, searches sensitive to case + and diacritics can be performed, but the index + will be bigger, and some marginal weirdness may + sometimes occur. The default is a stripped index + (indexStripChars = + 1) for now. When using multiple indexes + for a search, this parameter must be defined + identically for all. Changing the value implies + an index reset.

+
+ +
maxTermExpand
+ +
+

Maximum expansion count for a single term + (e.g.: when using wildcards). The default of + 10000 is reasonable and will avoid queries that + appear frozen while the engine is walking the + term list.

+
+ +
maxXapianClauses
+ +
+

Maximum number of elementary clauses we can + add to a single Xapian query. In some cases, the + result of term expansion can be multiplicative, + and we want to avoid using excessive memory. The + default of 100 000 should be both high enough in + most cases and compatible with current typical + hardware configurations.

+
+ +
nonumbers
+ +
+

If this set to true, no terms will be + generated for numbers. For example "123", + "1.5e6", 192.168.1.4, would not be indexed + ("value123" would still be). Numbers are often + quite interesting to search for, and this should + probably not be set except for special + situations, ie, scientific documents with huge + amounts of numbers in them. This can only be set + for a whole index, not for a subtree.

+
+ +
dehyphenate
+ +
+

Determines if, given an input of co-worker, we add a term for + coworker. This + possibility is new in version 1.22, and on by + default. Setting the variable to off allows + restoring the previous behaviour.

+
+ +
nocjk
+ +
+

If this set to true, specific east asian + (Chinese Korean Japanese) characters/word + splitting is turned off. This will save a small + amount of cpu if you have no CJK documents. If + your document base does include such text but you + are not interested in searching it, setting + nocjk may be a + significant time and space saver.

+
+ +
cjkngramlen
+ +
+

This lets you adjust the size of n-grams used + for indexing CJK text. The default value of 2 is + probably appropriate in most cases. A value of 3 + would allow more precision and efficiency on + longer words, but the index will be approximately + twice as large.

+
+ +
indexstemminglanguages
+ +
+

A list of languages for which the stem + expansion databases will be built. See + recollindex(1) or + use the recollindex + -l command for + possible values. You can add a stem expansion + database for a different language by using + recollindex + -s, but it will be + deleted during the next indexing. Only languages + listed in the configuration file are + permanent.

+
+ +
defaultcharset
+ +
+

The name of the character set used for files + that do not contain a character set definition + (ie: plain text files). This can be redefined for + any sub-directory. If it is not set at all, the + character set used is the one defined by the nls + environment ( LC_ALL, + LC_CTYPE, LANG), or iso8859-1 if nothing is set.

+
+ +
unac_except_trans
+ +
+

This is a list of characters, encoded in + UTF-8, which should be handled specially when + converting text to unaccented lowercase. For + example, in Swedish, the letter a with diaeresis has full + alphabet citizenship and should not be turned + into an a. Each + element in the space-separated list has the + special character as first element and the + translation following. The handling of both the + lowercase and upper-case versions of a character + should be specified, as appartenance to the list + will turn-off both standard accent and case + processing. Example for Swedish:

+
+unac_except_trans =  åå Åå ää Ää öö Öö
+            
+
+ +

Note that the translation is not limited to a + single character, you could very well have + something like üue in the list.

+ +

The default value set for unac_except_trans can't be + listed here because I have trouble with SGML and + UTF-8, but it only contains ligature + decompositions: german ss, oe, ae, fi, fl.

+ +

This parameter can't be defined for + subdirectories, it is global, because there is no + way to do otherwise when querying. If you have + document sets which would need different values, + you will have to index and query them + separately.

+
+ +
maildefcharset
+ +
+

This can be used to define the default + character set specifically for email messages + which don't specify it. This is mainly useful for + readpst (libpst) dumps, which are utf-8 but do + not say so.

+
+ +
localfields
+ +
+

This allows setting fields for all documents + under a given directory. Typical usage would be + to set an "rclaptg" field, to be used in + mimeview to select + a specific viewer. If several fields are to be + set, they should be separated with a semi-colon + (';') character, which there is currently no way + to escape. Also note the initial semi-colon. + Example: localfields= + ;rclaptg=gnus;other = val, then select + specifier viewer with mimetype|tag=... in mimeview.

+
+ +
testmodifusemtime
+ +
+

If true, use mtime instead of default ctime to + determine if a file has been modified (in + addition to size, which is always used). Setting + this can reduce re-indexing on systems where + extended attributes are modified (by some other + application), but not indexed (changing extended + attributes only affects ctime). Notes:

+ +
+
    +
  • +

    This may prevent detection of change in + some marginal file rename cases (the target + would need to have the same size and + mtime).

    +
  • + +
  • +

    You should probably also set + noxattrfields to 1 in this case, except if + you still prefer to perform xattr indexing, + for example if the local file update + pattern makes it of value (as in general, + there is a risk for pure extended + attributes updates without file + modification to go undetected).

    +
  • +
+
+ +

Perform a full index reset after changing the + value of this parameter.

+
+ +
noxattrfields
+ +
+

Recoll versions 1.19 and later automatically + translate file extended attributes into document + fields (to be processed according to the + parameters from the fields file). Setting this + variable to 1 will disable the behaviour.

+
+ +
metadatacmds
+ +
+

This allows executing external commands for + each file and storing the output in Recoll document fields. This + could be used for example to index external tag + data. The value is a list of field names and + commands, don't forget an initial semi-colon. + Example:

+
+[/some/area/of/the/fs]
+metadatacmds = ; tags = tmsu tags %f; otherfield = somecmd -xx %f
+                
+
+ +

As a specially disgusting hack brought by + Recoll 1.19.7, + if a "field name" begins with rclmulti, the data returned by + the command is expected to contain multiple field + values, in configuration file format. This allows + setting several fields by executing a single + command. Example:

+
+metadatacmds = ; rclmulti1 = somecmd %f
+                
+
+ +

If somecmd + returns data in the form of:

+
+field1 = value1
+field2 = value for field2
+                
+
+ +

field1 and + field2 will be set + inside the document metadata.

+
+
+
+
+ +
+
+
+
+

5.4.2.3. Parameters + affecting where and how we store things:

+
+
+
+ +
+
+
dbdir
+ +
+

The name of the Xapian data directory. It will + be created if needed when the index is + initialized. If this is not an absolute path, it + will be interpreted relative to the configuration + directory. The value can have embedded spaces but + starting or trailing spaces will be trimmed. You + cannot use quotes here.

+
+ +
idxstatusfile
+ +
+

The name of the scratch file where the indexer + process updates its status. Default: idxstatus.txt inside the + configuration directory.

+
+ +
maxfsoccuppc
+ +
+

Maximum file system occupation before we stop + indexing. The value is a percentage, + corresponding to what the "Capacity" df output + column shows. The default value is 0, meaning no + checking.

+
+ +
mboxcachedir
+ +
+

The directory where mbox message offsets cache + files are held. This is normally + $RECOLL_CONFDIR/mboxcache, but it may be useful + to share a directory between different + configurations.

+
+ +
mboxcacheminmbs
+ +
+

The minimum mbox file size over which we cache + the offsets. There is really no sense in caching + offsets for small files. The default is 5 MB.

+
+ +
webcachedir
+ +
+

This is only used by the web browser plugin + indexing code, and defines where the cache for + visited pages will live. Default: $RECOLL_CONFDIR/webcache

+
+ +
webcachemaxmbs
+ +
+

This is only used by the web browser plugin + indexing code, and defines the maximum size for + the web page cache. Default: 40 MB. Quite + unfortunately, this is only taken into account + when creating the cache file. You need to delete + the file for a change to be taken into + account.

+
+ +
idxflushmb
+ +
+

Threshold (megabytes of new text data) where + we flush from memory to disk index. Setting this + can help control memory usage. A value of 0 means + no explicit flushing, letting Xapian use its own + default, which is flushing every 10000 (or + XAPIAN_FLUSH_THRESHOLD) documents, which gives + little memory usage control, as memory usage also + depends on average document size. The default + value is 10, and it is probably a bit low. If + your system usually has free memory, you can try + higher values between 20 and 80. In my + experience, values beyond 100 are always + counterproductive.

+
+
+
+
+ +
+
+
+
+

5.4.2.4. Parameters + affecting multithread processing

+
+
+
+ +

The Recoll indexing + process recollindex can use + multiple threads to speed up indexing on multiprocessor + systems. The work done to index files is divided in + several stages and some of the stages can be executed + by multiple threads. The stages are:

+ +
+
    +
  1. File system walking: this is + always performed by the main thread.
  2. + +
  3. File conversion and data + extraction.
  4. + +
  5. Text processing (splitting, + stemming, etc.)
  6. + +
  7. Xapian index update.
  8. +
+
+ +

You can also read a longer document about the + transformation of Recoll indexing to + multithreading.

+ +

The threads configuration is controlled by two + configuration file parameters.

+ +
+
+
thrQSizes
+ +
+

This variable defines the job input queues + configuration. There are three possible queues + for stages 2, 3 and 4, and this parameter should + give the queue depth for each stage (three + integer values). If a value of -1 is used for a + given stage, no queue is used, and the thread + will go on performing the next stage. In + practise, deep queues have not been shown to + increase performance. A value of 0 for the first + queue tells Recoll to perform + autoconfiguration (no need for the two other + values in this case) - this is the default + configuration.

+
+ +
thrTCounts
+ +
+

This defines the number of threads used for + each stage. If a value of -1 is used for one of + the queue depths, the corresponding thread count + is ignored. It makes no sense to use a value + other than 1 for the last stage because updating + the Xapian index + is necessarily single-threaded (and protected by + a mutex).

+
+
+
+ +

The following example would use three queues (of + depth 2), and 4 threads for converting source + documents, 2 for processing their text, and one to + update the index. This was tested to be the best + configuration on the test system (quadri-processor with + multiple disks).

+
+thrQSizes = 2 2 2
+thrTCounts =  4 2 1
+
+ +

The following example would use a single queue, and + the complete processing for each document would be + performed by a single thread (several documents will + still be processed in parallel in most cases). The + threads will use mutual exclusion when entering the + index update stage. In practise the performance would + be close to the precedent case in general, but worse in + certain cases (e.g. a Zip archive would be performed + purely sequentially), so the previous approach is + preferred. YMMV... The 2 last values for thrTCounts are + ignored.

+
+thrQSizes = 2 -1 -1
+thrTCounts =  6 1 1
+
+ +

The following example would disable multithreading. + Indexing will be performed by a single thread.

+
+thrQSizes = -1 -1 -1
+
+
+ +
+
+
+
+

5.4.2.5. Miscellaneous + parameters:

+
+
+
+ +
+
+
autodiacsens
+ +
+

IF the index is not stripped, decide if we + automatically trigger diacritics sensitivity if + the search term has accented characters (not in + unac_except_trans). + Else you need to use the query language and the + D modifier to + specify diacritics sensitivity. Default is + no.

+
+ +
autocasesens
+ +
+

IF the index is not stripped, decide if we + automatically trigger character case sensitivity + if the search term has upper-case characters in + any but the first position. Else you need to use + the query language and the C modifier to specify + character-case sensitivity. Default is yes.

+
+ +
loglevel,daemloglevel
+ +
+

Verbosity level for recoll and recollindex. A + value of 4 lists quite a lot of debug/information + messages. 2 only lists errors. The daemversion is specific to the + indexing monitor daemon.

+
+ +
logfilename, + daemlogfilename
+ +
+

Where the messages should go. 'stderr' can be + used as a special value, and is the default. The + daemversion is + specific to the indexing monitor daemon.

+
+ +
checkneedretryindexscript
+ +
+

This defines the name for a command executed + by recollindex + when starting indexing. If the exit status of the + command is 0, recollindex + retries to index all files which previously could + not be indexed because of data extraction errors. + The default value is a script which checks if any + of the common bin + directories have changed (indicating that a + helper program may have been installed).

+
+ +
mondelaypatterns
+ +
+

This allows specify wildcard path patterns + (processed with fnmatch(3) with 0 flag), to match + files which change too often and for which a + delay should be observed before re-indexing. This + is a space-separated list, each entry being a + pattern and a time in seconds, separated by a + colon. You can use double quotes if a path entry + contains white space. Example:

+
+mondelaypatterns = *.log:20 "this one has spaces*:10"
+              
+
+
+ +
monixinterval
+ +
+

Minimum interval (seconds) for processing the + indexing queue. The real time monitor does not + process each event when it comes in, but will + wait this time for the queue to accumulate to + diminish overhead and in order to aggregate + multiple events to the same file. Default 30 + S.

+
+ +
monauxinterval
+ +
+

Period (in seconds) at which the real time + monitor will regenerate the auxiliary databases + (spelling, stemming) if needed. The default is + one hour.

+
+ +
monioniceclass, + monioniceclassdata
+ +
+

These allow defining the ionice class and data used + by the indexer (default class 3, no data).

+
+ +
filtermaxseconds
+ +
+

Maximum handler execution time, after which it + is aborted. Some postscript programs just + loop...

+
+ +
filtermaxmbytes
+ +
+

Recoll 1.20.7 + and later. Maximum handler memory utilisation. + This uses setrlimit(RLIMIT_AS) on most systems + (total virtual memory space size limit). Some + programs may start with 500 MBytes of mapped + shared libraries, so take this into account when + choosing a value. The default is a liberal + 2000MB.

+
+ +
filtersdir
+ +
+

A directory to search for the external input + handler scripts used to index some types of + files. The value should not be changed, except if + you want to modify one of the default scripts. + The value can be redefined for any + sub-directory.

+
+ +
iconsdir
+ +
+

The name of the directory where recoll result + list icons are stored. You can change this if you + want different images.

+
+ +
idxabsmlen
+ +
+

Recoll stores + an abstract for each indexed file inside the + database. The text can come from an actual + 'abstract' section in the document or will just + be the beginning of the document. It is stored in + the index so that it can be displayed inside the + result lists without decoding the original file. + The idxabsmlen + parameter defines the size of the stored + abstract. The default value is 250 bytes. The + search interface gives you the choice to display + this stored text or a synthetic abstract built by + extracting text around the search terms. If you + always prefer the synthetic abstract, you can + reduce this value and save a little space.

+
+ +
idxmetastoredlen
+ +
+

Maximum stored length for metadata fields. + This does not affect indexing (the whole field is + processed anyway), just the amount of data stored + in the index for the purpose of displaying fields + inside result lists or previews. The default + value is 150 bytes which may be too low if you + have custom fields.

+
+ +
aspellLanguage
+ +
+

Language definitions to use when creating the + aspell dictionary. The value must match a set of + aspell language definition files. You can type + "aspell config" to see where these are installed + (look for data-dir). The default if the variable + is not set is to use your desktop national + language environment to guess the value.

+
+ +
noaspell
+ +
+

If this is set, the aspell dictionary + generation is turned off. Useful for cases where + you don't need the functionality or when it is + unusable because aspell crashes during dictionary + generation.

+
+ +
mhmboxquirks
+ +
+

This allows definining location-related quirks + for the mailbox handler. Currently only the + tbird flag is + defined, and it should be set for directories + which hold Thunderbird data, as their + folder format is weird. Example:

+
+[/path/to/my/mozilla/mail] 
+mhmboxquirks = tbird
+
+ +

It should be noted that later Recoll versions have + improved automatic detection of Thunderbird folders, so that + this should not be needed at all in most + cases.

+
+
+
+
+
+ +
+
+
+
+

5.4.3. The + fields file

+
+
+
+ +

This file contains information about dynamic fields + handling in Recoll. Some + very basic fields have hard-wired behaviour, and, mostly, + you should not change the original data inside the + fields file. But you can + create custom fields fitting your data and handle them + just like they were native ones.

+ +

The fields file has + several sections, which each define an aspect of fields + processing. Quite often, you'll have to modify several + sections to obtain the desired behaviour.

+ +

We will only give a short description here, you should + refer to the comments inside the default file for more + detailed information.

+ +

Field names should be lowercase alphabetic ASCII.

+ +
+
+
[prefixes]
+ +
+

A field becomes indexed (searchable) by having a + prefix defined in this section.

+
+ +
[stored]
+ +
+

A field becomes stored (displayable inside + results) by having its name listed in this section + (typically with an empty value).

+
+ +
[aliases]
+ +
+

This section defines lists of synonyms for the + canonical names used inside the [prefixes] and [stored] sections

+
+ +
[queryaliases]
+ +
+

This section also defines aliases for the + canonic field names, with the difference that the + substitution will only be used at query time, + avoiding any possibility that the value would + pick-up random metadata from documents.

+
+ +
handler-specific + sections
+ +
+

Some input handlers may need specific + configuration for handling fields. Only the email + message handler currently has such a section (named + [mail]). It allows + indexing arbitrary email headers in addition to the + ones indexed by default. Other such sections may + appear in the future.

+
+
+
+ +

Here follows a small example of a personal + fields file. This would + extract a specific email header and use it as a + searchable field, with data displayable inside result + lists. (Side note: as the email handler does no decoding + on the values, only plain ascii headers can be indexed, + and only the first occurrence will be used for headers + that occur several times).

+
+[prefixes]
+# Index mailmytag contents (with the given prefix)
+mailmytag = XMTAG
+
+[stored]
+# Store mailmytag inside the document data record (so that it can be
+# displayed - as %(mailmytag) - in result lists).
+mailmytag = 
+
+[queryaliases]
+filename = fn
+containerfilename = cfn
+
+[mail]
+# Extract the X-My-Tag mail header, and use it internally with the
+# mailmytag field name
+x-my-tag = mailmytag
+
+ +
+
+
+
+

5.4.3.1. Extended + attributes in the fields file

+
+
+
+ +

Recoll versions + 1.19 and later process user extended file attributes as + documents fields by default.

+ +

Attributes are processed as fields of the same name, + after removing the user + prefix on Linux.

+ +

The [xattrtofields] + section of the fields + file allows specifying translations from extended + attributes names to Recoll field names. An empty + translation disables use of the corresponding attribute + data.

+
+
+ +
+
+
+
+

5.4.4. The + mimemap file

+
+
+
+ +

mimemap specifies the + file name extension to MIME type mappings.

+ +

For file names without an extension, or with an + unknown one, the system's file -i command will be executed to determine + the MIME type (this can be switched off inside the main + configuration file).

+ +

The mappings can be specified on a per-subtree basis, + which may be useful in some cases. Example: gaim logs have a .txt extension but should be handled + specially, which is possible because they are usually all + located in one place.

+ +

The recoll_noindex + mimemap variable has been + moved to recoll.conf and + renamed to noContentSuffixes, while keeping the + same function, as of Recoll version 1.21. For older + Recoll versions, see the + documentation for noContentSuffixes but use recoll_noindex in mimemap.

+
+ +
+
+
+
+

5.4.5. The + mimeconf file

+
+
+
+ +

mimeconf specifies how + the different MIME types are handled for indexing, and + which icons are displayed in the recoll result + lists.

+ +

Changing the parameters in the [index] section is + probably not a good idea except if you are a Recoll developer.

+ +

The [icons] section allows you to change the icons + which are displayed by recoll in the result + lists (the values are the basenames of the png images + inside the iconsdir + directory (specified in recoll.conf).

+
+ +
+
+
+
+

5.4.6. The + mimeview file

+
+
+
+ +

mimeview specifies which + programs are started when you click on an Open link in a result list. Ie: HTML is + normally displayed using firefox, but you may prefer + Konqueror, your + openoffice.org program + might be named oofice instead of + openoffice + etc.

+ +

Changes to this file can be done by direct editing, or + through the recoll GUI preferences + dialog.

+ +

If Use desktop preferences to + choose document editor is checked in the + Recoll GUI preferences, + all mimeview entries will + be ignored except the one labelled application/x-all (which is set to use + xdg-open by + default).

+ +

In this case, the xallexcepts top level variable defines a + list of MIME type exceptions which will be processed + according to the local entries instead of being passed to + the desktop. This is so that specific Recoll options such as a page number + or a search string can be passed to applications that + support them, such as the evince viewer.

+ +

As for the other configuration files, the normal usage + is to have a mimeview + inside your own configuration directory, with just the + non-default entries, which will override those from the + central configuration file.

+ +

All viewer definition entries must be placed under a + [view] section.

+ +

The keys in the file are normally MIME types. You can + add an application tag to specialize the choice for an + area of the filesystem (using a localfields specification in + mimeconf). The syntax for + the key is mimetype|tag

+ +

The nouncompforviewmts + entry, (placed at the top level, outside of the + [view] section), holds a + list of MIME types that should not be uncompressed before + starting the viewer (if they are found compressed, ie: + mydoc.doc.gz).

+ +

The right side of each assignment holds a command to + be executed for opening the file. The following + substitutions are performed:

+ +
+
    +
  • +

    %D. Document date

    +
  • + +
  • +

    %f. File name. This may be the name + of a temporary file if it was necessary to create + one (ie: to extract a subdocument from a + container).

    +
  • + +
  • +

    %i. Internal path, for subdocuments + of containers. The format depends on the container + type. If this appears in the command line, + Recoll will not + create a temporary file to extract the subdocument, + expecting the called application (possibly a + script) to be able to handle it.

    +
  • + +
  • +

    %M. MIME type

    +
  • + +
  • +

    %p. Page index. Only significant for + a subset of document types, currently only PDF, + Postscript and DVI files. Can be used to start the + editor at the right page for a match or + snippet.

    +
  • + +
  • +

    %s. Search term. The value will only + be set for documents with indexed page numbers (ie: + PDF). The value will be one of the matched search + terms. It would allow pre-setting the value in the + "Find" entry inside Evince for example, for easy + highlighting of the term.

    +
  • + +
  • +

    %u. Url.

    +
  • +
+
+ +

In addition to the predefined values above, all + strings like %(fieldname) + will be replaced by the value of the field named + fieldname for the document. + This could be used in combination with field + customisation to help with opening the document.

+
+ +
+
+
+
+

5.4.7. The + ptrans file

+
+
+
+ +

ptrans specifies + query-time path translations. These can be useful in + multiple cases.

+ +

The file has a section for any index which needs + translations, either the main one or additional query + indexes. The sections are named with the Xapian index directory names. No + slash character should exist at the end of the paths (all + comparisons are textual). An exemple should make things + sufficiently clear

+
+          [/home/me/.recoll/xapiandb]
+          /this/directory/moved = /to/this/place
+
+          [/path/to/additional/xapiandb]
+          /server/volume1/docdir = /net/server/volume1/docdir
+          /server/volume2/docdir = /net/server/volume2/docdir
+        
+
+
+ +
+
+
+
+

5.4.8. Examples + of configuration adjustments

+
+
+
+ +
+
+
+
+

5.4.8.1. Adding + an external viewer for an non-indexed type

+
+
+
+ +

Imagine that you have some kind of file which does + not have indexable content, but for which you would + like to have a functional Open link in the result list (when + found by file name). The file names end in .blob and can be + displayed by application blobviewer.

+ +

You need two entries in the configuration files for + this to work:

+ +
+
    +
  • +

    In $RECOLL_CONFDIR/mimemap + (typically ~/.recoll/mimemap), add the + following line:

    +
    +.blob = application/x-blobapp
    +
    + +

    Note that the MIME type is made up here, and + you could call it diesel/oil just + the same.

    +
  • + +
  • +

    In $RECOLL_CONFDIR/mimeview under + the [view] section, + add:

    +
    +application/x-blobapp = blobviewer %f
    +
    + +

    We are supposing that blobviewer wants + a file name parameter here, you would use + %u if it liked URLs + better.

    +
  • +
+
+ +

If you just wanted to change the application used by + Recoll to display a + MIME type which it already knows, you would just need + to edit mimeview. The + entries you add in your personal file override those in + the central configuration, which you do not need to + alter. mimeview can also + be modified from the Gui.

+
+ +
+
+
+
+

5.4.8.2. Adding + indexing support for a new file type

+
+
+
+ +

Let us now imagine that the above .blob files actually + contain indexable text and that you know how to extract + it with a command line program. Getting Recoll to index the files is easy. + You need to perform the above alteration, and also to + add data to the mimeconf + file (typically in ~/.recoll/mimeconf):

+ +
+
    +
  • +

    Under the [index] + section, add the following line (more about the + rclblob + indexing script later):

    +
    +application/x-blobapp = exec rclblob
    +
    +
  • + +
  • +

    Under the [icons] + section, you should choose an icon to be + displayed for the files inside the result lists. + Icons are normally 64x64 pixels PNG files which + live in /usr/share/recoll/images.

    +
  • + +
  • +

    Under the [categories] section, you should + add the MIME type where it makes sense (you can + also create a category). Categories may be used + for filtering in advanced search.

    +
  • +
+
+ +

The rclblob handler should + be an executable program or script which exists inside + /usr/share/recoll/filters. It will be + given a file name as argument and should output the + text or html contents on the standard output.

+ +

The filter + programming section describes in more detail how to + write an input handler.

+
+
+
+
+
+ + diff --git a/src/doc/user/usermanual.xml b/src/doc/user/usermanual.xml new file mode 100644 index 00000000..8621940a --- /dev/null +++ b/src/doc/user/usermanual.xml @@ -0,0 +1,6686 @@ +Recoll"> +http://www.recoll.org/features.html"> + +Xapian"> +Windows"> + +]> + + + + + Recoll user manual + + + Jean-Francois + Dockes + +
jfd@recoll.org
+
+
+ + + 2005-2015 + Jean-Francois Dockes + + + + Permission is granted to copy, distribute and/or + modify this document under the terms of the GNU Free Documentation + License, Version 1.3 or any later version published by the Free + Software Foundation; with no Invariant Sections, no Front-Cover + Texts, and no Back-Cover Texts. A copy of the license can be + found at the following + location: GNU + web site. + + This document introduces full text search notions + and describes the installation and use of the &RCL; + application. This version describes &RCL; &RCLVERSION;. + + + +
+ + + Introduction + + This document introduces full text search notions + and describes the installation and use of the &RCL; + application. This version describes &RCL; &RCLVERSION;. + + &RCL; was for a long time dedicated to Unix-like systems. It + was only lately (2015) ported to + MS-Windows. Many references in this + manual, especially file locations, are specific to Unix, and not + valid on &WIN;. Some described features are also not available on + &WIN;. + + The manual will be progressively updated for &WIN;. Until this + happens, most references to files can be translated by looking under + the Recoll installation directory (esp. the + Share subdirectory). The user configuration is + stored by default under AppData/Local/Recoll + inside the user directory, along with the index itself. + + + Giving it a try + + If you do not like reading manuals (who does?) but + wish to give &RCL; a try, just install the application + and start the recoll graphical user + interface (GUI), which will ask permission to index your home + directory by default, allowing you to search immediately after + indexing completes. + + Do not do this if your home directory contains a huge + number of documents and you do not want to wait or are very + short on disk space. In this case, you may first want to customize + the configuration + to restrict the indexed area (for the very impatient with a completed package install, from the recoll GUI: + Preferences + Indexing configuration + , then adjust the Top + directories section). + + Also be aware that you may need to install the + appropriate supporting + applications for document types that need them (for + example antiword for + Microsoft Word files). + + + + Full text search + + &RCL; is a full text search application, which means that it + finds your data by content rather than by external attributes + (like the file name). You specify words + (terms) which should or should not appear in the text you are + looking for, and receive in return a list of matching + documents, ordered so that the most + relevant documents will appear + first. + + You do not need to remember in what file or email message you + stored a given piece of information. You just ask for related + terms, and the tool will return a list of documents where + these terms are prominent, in a similar way to Internet search + engines. + + Full text search applications try to determine which + documents are most relevant to the search terms you + provide. Computer algorithms for determining relevance can be + very complex, and in general are inferior to the power of the + human mind to rapidly determine relevance. The quality of + relevance guessing is probably the most important aspect when + evaluating a search application. + + In many cases, you are looking for all the forms of a + word, including plurals, different tenses for a verb, or terms + derived from the same root or stem + (example: floor, floors, floored, + flooring...). Queries are usually automatically + expanded to all such related terms (words that reduce to the + same stem). This can be prevented for searching for a specific + form. + + Stemming, by itself, does not accommodate for misspellings + or phonetic searches. A full text search application may also + support this form of approximation. For example, a search for + aliterattion returning no result may + propose, depending on index contents, alliteration + alteration alterations altercation as possible + replacement terms. + + + + + Recoll overview + + &RCL; uses the + &XAP; information retrieval + library as its storage and retrieval engine. &XAP; is a very + mature package using a sophisticated + probabilistic ranking model. + + The &XAP; library manages an index database which + describes where terms appear in your document files. It + efficiently processes the complex queries which are produced by + the &RCL; query expansion mechanism, and is in charge of the + all-important relevance computation task. + + &RCL; provides the mechanisms and interface to get data + into and out of the index. This includes translating the many + possible document formats into pure text, handling term + variations (using &XAP; stemmers), and spelling approximations + (using the aspell speller), + interpreting user queries and presenting results. + + In a shorter way, &RCL; does the dirty footwork, &XAP; + deals with the intelligent parts of the process. + + The &XAP; index can be big (roughly the size of the + original document set), but it is not a document + archive. &RCL; can only display documents that still exist at + the place from which they were indexed. (Actually, there is a + way to reconstruct a document from the information in the + index, but the result is not nice, as all formatting, + punctuation and capitalization are lost). + + &RCL; stores all internal data in Unicode + UTF-8 format, and it can index files of many types + with different character sets, encodings, and languages into the + same index. It can process documents embedded inside other + documents (for example a pdf document stored inside a Zip + archive sent as an email attachment...), down to an arbitrary + depth. + + Stemming is the process by which &RCL; reduces words to + their radicals so that searching does not depend, for example, on a + word being singular or plural (floor, floors), or on a verb tense + (flooring, floored). Because the mechanisms used for stemming + depend on the specific grammatical rules for each language, there + is a separate &XAP; stemmer module for most common languages where + stemming makes sense. + + &RCL; stores the unstemmed versions of terms in the main index + and uses auxiliary databases for term expansion (one for each + stemming language), which means that you can switch stemming + languages between searches, or add a language without needing a + full reindex. + + Storing documents written in different languages in the same + index is possible, and commonly done. In this situation, you can + specify several stemming languages for the index. + + &RCL; currently makes no attempt at automatic language + recognition, which means that the stemmer will sometimes be applied + to terms from other languages with potentially strange results. In + practise, even if this introduces possibilities of confusion, this + approach has been proven quite useful, and it is much less + cumbersome than separating your documents according to what + language they are written in. + + By default, &RCL; strips most accents and + diacritics from terms, and converts them to lower case before + either storing them in the index or searching for them. As a + consequence, it is impossible to search for a particular + capitalization of a term (US / + us), or to discriminate two terms based on + diacritics (sake / saké, + mate / maté). + + &RCL; versions 1.18 and newer can optionally store the raw + terms, without accent stripping or case conversion. In this + configuration, default searches will behave as before, but it is + possible to perform searches sensitive to case and + diacritics. This is described in more detail + in the section about index + case and diacritics sensitivity. + + &RCL; has many parameters which define exactly what to + index, and how to classify and decode the source + documents. These are kept in configuration files. A + default configuration is copied into a standard location + (usually something like + /usr/share/recoll/examples) + during installation. The default values set by the + configuration files in this directory may be overridden by + values set inside your personal configuration, found + by default in the .recoll sub-directory + of your home directory. The default configuration will index + your home directory with default parameters and should be + sufficient for giving &RCL; a try, but you may want to adjust + it later, which can be done either by editing the text files + or by using configuration menus in the + recoll GUI. Some other parameters affecting only + the recoll GUI are stored in the standard + location defined by Qt. + + The indexing + process is started automatically the first time you + execute the recoll GUI. Indexing can also + be performed by executing the recollindex + command. &RCL; indexing is multithreaded by default when + appropriate hardware resources are available, and can perform + in parallel multiple tasks among text extraction, segmentation + and index updates. + + Searches are usually + performed inside the recoll GUI, which has many + options to help you find what you are looking for. However, there + are other ways to perform &RCL; searches: mostly a + command line interface, a + + Python + programming interface, a + KDE KIO slave module, and + Ubuntu Unity + Lens (for older versions) or + + Scope (for current versions) modules. + + + + + + + + Indexing + + + Introduction + + Indexing is the process by which the set of documents is + analyzed and the data entered into the database. &RCL; + indexing is normally incremental: documents will only be + processed if they have been modified since the last run. On + the first execution, all documents will need processing. A + full index build can be forced later by specifying an option + to the indexing command (recollindex + or ). + + recollindex skips files which caused an + error during a previous pass. This is a performance + optimization, and a new behaviour in version 1.21 (failed files + were always retried by previous versions). The command line + option can be set to retry failed files, for + example after updating a filter. + + The following sections give an overview of different + aspects of the indexing processes and configuration, with links + to detailed sections. + + Depending on your data, temporary files may be needed during + indexing, some of them possibly quite big. You can use the + RECOLL_TMPDIR or TMPDIR environment + variables to determine where they are created (the default is to + use /tmp). Using TMPDIR has + the nice property that it may also be taken into account by + auxiliary commands executed by recollindex. + + + Indexing modes + + &RCL; indexing can be performed along two different modes: + + + + <link linkend="RCL.INDEXING.PERIODIC"> + Periodic (or batch) indexing:</link> + indexing takes place at discrete + times, by executing the recollindex + command. The typical usage is to have a nightly indexing run + + programmed into + your cron file. + + + + <link linkend="RCL.INDEXING.MONITOR">Real + time indexing:</link> + indexing takes place as soon as a file is created or + changed. recollindex runs as a daemon + and uses a file system alteration monitor such as + inotify, + Fam or + Gamin + to detect file changes. + + + + + The choice between the two methods is mostly a matter of + preference, and they can be combined by setting up multiple + indexes (ie: use periodic indexing on a big documentation + directory, and real time indexing on a small home + directory). Monitoring a big file system tree can consume + significant system resources. + + The choice of method and the parameters used can be + configured from the recoll GUI: + + Preferences + Indexing schedule + + + + + + Configurations, multiple indexes + + The parameters describing what is to be indexed and + local preferences are defined in text files contained in a + configuration + directory. + + All parameters have defaults, defined in system-wide + files. + + Without further configuration, &RCL; will index all + appropriate files from your home directory, with a reasonable + set of defaults. + + A default personal configuration directory + ($HOME/.recoll/) is created + when a &RCL; program is first executed. It is possible to + create other configuration directories, and use them by + setting the RECOLL_CONFDIR environment + variable, or giving the option to any of + the &RCL; commands. + + In some cases, it may be interesting to index different + areas of the file system to separate databases. You can do this + by using multiple configuration directories, each indexing a + file system area to a specific database. Typically, this + would be done to separate personal and shared + indexes, or to take advantage of the organization of your data + to improve search precision. + + The generated indexes can + be queried concurrently in a transparent manner. + + For index generation, multiple configurations are + totally independant from each other. When multiple indexes need + to be used for a single search, + some parameters + should be consistent among the configurations. + + + + + Document types + &RCL; knows about quite a few different document + types. The parameters for document types recognition and + processing are set in + configuration files. + + Most file types, like HTML or word processing files, only hold + one document. Some file types, like email folders or zip + archives, can hold many individually indexed documents, which may + themselves be compound ones. Such hierarchies can go quite + deep, and &RCL; can process, for example, a + LibreOffice + document stored as an attachment to an email message inside an + email folder archived in a zip file... + + &RCL; indexing processes plain text, HTML, OpenDocument + (Open/LibreOffice), email formats, and a few others internally. + + Other file types (ie: postscript, pdf, ms-word, rtf ...) + need external applications for preprocessing. The list is in the + installation + section. After every indexing operation, &RCL; updates a list of + commands that would be needed for indexing existing files + types. This list can be displayed by selecting the menu option + + File + Show Missing Helpers + + in the recoll GUI. It is stored in the + missing text file inside the configuration + directory. + + By default, &RCL; will try to index any file type that + it has a way to read. This is sometimes not desirable, and + there are ways to either exclude some types, or on the + contrary to define a positive list of types to be + indexed. In the latter case, any type not in the list will + be ignored. + + Excluding types can be done by adding wildcard name + patterns to the skippedNames list, which + can be done from the GUI Index configuration menu. For + versions 1.20 and later, you can alternatively set the + excludedmimetypes list in the + configuration file. This can be redefined for + subdirectories. + + You can also define an exclusive list of MIME types to be indexed (no others will be indexed), by settting + the indexedmimetypes configuration + variable. Example: +indexedmimetypes = text/html application/pdf + + It is possible to redefine this parameter for + subdirectories. Example: +[/path/to/my/dir] +indexedmimetypes = application/pdf + + (When using sections like this, don't forget that they remain + in effect until the end of the file or another section + indicator). + + excludedmimetypes or + indexedmimetypes, can be set either by + editing the + main configuration file + (recoll.conf), or from the GUI + index configuration tool. + + + + + + Indexing failures + + Indexing may fail for some documents, for a number of + reasons: a helper program may be missing, the document may be + corrupt, we may fail to uncompress a file because no file + system space is available, etc. + + &RCL; versions prior to 1.21 always retried to index + files which had previously caused an error. This guaranteed + that anything that may have become indexable (for example + because a helper had been installed) would be indexed. However + this was bad for performance because some indexing failures + may be quite costly (for example failing to uncompress a big + file because of insufficient disk space). + + The indexer in &RCL; versions 1.21 and later does not + retry failed file by default. Retrying will only occur if an + explicit option () is set on the + recollindex command line, or if a script + executed when recollindex starts up says + so. The script is defined by a configuration variable + (checkneedretryindexscript), and makes a + rather lame attempt at deciding if a helper command may have + been installed, by checking if any of the common + bin directories have changed. + + + + + Recovery + In the rare case where the index becomes corrupted (which can + signal itself by weird search results or crashes), the index files + need to be erased before restarting a clean indexing pass. Just delete + the xapiandb directory (see + next section), or, + alternatively, start the next recollindex with the + option, which will reset the database before + indexing. + + + + + + Index storage + + The default location for the index data is the + xapiandb subdirectory of the &RCL; + configuration directory, typically + $HOME/.recoll/xapiandb/. This can be + changed via two different methods (with different purposes): + + You can specify a different configuration + directory by setting the RECOLL_CONFDIR + environment variable, or using the + option to the &RCL; commands. This method would typically be + used to index different areas of the file system to + different indexes. For example, if you were to issue the + following command: + recoll -c ~/.indexes-email Then + &RCL; would use configuration files + stored in ~/.indexes-email/ and, + (unless specified otherwise in + recoll.conf) would look for + the index in + ~/.indexes-email/xapiandb/. + + Using multiple configuration directories and configuration + options allows you to tailor multiple configurations and + indexes to handle whatever subset of the available data you wish + to make searchable. + + + + For a given configuration directory, you can + specify a non-default storage location for the index by setting + the dbdir parameter in the configuration file + (see the configuration + section). This method would mainly be of use if you wanted + to keep the configuration directory in its default location, but + desired another location for the index, typically out of disk + occupation concerns. + + + + + + The size of the index is determined by the size of the set + of documents, but the ratio can vary a lot. For a typical + mixed set of documents, the index size will often be close to + the data set size. In specific cases (a set of compressed mbox + files for example), the index can become much bigger than the + documents. It may also be much smaller if the documents + contain a lot of images or other non-indexed data (an extreme + example being a set of mp3 files where only the tags would be + indexed). + + Of course, images, sound and video do not increase the + index size, which means that nowadays (2012), typically, even a big + index will be negligible against the total amount of data on the + computer. + + The index data directory (xapiandb) + only contains data that can be completely rebuilt by an index run + (as long as the original documents exist), and it can always be + destroyed safely. + + + &XAP; index formats + + &XAP; versions usually support several formats for index + storage. A given major &XAP; version will have a current format, + used to create new indexes, and will also support the format from + the previous major version. + + &XAP; will not convert automatically an existing index + from the older format to the newer one. If you want to upgrade to + the new format, or if a very old index needs to be converted + because its format is not supported any more, you will have to + explicitly delete the old index, then run a normal indexing + process. + + Using the option to + recollindex is not sufficient to change the + format, you will have to delete all files inside the index + directory (typically ~/.recoll/xapiandb) + before starting the indexing. + + + + + Security aspects + + The &RCL; index does not hold copies of the indexed + documents. But it does hold enough data to allow for an almost + complete reconstruction. If confidential data is indexed, + access to the database directory should be restricted. + + &RCL; will create the configuration directory with a mode of + 0700 (access by owner only). As the index data directory is by + default a sub-directory of the configuration directory, this should + result in appropriate protection. + + If you use another setup, you should think of the kind + of protection you need for your index, set the directory + and files access modes appropriately, and also maybe adjust + the umask used during index updates. + + + + + + + + Index configuration + + Variables set inside the + &RCL; configuration files + control which areas of the file system are indexed, and how + files are processed. These variables can be set either by + editing the text files or by using the + dialogs in the + recoll GUI. + + The first time you start recoll, you + will be asked whether or not you would like it to build the + index. If you want to adjust the configuration before + indexing, just click Cancel at this + point, which will get you into the configuration interface. If + you exit at this point, recoll will have + created a ~/.recoll directory containing + empty configuration files, which you can edit by hand. + + The configuration is documented inside the + installation chapter + of this document, or in the + + recoll.conf + 5 + + man page, but the most + current information will most likely be the comments inside the + sample file. The most immediately useful variable you may + interested in is probably + + topdirs, + which determines what subtrees get indexed. + + The applications needed to index file types other than + text, HTML or email (ie: pdf, postscript, ms-word...) are + described in the external + packages section. + + As of Recoll 1.18 there are two incompatible types of Recoll + indexes, depending on the treatment of character case and + diacritics. The next section describes the two types in more + detail. + + + Multiple indexes + + Multiple &RCL; indexes can be created by + using several configuration directories which are usually set to + index different areas of the file system. A specific index can + be selected for updating or searching, using the + RECOLL_CONFDIR environment variable or the + option to recoll and + recollindex. + + When working with the recoll index + configuration GUI, the configuration directory for which parameters + are modified is the one which was selected by + RECOLL_CONFDIR or the parameter, + and there is no way to switch configurations within the GUI. + + Additional configuration directory (beyond + ~/.recoll) must be created by hand + (mkdir or such), the GUI will not do it. This is + to avoid mistakenly creating additional directories when an + argument is mistyped. + + A typical usage scenario for the multiple index feature + would be for a system administrator to set up a central index + for shared data, that you choose to search or not in addition to + your personal data. Of course, there are other + possibilities. There are many cases where you know the subset of + files that should be searched, and where narrowing the search + can improve the results. You can achieve approximately the same + effect with the directory filter in advanced search, but + multiple indexes will have much better performance and may be + worth the trouble. + + A recollindex program instance can only + update one specific index. + + The main index (defined by + RECOLL_CONFDIR or ) is + always active. If this is undesirable, you can set up your + base configuration to index an empty directory. + + The different search interfaces (GUI, command line, ...) + have different methods to define the set of indexes to be + used, see the appropriate section. + + If a set of multiple indexes are to be used together for + searches, some configuration parameters must be consistent + among the set. These are parameters which need to be the same + when indexing and searching. As the parameters come from the + main configuration when searching, they need to be compatible + with what was set when creating the other indexes (which came + from their respective configuration directories). + + Most importantly, all indexes to be queried concurrently must + have the same option concerning character case and diacritics + stripping, but there are other constraints. Most of the + relevant parameters are described in the + linked + section. + + + + + + Index case and diacritics sensitivity + + As of &RCL; version 1.18 you have a choice of building an + index with terms stripped of character case and diacritics, or + one with raw terms. For a source term of + Résumé, the former will store + resume, the latter + Résumé. + + Each type of index allows performing searches insensitive to + case and diacritics: with a raw index, the user entry will be + expanded to match all case and diacritics variations present in + the index. With a stripped index, the search term will be stripped + before searching. + + A raw index allows for another possibility which a stripped + index cannot offer: using case and diacritics to discriminate + between terms, returning different results when searching for + US and us or + resume and résumé. + Read the section about search + case and diacritics sensitivity for more details. + + The type of index to be created is controlled by the + indexStripChars configuration + variable which can only be changed by editing the + configuration file. Any change implies an index reset (not + automated by &RCL;), and all indexes in a search must be set + in the same way (again, not checked by &RCL;). + + If the indexStripChars is not set, &RCL; + 1.18 creates a stripped index by default, for + compatibility with previous versions. + + As a cost for added capability, a raw index will be slightly + bigger than a stripped one (around 10%). Also, searches will be + more complex, so probably slightly slower, and the feature is + still young, so that a certain amount of weirdness cannot be + excluded. + + One of the most adverse consequence of using a raw index + is that some phrase and proximity searches may become + impossible: because each term needs to be expanded, and all + combinations searched for, the multiplicative expansion may + become unmanageable. + + + + + + The index configuration GUI + + Most parameters for a given index configuration can + be set from a recoll GUI running on this + configuration (either as default, or by setting + RECOLL_CONFDIR or the + option.) + + The interface is started from the + + Preferences + Index Configuration + + menu entry. It is divided in four tabs, + Global parameters, Local + parameters, Web history + (which is explained in the next section) and Search + parameters. + + The Global parameters tab allows setting + global variables, like the lists of top directories, skipped paths, + or stemming languages. + + The Local parameters tab allows setting + variables that can be redefined for subdirectories. This second tab + has an initially empty list of customisation directories, to which + you can add. The variables are then set for the currently selected + directory (or at the top level if the empty line is + selected). + + The Search parameters section defines + parameters which are used at query time, but are global to an + index and affect all search tools, not only the GUI. + + The meaning for most entries in the interface is + self-evident and documented by a ToolTip + popup on the text label. For more detail, you will need to + refer to the configuration + section of this guide. + + The configuration tool normally respects the comments + and most of the formatting inside the configuration file, so + that it is quite possible to use it on hand-edited files, + which you might nevertheless want to backup first... + + + + + + + Indexing WEB pages you wisit + + With the help of a Firefox + extension, &RCL; can index the Internet pages that you visit. The + extension was initially designed for the + Beagle indexer, but it has recently be + renamed and better adapted to &RCL;. + + The extension works by copying visited WEB pages to an indexing + queue directory, which &RCL; then processes, indexing the data, + storing it into a local cache, then removing the file from the + queue. + + This feature can be enabled in the GUI + Index configuration + panel, or by editing the configuration file (set + processwebqueue to 1). + + A current pointer to the extension can be found, along with + up-to-date instructions, on the + Recoll wiki. + + A copy of the indexed WEB pages is retained by Recoll in a + local cache (from which previews can be fetched). The cache size can + be adjusted from the Index configuration / + Web history panel. Once the maximum size + is reached, old pages are purged - both from the cache and the index + - to make room for new ones, so you need to explicitly archive in + some other place the pages that you want to keep + indefinitely. + + + + + Extended attributes data + + User extended attributes are named pieces of information + that most modern file systems can attach to any file. + + &RCL; versions 1.19 and later process extended attributes + as document fields by default. For older versions, this has to + be activated at build time. + + A + + freedesktop standard defines a few special + attributes, which are handled as such by &RCL;: + + + mime_type + If set, this overrides any other + determination of the file MIME type. + + + charset + If set, this defines the file character set + (mostly useful for plain text files). + + + + + By default, other attributes are handled as &RCL; fields. + On Linux, the user prefix is removed from + the name. This can be configured more precisely inside + the + fields configuration file. + + + + + + Importing external tags + + During indexing, it is possible to import metadata for + each file by executing commands. For example, this could + extract user tag data for the file and store it in a field for + indexing. + + See the + section + about the metadatacmds field in + the main configuration chapter for more detail. + + + + + Periodic indexing + + + Running indexing + + Indexing is always performed by the + recollindex program, which can be started + either from the command line or from the File + menu in the recoll GUI program. When started + from the GUI, the indexing will run on the same configuration + recoll was started on. When started from the + command line, recollindex will use the + RECOLL_CONFDIR variable or accept a + confdir option + to specify a non-default configuration directory. + + If the recoll program finds no index + when it starts, it will automatically start indexing (except + if canceled). + + The recollindex indexing process can be + interrupted by sending an interrupt (Ctrl-C, + SIGINT) or terminate + (SIGTERM) signal. Some time may elapse before the process exits, + because it needs to properly flush and close the index. This can + also be done from the recoll GUI + + File + Stop Indexing + + menu entry. + + After such an interruption, the index will be somewhat + inconsistent because some operations which are normally + performed at the end of the indexing pass will have been + skipped (for example, the stemming and spelling databases + will be inexistant or out of date). You just need to restart + indexing at a later time to restore consistency. The + indexing will restart at the interruption point (the full + file tree will be traversed, but files that were indexed up + to the interruption and for which the index is still up to + date will not need to be reindexed). + + recollindex has a number of other options + which are described in its man page. Only a few will be + described here. + Option will reset the index when + starting. This is almost the same as destroying the index + files (the nuance is that the &XAP; format version will not + be changed). + Option will force the update of all + documents without resetting the index first. This will not + have the "clean start" aspect of , but + the advantage is that the index will remain available for + querying while it is rebuilt, which can be a significant + advantage if it is very big (some installations need days + for a full index rebuild). + + Option will force retrying files + which previously failed to be indexed, for example because + of a missing helper program. + + Of special interest also, maybe, are + the and + options. allows indexing an explicit + list of files (given as command line parameters or read on + stdin). tells + recollindex to ignore file selection + parameters from the configuration. Together, these options + allow building a custom file selection process for some area + of the file system, by adding the top directory to the + skippedPaths list and using an + appropriate file selection method to build the file list to + be fed to recollindex + . Trivial example: + + + find . -name indexable.txt -print | recollindex -if + + + recollindex will + not descend into subdirectories specified as parameters, + but just add them as index entries. It is + up to the external file selection method to build the complete + file list. + + + + Using <command>cron</command> to automate + indexing + + The most common way to set up indexing is to have a cron + task execute it every night. For example the following + crontab entry would do it every day at + 3:30AM (supposing recollindex is in your + PATH): + + /some/tmp/dir/recolltrace 2>&1 +]]> + + Or, using anacron: + /tmp/rcltraceme 2>&1" +]]> + + + As of version 1.17 the &RCL; GUI has dialogs to manage + crontab entries for + recollindex. You can reach them from the + + Preferences + Indexing Schedule + + menu. They only + work with the good old cron, and do not give + access to all features of cron scheduling. + + The usual command to edit your + crontab is crontab + (which will usually start the + vi editor to edit the file). You may have + more sophisticated tools available on your system. + + Please be aware that there may be differences between your + usual interactive command line environment and the one seen by + crontab commands. Especially the PATH variable may be of + concern. Please check the crontab manual pages about possible + issues. + + + + + + + Real time indexing + + Real time monitoring/indexing is performed by starting the + recollindex command. + With this option, recollindex will detach + from the terminal and become a daemon, permanently monitoring + file changes and updating the index. + + Under KDE, + Gnome and some other desktop + environments, the daemon can automatically started when you log + in, by creating a desktop file inside the + ~/.config/autostart directory. This can be + done for you by the &RCL; GUI. Use the + Preferences->Indexing Schedule menu. + + With older X11 setups, starting + the daemon is normally performed as part of the user session + script. + + The rclmon.sh script can be used to + easily start and stop the daemon. It can be found in the + examples directory (typically + /usr/local/[share/]recoll/examples). + + For example, my out of fashion + xdm-based session has a + .xsession script with the following lines + at the end: + + recollconf=$HOME/.recoll-home +recolldata=/usr/local/share/recoll +RECOLL_CONFDIR=$recollconf $recolldata/examples/rclmon.sh start + +fvwm + + + + The indexing daemon gets started, then the window manager, + for which the session waits. By default the + indexing daemon will monitor the state of the X11 session, and + exit when it finishes, it is not necessary to kill it + explicitly. (The X11 server + monitoring can be disabled with option to + recollindex). + + If you use the daemon completely out of an + X11 session, you need to add option + to disable X11 + session monitoring (else the daemon will not start). + + By default, the messages from the indexing daemon will be + setn to the same file as those from the interactive commands + (logfilename). You may want to change this + by setting the daemlogfilename and + daemloglevel configuration parameters. Also + the log file will only be truncated when the daemon starts. If + the daemon runs permanently, the log file may grow quite big, + depending on the log level. + + When building &RCL;, the real time indexing support can be + customised during package configuration with + the or + options. The default is + currently to include inotify + monitoring on systems that support it, and, as of &RCL; 1.17, + gamin support on + FreeBSD. + + While it is convenient that data is indexed in real time, + repeated indexing can generate a significant load on the + system when files such as email folders change. Also, + monitoring large file trees by itself significantly taxes + system resources. You probably do not want to enable it if + your system is short on resources. Periodic indexing is + adequate in most cases. + + Increasing resources for inotify + On Linux systems, monitoring a big tree may need + increasing the resources available to inotify, which are + normally defined in /etc/sysctl.conf. + +### inotify +# +# cat /proc/sys/fs/inotify/max_queued_events - 16384 +# cat /proc/sys/fs/inotify/max_user_instances - 128 +# cat /proc/sys/fs/inotify/max_user_watches - 16384 +# +# -- Change to: +# +fs.inotify.max_queued_events=32768 +fs.notify.max_user_instances=256 +fs.inotify.max_user_watches=32768 + + + + Especially, you will need to trim your tree or adjust + the max_user_watches value if indexing exits with + a message about errno ENOSPC (28) from + inotify_add_watch. + + + + Slowing down the reindexing rate for fast changing + files + + When using the real time monitor, it may happen that some + files need to be indexed, but change so often that they impose an + excessive load for the system. + + &RCL; provides a configuration option to specify the minimum + time before which a file, specified by a wildcard pattern, cannot be + reindexed. See the mondelaypatterns parameter in + the + configuration section. + + + + + + + + Searching + + + Searching with the Qt graphical user interface + + The recoll program provides the main user + interface for searching. It is based on the + Qt library. + + recoll has two search modes: + + Simple search (the default, on the main screen) has + a single entry field where you can enter multiple words. + + Advanced search (a panel accessed through the + Tools menu or the toolbox bar icon) has + multiple entry fields, which you may use to build a logical + condition, with additional filtering on file type, location + in the file system, modification date, and size. + + + + In most cases, you can enter the terms as you + think them, even if they contain embedded punctuation or other + non-textual characters. For + example, &RCL; can handle things like email addresses, or + arbitrary cut and paste from another text window, punctation + and all. + + The main case where you should enter text differently from + how it is printed is for east-asian languages (Chinese, + Japanese, Korean). Words composed of single or multiple + characters should be entered separated by white space in this + case (they would typically be printed without white + space). + + Some searches can be quite complex, and you may want to + re-use them later, perhaps with some tweaking. &RCL; versions + 1.21 and later can save and restore searches, using XML files. See + Saving and restoring + queries. + + + Simple search + + + Start the recoll program. + + Possibly choose a search mode: Any + term, All terms, + File name or + Query language. + + Enter search term(s) in the text field at the top of the + window. + + Click the Search button or + hit the Enter key to start the search. + + + + The initial default search mode is Query + language. Without special directives, this will look for + documents containing all of the search terms (the ones with more + terms will get better scores), just like the All + terms mode which will ignore such + directives. Any term will search for documents + where at least one of the terms appear. + + The Query Language features are + described in a separate + section. + + All search modes allow wildcards inside terms + (*, ?, + []). You may want to have a look at the + section about wildcards + for more information about this. + + File name will specifically look for file + names. The point of having a separate file name + search is that wild card expansion can be performed more + efficiently on a small subset of the index (allowing + wild cards on the left of terms without excessive penality). + Things to know: + + White space in the entry should match white + space in the file name, and is not treated specially. + + The search is insensitive to character case and + accents, independantly of the type of index. + + An entry without any wild card + character and not capitalized will be prepended and appended + with '*' (ie: etc -> + *etc*, but + Etc -> + etc). + + If you have a big index (many files), + excessively generic fragments may result in inefficient + searches. + + + + + You can search for exact phrases (adjacent words in a + given order) by enclosing the input inside double quotes. Ex: + "virtual reality". + + When using a stripped index, character case has no influence on + search, except that you can disable stem expansion for any term by + capitalizing it. Ie: a search for floor will also + normally look for flooring, + floored, etc., but a search for + Floor will only look for floor, + in any character case. Stemming can also be disabled globally in the + preferences. When using a raw index, the rules are a bit more + complicated. + + &RCL; remembers the last few searches that you + performed. You can use the simple search text entry widget (a + combobox) to recall them (click on the thing at the right of the + text field). Please note, however, that only the search texts + are remembered, not the mode (all/any/file name). + + Typing Esc Space while + entering a word in the simple search entry will open a window + with possible completions for the word. The completions are + extracted from the database. + + Double-clicking on a word in the result list or a preview + window will insert it into the simple search entry field. + + You can cut and paste any text into an All + terms or Any term search field, + punctuation, newlines and all - except for wildcard characters + (single ? characters are ok). &RCL; will process + it and produce a meaningful search. This is what most differentiates + this mode from the Query Language mode, where + you have to care about the syntax. + + You can use the + + Tools + Advanced search + + dialog for more complex searches. + + + + + The default result list + + After starting a search, a list of results will instantly + be displayed in the main list window. + + By default, the document list is presented in order of + relevance (how well the system estimates that the document + matches the query). You can sort the result by ascending or + descending date by using the vertical arrows in the toolbar. + + Clicking on the + Preview link for an entry will open an + internal preview window for the document. Further + Preview clicks for the same search will open + tabs in the existing preview window. You can use + Shift+Click to force the creation of another + preview window, which may be useful to view the documents side + by side. (You can also browse successive results in a single + preview window by typing + Shift+ArrowUp/Down in the + window). + + Clicking the Open link will + start an external viewer for the document. By default, &RCL; lets + the desktop choose the appropriate application for most document + types (there is a short list of exceptions, see further). If you + prefer to completely customize the choice of applications, you can + uncheck the Use desktop preferences option in + the GUI preferences dialog, and click the Choose editor + applications button to adjust the predefined &RCL; + choices. The tool accepts multiple selections of MIME types (e.g. to + set up the editor for the dozens of office file types). + + Even when Use desktop preferences is + checked, there is a small list of exceptions, for MIME types where + the &RCL; choice should override the desktop one. These are + applications which are well integrated with &RCL;, especially + evince for viewing PDF and Postscript + files because of its support for opening the document at a specific + page and passing a search string as an argument. Of course, you can + edit the list (in the GUI preferences) if you would prefer to lose + the functionality and use the standard desktop tool. + + You may also change the choice of applications by editing the + + mimeview configuration file if you find + this more convenient. + + Each result entry also has a right-click menu with an + Open With entry. This lets you choose an + application from the list of those which registered with the desktop + for the document MIME type. + + The Preview and Open + edit links may not be present for all entries, meaning that + &RCL; has no configured way to preview a given file type (which + was indexed by name only), or no configured external editor for + the file type. This can sometimes be adjusted simply by tweaking + the + mimemap and + + mimeview configuration files (the latter + can be modified with the user preferences dialog). + + The format of the result list entries is entirely + configurable by using the preference dialog to + edit an HTML + fragment. + + You can click on the Query details link + at the top of the results page to see the query actually + performed, after stem expansion and other processing. + + Double-clicking on any word inside the result list or a + preview window will insert it into the simple search text. + + The result list is divided into pages (the size of which + you can change in the preferences). Use the arrow buttons in the + toolbar or the links at the bottom of the page to browse the + results. + + + No results: the spelling suggestions + + When a search yields no result, and if the + aspell dictionary is configured, &RCL; + will try to check for misspellings among the query terms, and + will propose lists of replacements. Clicking on one of the + suggestions will replace the word and restart the search. You can + hold any of the modifier keys (Ctrl, Shift, etc.) while clicking + if you would rather stay on the suggestion screen because several + terms need replacement. + + + + + + The result list right-click menu + + Apart from the preview and edit links, you can display a + pop-up menu by right-clicking over a paragraph in the result + list. This menu has the following entries: + + + Preview + Open + Open With + Run Script + Copy File Name + Copy Url + Save to File + Find similar + Preview Parent + document + Open Parent + document + Open Snippets + Window + + + The Preview and + Open entries do the same thing as the + corresponding links. + + Open With lets you open the document + with one of the applications claiming to be able to handle its MIME + type (the information comes from the .desktop + files in + /usr/share/applications). + + Run Script allows starting an arbitrary + command on the result file. It will only appear for results which + are top-level files. See further for a more + detailed description. + + The Copy File Name and + Copy Url copy the relevant data to the + clipboard, for later pasting. + + Save to File allows saving the + contents of a result document to a chosen file. This entry + will only appear if the document does not correspond to an + existing file, but is a subdocument inside such a file (ie: an + email attachment). It is especially useful to extract attachments + with no associated editor. + + The Open/Preview Parent document entries + allow working with the higher level document (e.g. the email + message an attachment comes from). &RCL; is sometimes not totally + accurate as to what it can or can't do in this area. For example + the Parent entry will also appear for an + email which is part of an mbox folder file, but you can't actually + visualize the mbox (there will be an error dialog if you + try). + + If the document is a top-level file, Open + Parent will start the default file manager on the + enclosing filesystem directory. + + The Find similar entry will select + a number of relevant term from the current document and enter + them into the simple search field. You can then start a simple + search, with a good chance of finding documents related to the + current result. I can't remember a single instance where this + function was actually useful to me... + + The Open Snippets Window entry will only + appear for documents which support page breaks (typically + PDF, Postscript, DVI). The snippets window lists extracts from + the document, taken around search terms occurrences, along with the + corresponding page number, as links which can be used to start + the native viewer on the appropriate page. If the viewer supports + it, its search function will also be primed with one of the + search terms. + + + + + + + The result table + + In &RCL; 1.15 and newer, the results can be displayed in + spreadsheet-like fashion. You can switch to this presentation by + clicking the table-like icon in the toolbar (this is a toggle, + click again to restore the list). + + Clicking on the column headers will allow sorting by the + values in the column. You can click again to invert the order, and + use the header right-click menu to reset sorting to the default + relevance order (you can also use the sort-by-date arrows to do + this). + + Both the list and the table display the same underlying + results. The sort order set from the table is still active if you + switch back to the list mode. You can click twice on a date sort + arrow to reset it from there. + + The header right-click menu allows adding or deleting + columns. The columns can be resized, and their order can be changed + (by dragging). All the changes are recorded when you quit + recoll + + Hovering over a table row will update the detail area at the + bottom of the window with the corresponding values. You can click + the row to freeze the display. The bottom area is equivalent to a + result list paragraph, with links for starting a preview or a + native application, and an equivalent right-click menu. Typing + Esc (the Escape key) will unfreeze the + display. + + + + + Running arbitrary commands on result files (1.20 and later) + + Apart from the Open and Open + With operations, which allow starting an application on a + result document (or a temporary copy), based on its MIME type, it is + also possible to run arbitrary commands on results which are + top-level files, using the Run Script entry in + the results pop-up menu. + + The commands which will appear in the Run + Script submenu must be defined by + .desktop files inside the + scripts subdirectory of the current + configuration directory. + + Here follows an example of a .desktop file, + which could be named for example, + ~/.recoll/scripts/myscript.desktop (the exact + file name inside the directory is irrelevant): + +[Desktop Entry] +Type=Application +Name=MyFirstScript +Exec=/home/me/bin/tryscript %F +MimeType=*/* + + The Name attribute defines the label which will + appear inside the Run Script menu. The + Exec attribute defines the program to be run, + which does not need to actually be a script, of course. The + MimeType attribute is not used, but needs to exist. + + + The commands defined this way can also be used from links + inside the + result paragraph. + + As an example, it might make sense to write a script which + would move the document to the trash and purge it from the &RCL; + index. + + + + + Displaying thumbnails + + The default format for the result list entries and the + detail area of the result table display an icon for each result + document. The icon is either a generic one determined from the + MIME type, or a thumbnail of the document appearance. Thumbnails + are only displayed if found in the standard + freedesktop location, where they would + typically have been created by a file manager. + + Recoll has no capability to create thumbnails. A relatively + simple trick is to use the Open parent + document/folder entry in the result list popup + menu. This should open a file manager window on the containing + directory, which should in turn create the thumbnails (depending on + your settings). Restarting the search should then display the + thumbnails. + + There are also some + pointers about thumbnail generation on the &RCL; wiki. + + + + + + The preview window + + The preview window opens when you first click a + Preview link inside the result list. + + Subsequent preview requests for a given search open new + tabs in the existing window (except if you hold the + Shift key while clicking which will open a new + window for side by side viewing). + + Starting another search and requesting a preview will + create a new preview window. The old one stays open until you + close it. + + You can close a preview tab by typing Ctrl-W + (Ctrl + W) in the + window. Closing the last tab for a window will also close the + window. + + Of course you can also close a preview window by using the + window manager button in the top of the frame. + + You can display successive or previous documents from the + result list inside a preview tab by typing + Shift+Down or + Shift+Up (Down + and Up are the arrow keys). + + A right-click menu in the text area allows switching + between displaying the main text or the contents of fields + associated to the document (ie: author, abtract, etc.). This is + especially useful in cases where the term match did not occur in + the main text but in one of the fields. In the case of + images, you can switch between three displays: the image + itself, the image metadata as extracted + by exiftool and the fields, which is the + metadata stored in the index. + + + You can print the current preview window contents by typing + Ctrl-P (Ctrl + + P) in the window text. + + + + Searching inside the preview + + The preview window has an internal search capability, + mostly controlled by the panel at the bottom of the window, + which works in two modes: as a classical editor incremental + search, where we look for the text entered in the entry + zone, or as a way to walk the matches between the document + and the &RCL; query that found it. + + + + Incremental text search + The preview tabs have an internal incremental search + function. You initiate the search either by typing a + / (slash) or CTL-F + inside the text area or by clicking into + the Search for: text field and + entering the search string. You can then use the + Next + and Previous buttons + to find the next/previous occurrence. You can also type + F3 inside the text area to get to the next + occurrence. + If you have a search string entered and you use + Ctrl-Up/Ctrl-Down to browse the results, the search is + initiated for each successive document. If the string is + found, the cursor will be positioned at the first + occurrence of the search string. + + + + + Walking the match lists + If the entry area is empty when you click + the Next + or Previous buttons, the editor will + be scrolled to show the next match to any search term + (the next highlighted zone). If you select a search group + from the dropdown list and click Next + or Previous, the match list for this + group will be walked. This is not the same as a text + search, because the occurences will include non-exact + matches (as caused by stemming or wildcards). The search + will revert to the text mode as soon as you edit the + entry area. + + + + + + + + + + The Query Fragments window + + Selecting the Tools + Query Fragments menu + entry will open a window with radio- and check-buttons which + can be used to activate query language fragments for + filtering the current query. This can be useful if you have + frequent reusable selectors, for example, filtering on + alternate directories, or searching just one category of + files, not covered by the standard category + selectors. + + The contents of the window are entirely customizable, and + defined by the contents of the fragbuts.xml + file inside the configuration directory. The sample file + distributed with &RCL; (which you should be able to find under + /usr/share/recoll/examples/fragbuts.xml), + contains an example which filters the results from the WEB + history. + + Here follows an example: + +<?xml version="1.0" encoding="UTF-8"?> + +<fragbuts version="1.0"> + + <radiobuttons> + + <fragbut> + <label>Include Web Results</label> + <frag></frag> + </fragbut> + + <fragbut> + <label>Exclude Web Results</label> + <frag>-rclbes:BGL</frag> + </fragbut> + + <fragbut> + <label>Only Web Results</label> + <frag>rclbes:BGL</frag> + </fragbut> + + </radiobuttons> + + <buttons> + + <fragbut> + <label>Year 2010</label> + <frag>date:2010-01-01/2010-12-31</frag> + </fragbut> + + <fragbut> + <label>My Great Directory Only</label> + <frag>dir:/my/great/directory</frag> + </fragbut> + + </buttons> +</fragbuts> + + + + Each radiobuttons or + buttons section defines a line of + checkbuttons or radiobuttons inside the window. Any number of + buttons can be selected, but the radiobuttons in a line are + exclusive. + + Each fragbut section defines the label + for a button, and the Query Language fragment which will be + added (as an AND filter) before performing the query if the + button is active. + + This feature is new in &RCL; 1.20, and will probably be + refined depending on user feedback. + + + + + + Complex/advanced search + + The advanced search dialog helps you build more complex queries + without memorizing the search language constructs. It can be opened + through the Tools menu or through the main + toolbar. + + &RCL; keeps a history of searches. See + + Advanced search history. + + The dialog has two tabs: + + + + The first tab lets you specify terms to search + for, and permits specifying multiple clauses which are combined + to build the search. + + + The second tab lets filter the results according + to file size, date of modification, MIME type, or + location. + + + + + Click on the Start Search button in + the advanced search dialog, or type Enter in + any text field to start the search. The button in + the main window always performs a simple search. + + Click on the Show query details link at + the top of the result page to see the query expansion. + + + Avanced search: the "find" tab + + This part of the dialog lets you constructc a query by + combining multiple clauses of different types. Each entry + field is configurable for the following modes: + + + All terms. + + Any term. + + None of the terms. + + Phrase (exact terms in order within an + adjustable window). + + Proximity (terms in any order within an + adjustable window). + + Filename search. + + + + Additional entry fields can be created by clicking the + Add clause button. + + When searching, the non-empty clauses will be + combined either with an AND or an OR conjunction, depending on + the choice made on the left (All clauses or + Any clause). + + Entries of all types except "Phrase" and "Near" accept + a mix of single words and phrases enclosed in double quotes. + Stemming and wildcard expansion will be performed as for simple + search. + + Phrases and Proximity searches + These two clauses work in similar ways, with the + difference that proximity searches do not impose an order on the + words. In both cases, an adjustable number (slack) of non-matched words + may be accepted between the searched ones (use the counter on + the left to adjust this count). For phrases, the default count + is zero (exact match). For proximity it is ten (meaning that two search + terms, would be matched if found within a window of twelve + words). Examples: a phrase search for quick + fox with a slack of 0 will match quick + fox but not quick brown fox. With + a slack of 1 it will match the latter, but not fox + quick. A proximity search for quick + fox with the default slack will match the + latter, and also a fox is a cunning and quick + animal. + + + + + + Avanced search: the "filter" tab + + This part of the dialog has several sections which allow + filtering the results of a search according to a number of + criteria + + + + + The first section allows filtering by dates of last + modification. You can specify both a minimum and a maximum date. The + initial values are set according to the oldest and newest documents + found in the index. + + + + The next section allows filtering the results by + file size. There are two entries for minimum and maximum + size. Enter decimal numbers. You can use suffix multipliers: + k/K, m/M, + g/G, t/T for 1E3, 1E6, + 1E9, 1E12 respectively. + + + + The next section allows filtering the results by their MIME + types, or MIME categories (ie: media/text/message/etc.). + You can transfer the types between two boxes, to define + which will be included or excluded by the search. + The state of the file type selection can be saved as + the default (the file type filter will not be activated at + program start-up, but the lists will be in the restored + state). + + + + The bottom section allows restricting the search results to a + sub-tree of the indexed area. You can use the + Invert checkbox to search for files not in + the sub-tree instead. If you use directory filtering often and on + big subsets of the file system, you may think of setting up + multiple indexes instead, as the performance may be + better. + You can use relative/partial paths for filtering. Ie, + entering dirA/dirB would match either + /dir1/dirA/dirB/myfile1 or + /dir2/dirA/dirB/someother/myfile2. + + + + + + + + Avanced search history + + The advanced search tool memorizes the last 100 searches + performed. You can walk the saved searches by using the up and + down arrow keys while the keyboard focus belongs to the advanced + search dialog. + + The complex search history can be erased, along with the + one for simple search, by selecting the + File + Erase Search History + menu entry. + + + + + + + The term explorer tool + + &RCL; automatically manages the expansion of search terms + to their derivatives (ie: plural/singular, verb + inflections). But there are other cases where the exact search + term is not known. For example, you may not remember the exact + spelling, or only know the beginning of the name. + + The search will only propose replacement terms with + spelling variations when no matching document were found. In some + cases, both proper spellings and mispellings are present in the + index, and it may be interesting to look for them explicitely. + + The term explorer tool (started from the toolbar icon or + from the Term explorer entry of the + Tools menu) can be used to search the full index + terms list. It has three modes of operations: + + + + Wildcard + In this mode of operation, you can enter a + search string with shell-like wildcards (*, ?, []). ie: + xapi* would display all index terms + beginning with xapi. (More + about wildcards here). + + + + Regular expression + This mode will accept a regular expression + as input. Example: + word[0-9]+. The expression is + implicitely anchored at the beginning. Ie: + press will match + pression but not + expression. You can use + .*press to match the latter, + but be aware that this will cause a full index term list + scan, which can be quite long. + + + + + Stem expansion + This mode will perform the usual stem expansion + normally done as part user input processing. As such it is + probably mostly useful to demonstrate the process. + + + + + Spelling/Phonetic In this + mode, you enter the term as you think it is spelled, and + &RCL; will do its best to find index terms that sound like + your entry. This mode uses the + Aspell spelling application, + which must be installed on your system for things to work + (if your documents contain non-ascii characters, &RCL; + needs an aspell version newer than 0.60 for UTF-8 + support). The language which is used to build the + dictionary out of the index terms (which is done at the + end of an indexing pass) is the one defined by your NLS + environment. Weird things will probably happen if + languages are mixed up. + + + + Note that in cases where &RCL; does not know the beginning + of the string to search for (ie a wildcard expression like + *coll), the expansion can take quite + a long time because the full index term list will have to be + processed. The expansion is currently limited at 10000 results for + wildcards and regular expressions. It is possible to change the + limit in the configuration file. + + Double-clicking on a term in the result list will insert + it into the simple search entry field. You can also cut/paste + between the result list and any entry field (the end of lines + will be taken care of). + + + + + Multiple indexes + + See the section + describing the use of multiple indexes for + generalities. Only the aspects concerning + the recoll GUI are described here. + + A recoll program instance is always + associated with a specific index, which is the one to be updated + when requested from the File menu, but it can + use any number of &RCL; indexes for searching. The external + indexes can be selected through the external + indexes tab in the preferences dialog. + + Index selection is performed in two phases. A set of all + usable indexes must first be defined, and then the subset of + indexes to be used for searching. These parameters + are retained across program executions (there are kept + separately for each &RCL; configuration). The set of all indexes + is usually quite stable, while the active ones might typically + be adjusted quite frequently. + + The main index (defined by + RECOLL_CONFDIR) is always active. If this is + undesirable, you can set up your base configuration to index + an empty directory. + + When adding a new index to the set, you can select either + a &RCL; configuration directory, or directly a &XAP; index + directory. In the first case, the &XAP; index directory will + be obtained from the selected configuration. + + As building the set of all indexes can be a little tedious + when done through the user interface, you can use the + RECOLL_EXTRA_DBS environment + variable to provide an initial set. This might typically be + set up by a system administrator so that every user does not + have to do it. The variable should define a colon-separated list + of index directories, ie: + + export RECOLL_EXTRA_DBS=/some/place/xapiandb:/some/other/db + + Another environment variable, + RECOLL_ACTIVE_EXTRA_DBS allows adding to the active + list of indexes. This variable was suggested and implemented by a + &RCL; user. It is mostly useful if you use scripts to mount + external volumes with &RCL; indexes. By using + RECOLL_EXTRA_DBS and + RECOLL_ACTIVE_EXTRA_DBS, you can add and activate + the index for the mounted volume when starting + recoll. + + + RECOLL_ACTIVE_EXTRA_DBS is available for + &RCL; versions 1.17.2 and later. A change was made in the same + update so that recoll will + automatically deactivate unreachable indexes when starting + up. + + + + + Document history + + Documents that you actually view (with the internal preview + or an external tool) are entered into the document history, + which is remembered. + You can display the history list by using + the Tools/Doc History menu + entry. + You can erase the document history by using the + Erase document history entry in the + File menu. + + + + + Sorting search results and collapsing duplicates + + The documents in a result list are normally sorted in + order of relevance. It is possible to specify a different sort + order, either by using the vertical arrows in the GUI toolbox to + sort by date, or switching to the result table display and clicking + on any header. The sort order chosen inside the result table + remains active if you switch back to the result list, until you + click one of the vertical arrows, until both are unchecked (you are + back to sort by relevance). + + Sort parameters are remembered between program + invocations, but result sorting is normally always inactive + when the program starts. It is possible to keep the sorting + activation state between program invocations by checking the + Remember sort activation state option in + the preferences. + + It is also possible to hide duplicate entries inside + the result list (documents with the exact same contents as the + displayed one). The test of identity is based on an MD5 hash + of the document container, not only of the text contents (so + that ie, a text document with an image added will not be a + duplicate of the text only). Duplicates hiding is controlled + by an entry in the GUI configuration + dialog, and is off by default. + + As of release 1.19, when a result document does have + undisplayed duplicates, a Dups + link will be shown with the result list entry. Clicking the + link will display the paths (URLs + ipaths) for the duplicate + entries. + + + + + Search tips, shortcuts + + + Terms and search expansion + + Term completion + Typing Esc Space in + the simple search entry field while entering a word will + either complete the current word if its beginning matches a + unique term in the index, or open a window to propose a list + of completions. + + + Picking up new terms from result or preview + text + Double-clicking on a word in the result list or in a + preview window will copy it to the simple search entry field. + + + Wildcards + Wildcards can be used inside search terms in all forms + of searches. + More about wildcards. + + + + Automatic suffixes + Words like odt or ods + can be automatically turned into query language + ext:xxx clauses. This can be enabled in the + Search preferences panel in the GUI. + + + + Disabling stem expansion + Entering a capitalized word in any search field will prevent + stem expansion (no search for + gardening if you enter + Garden instead of + garden). This is the only case where + character case should make a difference for a &RCL; + search. You can also disable stem expansion or change the + stemming language in the preferences. + + + Finding related documents + Selecting the Find similar documents entry + in the result list paragraph right-click menu will select a + set of "interesting" terms from the current result, and insert + them into the simple search entry field. You can then possibly + edit the list and start a search to find documents which may + be apparented to the current result. + + + File names + File names are added as terms during indexing, and you can + specify them as ordinary terms in normal search fields (&RCL; used + to index all directories in the file path as terms. This has been + abandoned as it did not seem really useful). Alternatively, you + can use the specific file name search which will + only look for file names, and may be + faster than the generic search especially when using wildcards. + + + + + + + Working with phrases and proximity + + Phrases and Proximity searches + A phrase can be looked for by enclosing it in double + quotes. Example: "user manual" will look + only for occurrences of user immediately + followed by manual. You can use the + This phrase field of the advanced + search dialog to the same effect. Phrases can be entered along + simple terms in all simple or advanced search entry fields + (except This exact phrase). + + + AutoPhrases + This option can be set in the preferences dialog. If it is + set, a phrase will be automatically built and added to simple + searches when looking for Any terms. This + will not change radically the results, but will give a relevance + boost to the results where the search terms appear as a + phrase. Ie: searching for virtual reality + will still find all documents where either + virtual or reality or + both appear, but those which contain virtual + reality should appear sooner in the list. + + + Phrase searches can strongly slow down a query if most of the + terms in the phrase are common. This is why the + autophrase option is off by default for &RCL; + versions before 1.17. As of version 1.17, + autophrase is on by default, but very common + terms will be removed from the constructed phrase. The removal + threshold can be adjusted from the search preferences. + + Phrases and abbreviations As of + &RCL; version 1.17, dotted abbreviations like + I.B.M. are also automatically indexed as a word + without the dots: IBM. Searching for the word + inside a phrase (ie: "the IBM company") will only + match the dotted abrreviation if you increase the phrase slack (using the + advanced search panel control, or the o query + language modifier). Literal occurences of the word will be matched + normally. + + + + + + Others + + Using fields + You can use the query + language and field specifications + to only search certain parts of documents. This can be + especially helpful with email, for example only searching + emails from a specific originator: + search tips from:helpfulgui + + + + Ajusting the result table columns + When displaying results in table mode, you can use a + right click on the table headers to activate a pop-up menu + which will let you adjust what columns are displayed. You can + drag the column headers to adjust their order. You can click + them to sort by the field displayed in the column. You can + also save the result list in CSV format. + + + + Changing the GUI geometry + It is possible to configure the GUI in wide form + factor by dragging the toolbars to one of the sides (their + location is remembered between sessions), and moving the + category filters to a menu (can be set in the + + Preferences + GUI configuration + User interface + panel). + + + Query explanation + You can get an exact description of what the query + looked for, including stem expansion, and Boolean operators + used, by clicking on the result list header. + + + Advanced search history + As of &RCL; 1.18, you can display any of the last 100 complex + searches performed by using the up and down arrow keys while the + advanced search panel is active. + + + Browsing the result list inside a preview + window + Entering Shift-Down or Shift-Up + (Shift + an arrow key) in a preview window will + display the next or the previous document from the result + list. Any secondary search currently active will be executed on + the new document. + + + Scrolling the result list from the keyboard + You can use PageUp and PageDown + to scroll the result list, Shift+Home to go back + to the first page. These work even while the focus is in the + search entry. + + + Result table: moving the focus to the table + You can use Ctrl-r to move the focus + from the search entry to the table, and then use the arrow keys + to change the current row. Ctrl-Shift-s returns to + the search. + + + Result table: open / preview + With the focus in the result table, you can use + Ctrl-o to open the document from the current + row, Ctrl-Shift-o to open the document and close + recoll, Ctrl-d to preview + the document. + + + Editing a new search while the focus is not + in the search entry + You can use the Ctrl-Shift-S shortcut to + return the cursor to the search entry (and select the current + search text), while the focus is anywhere in the main + window. + + + Forced opening of a preview window + You can use Shift+Click on a result list + Preview link to force the creation of a + preview window instead of a new tab in the existing one. + + + Closing previews + Entering Ctrl-W in a tab will + close it (and, for the last tab, close the preview + window). Entering Esc will close the preview + window and all its tabs. + + + Printing previews + Entering Ctrl-P in a preview window will print + the currently displayed text. + + + Quitting + Entering Ctrl-Q almost anywhere will + close the application. + + + + + + Saving and restoring queries (1.21 and later) + + Both simple and advanced query dialogs save recent + history, but the amount is limited: old queries will eventually + be forgotten. Also, important queries may be difficult to find + among others. This is why both types of queries can also be + explicitely saved to files, from the GUI menus: + + File + Save last query / Load last query + + + + The default location for saved queries is a subdirectory + of the current configuration directory, but saved queries are + ordinary files and can be written or moved anywhere. + + Some of the saved query parameters are part of the + preferences (e.g. autophrase or the active + external indexes), and may differ when the query is + loaded from the time it was saved. In this case, &RCL; will warn + of the differences, but will not change the user + preferences. + + + + + Customizing the search interface + + You can customize some aspects of the search interface by using + the GUI configuration entry in the + Preferences menu. + + There are several tabs in the dialog, dealing with the + interface itself, the parameters used for searching and + returning results, and what indexes are searched. + + + + User interface parameters: + + + + Highlight color for query + terms: Terms from the user query are highlighted in + the result list samples and the preview window. The color can + be chosen here. Any Qt color string should work (ie + red, #ff0000). The + default is blue. + + + Style sheet: + The name of a Qt style sheet + text file which is applied to the whole Recoll application + on startup. The default value is empty, but there is a + skeleton style sheet (recoll.qss) + inside the /usr/share/recoll/examples + directory. Using a style sheet, you can change most + recoll graphical parameters: + colors, fonts, etc. See the sample file for a few + simple examples. + You should be aware that parameters (e.g.: the + background color) set inside the &RCL; GUI style sheet + will override global system preferences, with possible + strange side effects: for example if you set the + foreground to a light color and the background to a + dark one in the desktop preferences, but only the + background is set inside the &RCL; style sheet, and it + is light too, then text will appear light-on-light + inside the &RCL; GUI. + + + Maximum text size highlighted for + preview Inserting highlights on search term inside + the text before inserting it in the preview window involves + quite a lot of processing, and can be disabled over the given + text size to speed up loading. + + + Prefer HTML to plain text for + preview if set, Recoll will display HTML as such + inside the preview window. If this causes problems with the Qt + HTML display, you can uncheck it to display the plain text + version instead. + + + Plain text to HTML line style: + when displaying plain text inside the preview window, &RCL; + tries to preserve some of the original text line breaks and + indentation. It can either use PRE HTML tags, which will + well preserve the indentation but will force horizontal + scrolling for long lines, or use BR tags to break at the + original line breaks, which will let the editor introduce + other line breaks according to the window width, but will + lose some of the original indentation. The third option has + been available in recent releases and is probably now the best + one: use PRE tags with line wrapping. + + + Choose editor + applicationsr: this opens a dialog which allows you + to select the application to be used to open each MIME + type. The default is nornally to use the + xdg-open utility, but you can override it. + + + Exceptions: even wen + xdg-open is used by default for opening + documents, you can set exceptions for MIME types that will + still be opened according to &RCL; preferences. This is useful + for passing parameters like page numbers or search strings to + applications that support them + (e.g. evince). This cannot be done + with xdg-open which only supports passing + one parameter. + + + Document filter choice + style: this will let you choose if the document + categories are displayed as a list or a set of buttons, or a + menu. + + + Start with simple search + mode: this lets you choose the value of the simple + search type on program startup. Either a fixed value + (e.g. Query Language, or the value in use + when the program last exited. + + Auto-start simple search on white + space entry: if this is checked, a search will be + executed each time you enter a space in the simple search input + field. This lets you look at the result list as you enter new + terms. This is off by default, you may like it or not... + + + Start with advanced search dialog open + : If you use this dialog frequently, checking + the entries will get it to open when recoll starts. + + + Remember sort activation + state if set, Recoll will remember the sort tool + stat between invocations. It normally starts with sorting + disabled. + + + + + + + + + Result list parameters: + + + + Number of results in a result + page + + + Result list font: There is + quite a lot of information shown in the result list, and you + may want to customize the font and/or font size. The rest of + the fonts used by &RCL; are determined by your generic Qt + config (try the qtconfig command). + + + + Edit result list paragraph format string: + allows you to change the presentation of each result list + entry. See the + result list customisation section. + + + + Edit result page HTML header insert: + allows you to define text inserted at the end of the result + page HTML header. + More detail in the + result list customisation section. + + + + Date format: allows specifying the + format used for displaying dates inside the result list. This + should be specified as an strftime() string (man strftime). + + + + Abstract snippet separator: + for synthetic abstracts built from index data, which are + usually made of several snippets from different parts of the + document, this defines the snippet separator, an ellipsis by + default. + + + + + + + Search parameters: + + + + Hide duplicate results: + decides if result list entries are shown for identical + documents found in different places. + + + Stemming language: + stemming obviously depends on the document's language. This + listbox will let you chose among the stemming databases which + were built during indexing (this is set in the main configuration + file), or later added with recollindex + -s (See the recollindex manual). Stemming languages + which are dynamically added will be deleted at the next + indexing pass unless they are also added in the configuration + file. + + + Automatically add phrase to simple + searches: a phrase will be automatically built and + added to simple searches when looking for Any + terms. This will give a relevance boost to the + results where the search terms appear as a phrase (consecutive + and in order). + + + Autophrase term frequency threshold + percentage: very frequent terms should not be included + in automatic phrase searches for performance reasons. The + parameter defines the cutoff percentage (percentage of the + documents where the term appears). + + + Replace abstracts from + documents: this decides if we should synthesize and + display an abstract in place of an explicit abstract found + within the document itself. + + + Dynamically build + abstracts: this decides if &RCL; tries to build + document abstracts (lists of snippets) + when displaying the result list. Abstracts are constructed by + taking context from the document information, around the search + terms. + + + Synthetic abstract size: + adjust to taste... + + + Synthetic abstract context + words: how many words should be displayed around + each term occurrence. + + + Query language magic file name + suffixes: a list of words which automatically get + turned into ext:xxx file name suffix clauses + when starting a query language query (ie: doc xls + xlsx...). This will save some typing for people who + use file types a lot when querying. + + + + + + + External indexes: + This panel will let you browse for additional indexes + that you may want to search. External indexes are designated by + their database directory (ie: + /home/someothergui/.recoll/xapiandb, + /usr/local/recollglobal/xapiandb). + + + Once entered, the indexes will appear in the + External indexes list, and you can + chose which ones you want to use at any moment by checking or + unchecking their entries. + + Your main database (the one the current configuration + indexes to), is always implicitly active. If this is not + desirable, you can set up your configuration so that it indexes, + for example, an empty directory. An alternative indexer may also + need to implement a way of purging the index from stale data, + + + + The result list format + + Newer versions of Recoll (from 1.17) normally use WebKit HTML + widgets for the result list and the + + snippets window (this may be disabled at build time). + Total customisation is possible with full support for CSS and + Javascript. Conversely, there are limits to what you can do with + the older Qt QTextBrowser, but still, it is possible to decide + what data each result will contain, and how it will be + displayed. + + The result list presentation can be exhaustively customized + by adjusting two elements: + + + The paragraph format + HTML code inside the header section. For + versions 1.21 and later, this is also used for the + + snippets window + + The paragraph format and the header fragment can be edited + from the Result list tab of the + GUI configuration. + + + The header fragment is used both for the result list and + the snippets window. The snippets list is a table and has a + snippets class attribute. Each paragraph in + the result list is a table, with class + respar, but this can be changed by editing + the paragraph format. + + There are a few examples on the + page about + customising the result list on the &RCL; web site. + + + The paragraph format + + This is an arbitrary HTML string where the following printf-like + % substitutions will be performed: + + + + %AAbstract + + %DDate + + %IIcon image + name. This is normally determined from the MIME type. The + associations are defined inside the + + mimeconf configuration file. + If a thumbnail for the file is found at + the standard Freedesktop location, this will be displayed + instead. + + %KKeywords (if + any) + + %LPrecooked Preview, + Edit, and possibly Snippets links + + %MMIME + type + + %Nresult Number inside + the result page + + %PParent folder + Url. In the case of an embedded document, this is the parent folder + for the top level container file. + + %RRelevance + percentage + + %SSize + information + + %TTitle or Filename if + not set. + + %tTitle or Filename if + not set. + + %UUrl + + + + The format of the Preview, Edit, and Snippets links is + <a href="P%N">, + <a href="E%N"> + and + <a href="A%N"> + where docnum (%N) expands to the document + number inside the result page). + + A link target defined as "F%N" will open + the document corresponding to the %P parent + folder expansion, usually creating a file manager window on the + folder where the container file resides. E.g.: + <a href="F%N">%P</a> + + + A link target defined as + R%N|scriptname will + run the corresponding script on the result file (if the document is + embedded, the script will be started on the top-level parent). + See the section about + defining scripts. + + In addition to the predefined values above, all strings + like %(fieldname) will be replaced by the + value of the field named fieldname for this + document. Only stored fields can be accessed in this way, the + value of indexed but not stored fields is not known at this + point in the search process + (see field + configuration). There are currently very few fields + stored by default, apart from the values above + (only author + and filename), so this feature will need + some custom local configuration to be useful. An example + candidate would be the recipient field + which is generated by the message input handlers. + + The default value for the paragraph format string is: + \n" + "\n" + "\n" + "%L  %S   %T
\n" + "%M %D    %U %i
\n" + "%A %K\n" + "\n" +]]>
+ + You may, for example, try the following for a more web-like + experience: + + %T
+%A%U - %S - %L +]]>
+ + Note that the P%N link in the above paragraph makes the title a + preview link. Or the clean looking: + + %L %R +  %T&
%S  +%U + + +
%A
%K +]]>
+
+ + These samples, and some others are + on the web + site, with pictures to show how they look. + + It is also possible to + + define the value of the snippet separator inside the abstract + section. +
+
+
+ +
+ + + Searching with the KDE KIO slave + + + What's this + + The &RCL; KIO slave allows performing a &RCL; search + by entering an appropriate URL in a KDE open dialog, or with an + HTML-based interface displayed in + Konqueror. + + The HTML-based interface is similar to the Qt-based + interface, but slightly less powerful for now. Its advantage is + that you can perform your search while staying fully within the + KDE framework: drag and drop from the result list works normally + and you have your normal choice of applications for opening + files. + + The alternative interface uses a directory view of search + results. Due to limitations in the current KIO slave interface, + it is currently not obviously useful (to me). + + The interface is described in more detail inside a help + file which you can access by entering + recoll:/ inside the + konqueror URL line (this works only if the + recoll KIO slave has been previously installed). + + + The instructions for building this module are located in the + source tree. See: + kde/kio/recoll/00README.txt. Some Linux + distributions do package the kio-recoll module, so check before + diving into the build process, maybe it's already out there ready for + one-click installation. + + + + + Searchable documents + + As a sample application, the &RCL; KIO slave could allow + preparing a set of HTML documents (for example a manual) so that + they become their own search interface inside + konqueror. + + This can be done by either explicitly inserting + ]]> links + around some document areas, or automatically by adding a + very small javascript program to the + documents, like the following example, which would initiate a search by + double-clicking any term: + + <script language="JavaScript"> + function recollsearch() { + var t = document.getSelection(); + window.location.href = 'recoll://search/query?qtp=a&p=0&q=' + + encodeURIComponent(t); + } +</script> + .... +<body ondblclick="recollsearch()"> + + + + + + + + Searching on the command line + + There are several ways to obtain search results as a text + stream, without a graphical interface: + + By passing option to the + recoll program. + + By using the recollq program. + + By writing a custom + Python program, using the + Recoll Python API. + + + + The first two methods work in the same way and accept/need the same + arguments (except for the additional to + recoll). The query to be executed is specified + as command line arguments. + + recollq is not built by default. You can + use the Makefile in the + query directory to build it. This is a very + simple program, and if you can program a little c++, you may find it + useful to taylor its output format to your needs. Not that recollq is + only really useful on systems where the Qt libraries (or even the X11 + ones) are not available. Otherwise, just use recoll + -t, which takes the exact same parameters and options which + are described for recollq + + recollq has a man page (not installed by + default, look in the doc/man directory). The + Usage string is as follows: + +recollq: usage: + -P: Show the date span for all the documents present in the index + [-o|-a|-f] [-q] <query string> + Runs a recoll query and displays result lines. + Default: will interpret the argument(s) as a xesam query string + query may be like: + implicit AND, Exclusion, field spec: t1 -t2 title:t3 + OR has priority: t1 OR t2 t3 OR t4 means (t1 OR t2) AND (t3 OR t4) + Phrase: "t1 t2" (needs additional quoting on cmd line) + -o Emulate the GUI simple search in ANY TERM mode + -a Emulate the GUI simple search in ALL TERMS mode + -f Emulate the GUI simple search in filename mode + -q is just ignored (compatibility with the recoll GUI command line) +Common options: + -c <configdir> : specify config directory, overriding $RECOLL_CONFDIR + -d also dump file contents + -n [first-]<cnt> define the result slice. The default value for [first] + is 0. Without the option, the default max count is 2000. + Use n=0 for no limit + -b : basic. Just output urls, no mime types or titles + -Q : no result lines, just the processed query and result count + -m : dump the whole document meta[] array for each result + -A : output the document abstracts + -S fld : sort by field <fld> + -s stemlang : set stemming language to use (must exist in index...) + Use -s "" to turn off stem expansion + -D : sort descending + -i <dbdir> : additional index, several can be given + -e use url encoding (%xx) for urls + -F <field name list> : output exactly these fields for each result. + The field values are encoded in base64, output in one line and + separated by one space character. This is the recommended format + for use by other programs. Use a normal query with option -m to + see the field names. + + + Sample execution: +recollq 'ilur -nautique mime:text/html' +Recoll query: ((((ilur:(wqf=11) OR ilurs) AND_NOT (nautique:(wqf=11) + OR nautiques OR nautiqu OR nautiquement)) FILTER Ttext/html)) +4 results +text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/comptes.html] [comptes.html] 18593 bytes +text/html [file:///Users/uncrypted-dockes/projets/nautique/webnautique/articles/ilur1/index.html] [Constructio... +text/html [file:///Users/uncrypted-dockes/projets/pagepers/index.html] [psxtcl/writemime/recoll]... +text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/recu-chasse-maree.... + + + + + Using Synonyms (&RCL; 1.22 and later) + + There are a number of different uses for synonyms in text + search. They can be used at index time (either to increase or decrease + the number of indexed terms), or at query time, to reduce user terms to + a set of canonical ones, or to expand queries to match texts containing + synonyms of the user terms. + + Only the last approach is used in &RCL;. Synonym groups can be + defined so that a user query term which is found to be part of a + synonym group will be optionally expanded into an OR query for all + synonyms. + + What is it good for ? The synonyms function is probably not going + to help you find your letters to Mr. Smith. It is best used for + domain-specific searches. For example, it was initially suggested by a + user performing searches among historical documents: the synonyms file + would contains nicknames and aliases for each of the persons of + interest. + + In practise, synonym groups are defined inside ordinary text + files. Each line in the file defines a group. Example: + +hi hello "good morning" + +# not sure about "au revoir" though. Is this english ? +bye goodbye "see you" \ + "au revoir" + + As usual lines beginning with a # are comments, + empty lines are ignored, and lines can be continued by ending them with + a backslash. + + + The synonyms are searched for matches with user terms after these + are stem-expanded, but the contents of the synonyms file itself is not + subjected to stem expansion (1.22). This means that a match + will not be found if the form present in the synonyms file is not + present anywhere in the document set. + + Multi-word synonyms are supported, but be aware that these will + generate phrase queries, which may degrade performance (and also, no + stemming). + + A synonyms file can be specified in the GUI preferences, or as an + option to recollq. + + This feature is new in &RCL; 1.22 and will probably need to be + refined after some user feedback. + + + + + + Path translations + + In some cases, the document paths stored inside the index do + not match the actual ones, so that document + previews and accesses will fail. This can occur in a number of + circumstances: + + When using multiple indexes it is a relatively common + occurrence that some will actually reside on a remote volume, for + exemple mounted via NFS. In this case, the paths used to access + the documents on the local machine are not necessarily the same + than the ones used while indexing on the remote machine. For + example, /home/me may have been used as + a topdirs elements while indexing, but the + directory might be mounted + as /net/server/home/me on the local + machine. + + The case may also occur with removable + disks. It is perfectly possible to configure an index to + live with the documents on the removable disk, but it may + happen that the disk is not mounted at the same place so + that the documents paths from the index are + invalid. + + As a last exemple, one could imagine that a big + directory has been moved, but that it is currently + inconvenient to run the indexer. + + + &RCL; has a facility for rewriting access paths when + extracting the data from the index. The translations can be + defined for the main index and for any additional query + index. + + The path translation facility will be useful + whenever the documents paths seen by the indexer are not the same + as the ones which should be used at query time. + + In the above NFS example, &RCL; could be instructed to + rewrite any file:///home/me URL from the + index to file:///net/server/home/me, + allowing accesses from the client. + + The translations are defined in the + + ptrans configuration file, which + can be edited by hand or from the GUI external indexes + configuration dialog: + Preferences + External index dialog + , then click the Paths + translations button on the right below the index + list. + + Due to a current bug, the GUI must be restarted + after changing the ptrans values (even when they + were changed from the GUI). + + + + + + The query language + + The query language processor is activated in the GUI + simple search entry when the search mode selector is set to + Query Language. It can also be used with the KIO + slave or the command line search. It broadly has the same + capabilities as the complex search interface in the + GUI. + + The language is based on the (seemingly defunct) + + Xesam user search language specification. + + If the results of a query language search puzzle you and you + doubt what has been actually searched for, you can use the GUI + Show Query link at the top of the result list to + check the exact query which was finally executed by Xapian. + + Here follows a sample request that we are going to + explain: + + + author:"john doe" Beatles OR Lennon Live OR Unplugged -potatoes + + + This would search for all documents with + John Doe + appearing as a phrase in the author field (exactly what this is + would depend on the document type, ie: the + From: header, for an email message), + and containing either beatles or + lennon and either + live or + unplugged but not + potatoes (in any part of the document). + + An element is composed of an optional field specification, + and a value, separated by a colon (the field separator is the last + colon in the element). Examples: + Eugenie, + author:balzac, + dc:title:grandet + dc:title:"eugenie grandet" + + + The colon, if present, means "contains". Xesam defines other + relations, which are mostly unsupported for now (except in special + cases, described further down). + + All elements in the search entry are normally combined + with an implicit AND. It is possible to specify that elements be + OR'ed instead, as in Beatles + OR Lennon. The + OR must be entered literally (capitals), and + it has priority over the AND associations: + word1 + word2 OR + word3 + means + word1 AND + (word2 OR + word3) + not + (word1 AND + word2) OR + word3. + + With &RCL; versions 1.21 and later, you can use parentheses to + group elements, which will sometimes make things clearer, and may + allow expressing combinations which would have been difficult + otherwise. + + An element preceded by a - specifies a + term that should not appear. + + As usual, words inside quotes define a phrase + (the order of words is significant), so that + title:"prejudice pride" is not the same as + title:prejudice title:pride, and is + unlikely to find a result. + + Words inside phrases and capitalized words are not + stem-expanded. Wildcards may be used anywhere inside a term. + Specifying a wild-card on the left of a term can produce a very + slow search (or even an incorrect one if the expansion is + truncated because of excessive size). Also see + + More about wildcards. + + To save you some typing, recent &RCL; versions (1.20 and later) + interpret a comma-separated list of terms as an AND list inside the + field. Use slash characters ('/') for an OR list. No white space + is allowed. So + author:john,lennon will search for + documents with john and lennon + inside the author field (in any order), and + author:john/ringo would search for + john or ringo. + + Modifiers can be set on a double-quote value, for example to specify + a proximity search (unordered). See + the modifier + section. No space must separate the final + double-quote and the modifiers value, e.g. "two + one"po10 + + &RCL; currently manages the following default fields: + + + + title, + subject or caption are + synonyms which specify data to be searched for in the + document title or subject. + + + author or + from for searching the documents + originators. + + + recipient or + to for searching the documents + recipients. + + + keyword for searching the + document-specified keywords (few documents actually have + any). + + + filename for the document's + file name. This is not necessarily set for all documents: + internal documents contained inside a compound one (for example + an EPUB section) do not inherit the container file name any more, + this was replaced by an explicit field (see next). Sub-documents + can still have a specific filename, if it is + implied by the document format, for example the attachment file + name for an email attachment. + + containerfilename. This is + set for all documents, both top-level and contained + sub-documents, and is always the name of the filesystem directory + entry which contains the data. The terms from this field can + only be matched by an explicit field specification (as opposed + to terms from filename which are also indexed + as general document content). This avoids getting matches for + all the sub-documents when searching for the container file + name. + + ext specifies the file + name extension (Ex: ext:html) + + + + + &RCL; 1.20 and later have a way to specify aliases for the + field names, which will save typing, for example by aliasing + filename to fn or + containerfilename to + cfn. See the section about the + fields file + + The field syntax also supports a few field-like, but + special, criteria: + + + + dir for filtering the + results on file location + (Ex: dir:/home/me/somedir). + -dir + also works to find results not in the specified directory + (release >= 1.15.8). Tilde expansion will be performed as + usual (except for a bug in versions 1.19 to + 1.19.11p1). Wildcards will be expanded, but + please have a + look at an important limitation of wildcards in + path filters. + + Relative paths also make sense, for example, + dir:share/doc would match either + /usr/share/doc or + /usr/local/share/doc + + Several dir clauses can be specified, + both positive and negative. For example the following makes sense: + +dir:recoll dir:src -dir:utils -dir:common + This would select results which have both + recoll and src in the + path (in any order), and which have not either + utils or + common. + + You can also use OR conjunctions + with dir: clauses. + + A special aspect of dir clauses is + that the values in the index are not transcoded to UTF-8, and + never lower-cased or unaccented, but stored as binary. This means + that you need to enter the values in the exact lower or upper + case, and that searches for names with diacritics may sometimes + be impossible because of character set conversion + issues. Non-ASCII UNIX file paths are an unending source of + trouble and are best avoided. + + You need to use double-quotes around the path value if it + contains space characters. + + + + size for filtering the + results on file size. Example: + size<10000. You can use + <, > or + = as operators. You can specify a range like the + following: size>100 size<1000. The usual + k/K, m/M, g/G, t/T can be used as (decimal) + multipliers. Ex: size>1k to search for files + bigger than 1000 bytes. + + + date for searching or filtering + on dates. The syntax for the argument is based on the ISO8601 + standard for dates and time intervals. Only dates are supported, no + times. The general syntax is 2 elements separated by a + / character. Each element can be a date or a + period of time. Periods are specified as + PnYnMnD. + The n numbers are the respective numbers + of years, months or days, any of which may be missing. Dates are + specified as + YYYY-MM-DD. + The days and months parts may be missing. If the + / is present but an element is missing, the + missing element is interpreted as the lowest or highest date in the + index. Examples: + + + 2001-03-01/2002-05-01 the + basic syntax for an interval of dates. + + 2001-03-01/P1Y2M the + same specified with a period. + + 2001/ from the beginning of + 2001 to the latest date in the index. + + 2001 the whole year of + 2001 + P2D/ means 2 days ago up to + now if there are no documents with dates in the future. + + /2003 all documents from + 2003 or older. + + + Periods can also be specified with small letters (ie: + p2y). + + + mime or + format for specifying the + MIME type. These clauses are processed besides the normal + Boolean logic of the search. Multiple values will be OR'ed + (instead of the normal AND). You can specify types to be + excluded, with the usual -, and use + wildcards. Example: mime:text/* + -mime:text/plain + Specifying an explicit boolean + operator before a mime specification is not + supported and will produce strange results. + + + type or + rclcat for specifying the category (as in + text/media/presentation/etc.). The classification of MIME + types in categories is defined in the &RCL; configuration + (mimeconf), and can be modified or + extended. The default category names are those which permit + filtering results in the main GUI screen. Categories are OR'ed + like MIME types above, and can be negated with + -. + + + + + + mime is the only field with an + OR default. You do need to use + OR with ext terms for + example. + + The document input handlers used while indexing have the + possibility to create other fields with arbitrary names, and + aliases may be defined in the configuration, so that the exact + field search possibilities may be different for you if someone + took care of the customisation. + + + Modifiers + + Some characters are recognized as search modifiers when found + immediately after the closing double quote of a phrase, as in + "some term"modifierchars. The actual "phrase" + can be a single term of course. Supported modifiers: + + + l can be used to turn off + stemming (mostly makes sense with p because + stemming is off by default for phrases). + + + s can be used to turn off + synonym expansion, if a synonyms file is in place (only for + &RCL; 1.22 and later). + + + o can be used to specify a + "slack" for phrase and proximity searches: the number of + additional terms that may be found between the specified + ones. If o is followed by an integer number, + this is the slack, else the default is 10. + + + p can be used to turn the + default phrase search into a proximity one + (unordered). Example: "order any in"p + + + C will turn on case + sensitivity (if the index supports it). + + D will turn on diacritics + sensitivity (if the index supports it). + + A weight can be specified for a query element + by specifying a decimal value at the start of the + modifiers. Example: "Important"2.5. + + + + + + + + + + + + Search case and diacritics sensitivity + + For &RCL; versions 1.18 and later, and when working + with a raw index (not the default), searches can be + made sensitive + to character case and diacritics. How this happens is controlled by + configuration variables and what search data is entered. + + The general default is that searches are insensitive to case + and diacritics. An entry of resume will match any + of Resume, RESUME, + résumé, Résumé etc. + + Two configuration variables can automate switching on + sensitivity: + + + + + autodiacsensIf this is set, search + sensitivity to diacritics will be turned on as soon as an + accented character exists in a search term. When the variable + is set to true, resume will start a + diacritics-unsensitive search, but résumé + will be matched exactly. The default value is + false. + + + + autocasesensIf this is set, search + sensitivity to character case will be turned on as soon as an + upper-case character exists in a search term except + for the first one. When the variable is set to + true, us or Us will + start a diacritics-unsensitive search, but + US will be matched exactly. The default + value is true (contrary to + autodiacsens). + + + + + As in the past, capitalizing the first letter of a word will + turn off its stem expansion and have no effect on + case-sensitivity. + + You can also explicitely activate case and diacritics + sensitivity by using modifiers with the query + language. C will make the term case-sensitive, and + D will make it + diacritics-sensitive. Examples: + + "us"C + + + will search for the term us exactly + (Us will not be a match). + + + "resume"D + + will search for the term resume exactly + (résumé will not be a match). + + + When either case or diacritics sensitivity is activated, stem + expansion is turned off. Having both does not make much sense. + + + + + Anchored searches and wildcards + + Some special characters are interpreted by &RCL; in search + strings to expand or specialize the search. Wildcards expand a root + term in controlled ways. Anchor characters can restrict a search to + succeed only if the match is found at or near the beginning of the + document or one of its fields. + + + More about wildcards + + All words entered in &RCL; search fields will be processed + for wildcard expansion before the request is finally + executed. + + The wildcard characters are: + + + * which matches 0 or more + characters. + + ? which matches + a single character. + + [] which allow + defining sets of characters to be matched (ex: + [abc] + matches a single character which may be 'a' or 'b' or 'c', + [0-9] + matches any number. + + + + You should be aware of a few things when using + wildcards. + + + Using a wildcard character at the beginning of + a word can make for a slow search because &RCL; will have to + scan the whole index term list to find the + matches. However, this is much less a problem for field + searches, and queries + like author:*@domain.com can + sometimes be very useful. + + For &RCL; version 18 only, when working with a + raw index (preserving character case and diacritics), the + literal part of a wildcard expression will be matched + exactly for case and diacritics. This is not true any + more for versions 19 and later. + + Using a * at the end of a + word can produce more matches than you would think, and + strange search results. You can use the + term + explorer tool to check what completions exist for + a given term. You can also see exactly what search was + performed by clicking on the link at the top of the result + list. In general, for natural language terms, stem + expansion will produce better results than an + ending * (stem expansion is turned off + when any wildcard character appears in the + term). + + + + Wildcards and path filtering + + Due to the way that &RCL; processes wildcards + inside dir path filtering clauses, they + will have a multiplicative effect on the query size. A clause + containg wildcards in several paths elements, like, for + example, + dir:/home/me/*/*/docdir, + will almost certainly fail if your indexed tree is of any realistic + size. + + Depending on the case, you may be able to work around + the issue by specifying the paths elements more narrowly, with + a constant prefix, or by using 2 + separate dir: clauses instead of multiple + wildcards, as + in dir:/home/me dir:docdir. The + latter query is not equivalent to the initial one because it + does not specify a number of directory levels, but that's + the best we can do (and it may be actually more useful in + some cases). + + + + + + + Anchored searches + + Two characters are used to specify that a search hit should + occur at the beginning or at the end of the + text. ^ at the beginning of a term or phrase + constrains the search to happen at the start, $ + at the end force it to happen at the end. + + As this function is implemented as a phrase search it is + possible to specify a maximum distance at which the hit should + occur, either through the controls of the advanced search panel, or + using the query language, for example, as in: + "^someterm"o10 which would force + someterm to be found within 10 terms of the + start of the text. This can be combined with a field search as in + somefield:"^someterm"o10 or + somefield:someterm$. + + This feature can also be used with an actual phrase search, + but in this case, the distance applies to the whole phrase and + anchor, so that, for example, bla bla my unexpected + term at the beginning of the text would be a match for + "^my term"o5. + + Anchored searches can be very useful for searches inside + somewhat structured documents like scientific articles, in case + explicit metadata has not been supplied (a most frequent case), for + example for looking for matches inside the abstract or the list of + authors (which occur at the top of the document). + + + + + + + + Desktop integration + + Being independant of the desktop type has its drawbacks: &RCL; + desktop integration is minimal. However there are a few tools + available: + + + The KDE KIO Slave was + described in a previous + section. + + + If you use a recent version of Ubuntu Linux, you may + find the Ubuntu Unity + Lens module useful. + + + There is also an independantly developed + + Krunner plugin. + + + + + Here follow a few other things that may help. + + + Hotkeying recoll + + It is surprisingly convenient to be able to show or hide the + &RCL; GUI with a single keystroke. Recoll comes with a small + Python script, based on the libwnck window + manager interface library, which will allow you to do just + this. The detailed instructions are on + this wiki page. + + + + + The KDE Kicker Recoll applet + + This is probably obsolete now. Anyway: + The &RCL; source tree contains the source code to the + recoll_applet, a small application derived + from the find_applet. This can be used to + add a small &RCL; launcher to the KDE panel. + + The applet is not automatically built with the main &RCL; + programs, nor is it included with the main source distribution + (because the KDE build boilerplate makes it relatively big). You can + download its source from the recoll.org download page. Use the + omnipotent configure;make;make install + incantation to build and install. + + You can then add the applet to the panel by right-clicking the + panel and choosing the Add applet entry. + + The recoll_applet has a small text + window where you can type a &RCL; query (in query language form), + and an icon which can be used to restrict the search to certain + types of files. It is quite primitive, and launches a new recoll + GUI instance every time (even if it is already running). You may + find it useful anyway. + + + + + +
+ + + + Programming interface + + &RCL; has an Application Programming Interface, usable both + for indexing and searching, currently accessible from the + Python language. + + Another less radical way to extend the application is to + write input handlers for new types of documents. + + The processing of metadata attributes for documents + (fields) is highly configurable. + + + + + Writing a document input handler + + TerminologyThe small programs or pieces + of code which handle the processing of the different document + types for &RCL; used to be called filters, + which is still reflected in the name of the directory which + holds them and many configuration variables. They were named + this way because one of their primary functions is to filter + out the formatting directives and keep the text + content. However these modules may have other behaviours, and + the term input handler is now progressively + substituted in the documentation. filter is + still used in many places though. + + &RCL; input handlers cooperate to translate from the multitude + of input document formats, simple ones + as opendocument, + acrobat), or compound ones such + as Zip + or Email, into the final &RCL; + indexing input format, which is plain text. + Most input handlers are executable + programs or scripts. A few handlers are coded in C++ and live + inside recollindex. This latter kind will not + be described here. + + There are currently (1.18 and since 1.13) two kinds of + external executable input handlers: + + Simple exec handlers + run once and exit. They can be bare programs like + antiword, or scripts using other + programs. They are very simple to write, because they just + need to print the converted document to the standard + output. Their output can be plain text or HTML. HTML is + usually preferred because it can store metadata fields and + it allows preserving some of the formatting for the GUI + preview. + + Multiple execm handlers + can process multiple files (sparing the process startup + time which can be very significant), or multiple documents + per file (e.g.: for zip or + chm files). They communicate + with the indexer through a simple protocol, but are + nevertheless a bit more complicated than the older + kind. Most of new handlers are written in + Python, using a common module + to handle the protocol. There is an exception, + rclimg which is written in Perl. The + subdocuments output by these handlers can be directly + indexable (text or HTML), or they can be other simple or + compound documents that will need to be processed by + another handler. + + + + + In both cases, handlers deal with regular file system + files, and can process either a single document, or a + linear list of documents in each file. &RCL; is responsible + for performing up to date checks, deal with more complex + embedding and other upper level issues. + + A simple handler returning a + document in text/plain format, can transfer + no metadata to the indexer. Generic metadata, like document + size or modification date, will be gathered and stored by + the indexer. + + Handlers that produce text/html + format can return an arbitrary amount of metadata inside HTML + meta tags. These will be processed + according to the directives found in + the + fields configuration + file. + + The handlers that can handle multiple documents per file + return a single piece of data to identify each document inside + the file. This piece of data, called + an ipath element will be sent back by + &RCL; to extract the document at query time, for previewing, + or for creating a temporary file to be opened by a + viewer. + + The following section describes the simple + handlers, and the next one gives a few explanations about + the execm ones. You could conceivably + write a simple handler with only the elements in the + manual. This will not be the case for the other ones, for + which you will have to look at the code. + + + Simple input handlers + + &RCL; simple handlers are usually shell-scripts, but this is in + no way necessary. Extracting the text from the native format is the + difficult part. Outputting the format expected by &RCL; is + trivial. Happily enough, most document formats have translators or + text extractors which can be called from the handler. In some cases + the output of the translating program is completely appropriate, + and no intermediate shell-script is needed. + + Input handlers are called with a single argument which is the + source file name. They should output the result to stdout. + + When writing a handler, you should decide if it will output + plain text or HTML. Plain text is simpler, but you will not be able + to add metadata or vary the output character encoding (this will be + defined in a configuration file). Additionally, some formatting may + be easier to preserve when previewing HTML. Actually the deciding factor + is metadata: &RCL; has a way to + extract metadata from the HTML header and use it for field + searches.. + + The RECOLL_FILTER_FORPREVIEW environment + variable (values yes, no) + tells the handler if the operation is for indexing or + previewing. Some handlers use this to output a slightly different + format, for example stripping uninteresting repeated keywords (ie: + Subject: for email) when indexing. This is not + essential. + + You should look at one of the simple handlers, for example + rclps for a starting point. + + Don't forget to make your handler executable before + testing ! + + + + + "Multiple" handlers + + If you can program and want to write + an execm handler, it should not be too + difficult to make sense of one of the existing modules. For + example, look at rclzip which uses Zip + file paths as identifiers (ipath), + and rclics, which uses an integer + index. Also have a look at the comments inside + the internfile/mh_execm.h file and + possibly at the corresponding module. + + execm handlers sometimes need to make + a choice for the nature of the ipath + elements that they use in communication with the + indexer. Here are a few guidelines: + + Use ASCII or UTF-8 (if the identifier is an + integer print it, for example, like printf %d would + do). + If at all possible, the data should make some + kind of sense when printed to a log file to help with + debugging. + &RCL; uses a colon (:) as a + separator to store a complex path internally (for + deeper embedding). Colons inside + the ipath elements output by a + handler will be escaped, but would be a bad choice as a + handler-specific separator (mostly, again, for + debugging issues). + + In any case, the main goal is that it should + be easy for the handler to extract the target document, given + the file name and the ipath + element. + + execm handlers will also produce + a document with a null ipath + element. Depending on the type of document, this may have + some associated data (e.g. the body of an email message), or + none (typical for an archive file). If it is empty, this + document will be useful anyway for some operations, as the + parent of the actual data documents. + + + + Telling &RCL; about the handler + + There are two elements that link a file to the handler which + should process it: the association of file to MIME type and the + association of a MIME type with a handler. + + The association of files to MIME types is mostly based on + name suffixes. The types are defined inside the + + mimemap file. Example: + + +.doc = application/msword + + If no suffix association is found for the file name, &RCL; will try + to execute the file -i command to determine a + MIME type. + + The association of file types to handlers is performed in + the + mimeconf file. A sample will probably be + of better help than a long explanation: + + +[index] +application/msword = exec antiword -t -i 1 -m UTF-8;\ + mimetype = text/plain ; charset=utf-8 + +application/ogg = exec rclogg + +text/rtf = exec unrtf --nopict --html; charset=iso-8859-1; mimetype=text/html + +application/x-chm = execm rclchm + + + The fragment specifies that: + + + application/msword files + are processed by executing the antiword + program, which outputs + text/plain encoded in + utf-8. + + + application/ogg files are + processed by the rclogg script, with + default output type (text/html, with + encoding specified in the header, or utf-8 + by default). + + + text/rtf is processed by + unrtf, which outputs + text/html. The + iso-8859-1 encoding is specified because it + is not the utf-8 default, and not output by + unrtf in the HTML header section. + + application/x-chm is processed + by a persistant handler. This is determined by the + execm keyword. + + + + + + + + Input handler HTML output + + The output HTML could be very minimal like the following + example: + +<html> + <head> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + </head> + <body> + Some text content + </body> +</html> + + + + You should take care to escape some + characters inside the text by transforming them into + appropriate entities. At the very minimum, + "&" should be transformed into + "&amp;", "<" + should be transformed into + "&lt;". This is not always properly + done by translating programs which output HTML, and of + course never by those which output plain text. + + When encapsulating plain text in an HTML body, + the display of a preview may be improved by enclosing the + text inside <pre> tags. + + The character set needs to be specified in the + header. It does not need to be UTF-8 (&RCL; will take care + of translating it), but it must be accurate for good + results. + + &RCL; will process meta tags inside + the header as possible document fields candidates. Documents + fields can be processed by the indexer in different ways, + for searching or displaying inside query results. This is + described in a following + section. + + + By default, the indexer will process the standard header + fields if they are present: title, + meta/description, + and meta/keywords are both indexed and stored + for query-time display. + + A predefined non-standard meta tag + will also be processed by &RCL; without further + configuration: if a date tag is present + and has the right format, it will be used as the document + date (for display and sorting), in preference to the file + modification date. The date format should be as follows: + +<meta name="date" content="YYYY-mm-dd HH:MM:SS"> +or +<meta name="date" content="YYYY-mm-ddTHH:MM:SS"> + + Example: + +<meta name="date" content="2013-02-24 17:50:00"> + + + + Input handlers also have the possibility to "invent" field + names. This should also be output as meta tags: + + +<meta name="somefield" content="Some textual data" /> + + + You can embed HTML markup inside the content of custom + fields, for improving the display inside result lists. In this + case, add a (wildly non-standard) markup + attribute to tell &RCL; that the value is HTML and should not + be escaped for display. + + +<meta name="somefield" markup="html" content="Some <i>textual</i> data" /> + + + As written above, the processing of fields is described + in a further + section. + + + + + Page numbers + + The indexer will interpret ^L characters + in the handler output as indicating page breaks, and will record + them. At query time, this allows starting a viewer on the right + page for a hit or a snippet. Currently, only the PDF, Postscript + and DVI handlers generate page breaks. + + + + + + + Field data processing + + Fields are named pieces of information + in or about documents, like title, + author, abstract. + + The field values for documents can appear in several ways + during indexing: either output by input handlers + as meta fields in the HTML header section, or + extracted from file extended attributes, or added as attributes + of the Doc object when using the API, or + again synthetized internally by &RCL;. + + The &RCL; query language allows searching for text in a + specific field. + + &RCL; defines a number of default fields. Additional + ones can be output by handlers, and described in the + fields configuration file. + + Fields can be: + + + indexed, meaning that their + terms are separately stored in inverted lists (with a specific + prefix), and that a field-specific search is possible. + + + stored, meaning that their + value is recorded in the index data record for the document, + and can be returned and displayed with search results. + + + + + A field can be either or both indexed and stored. This and + other aspects of fields handling is defined inside the + fields configuration file. + + The sequence of events for field processing is as follows: + + During indexing, + recollindex scans all meta + fields in HTML documents (most document types are transformed + into HTML at some point). It compares the name for each element + to the configuration defining what should be done with fields + (the fields file) + + If the name for the meta + element matches one for a field that should be indexed, the + contents are processed and the terms are entered into the index + with the prefix defined in the fields + file. + + If the name for the meta element + matches one for a field that should be stored, the content of the + element is stored with the document data record, from which it + can be extracted and displayed at query time. + + At query time, if a field search is performed, the + index prefix is computed and the match is only performed against + appropriately prefixed terms in the index. + + At query time, the field can be displayed inside + the result list by using the appropriate directive in the + definition of the result list paragraph + format. All fields are displayed on the fields screen of + the preview window (which you can reach through the right-click + menu). This is independant of the fact that the search which + produced the results used the field or not. + + + + + You can find more information in the + section about the + fields file, or in comments inside the + file. + + You can also have a look at the + example on the Wiki, + detailing how one could add a page count field + to pdf documents for displaying inside result lists. + + + + + + API + + + Interface elements + + A few elements in the interface are specific and and need + an explanation. + + + + + udi An udi (unique document + identifier) identifies a document. Because of limitations + inside the index engine, it is restricted in length (to + 200 bytes), which is why a regular URI cannot be used. The + structure and contents of the udi is defined by the + application and opaque to the index engine. For example, + the internal file system indexer uses the complete + document path (file path + internal path), truncated to + length, the suppressed part being replaced by a hash + value. + + + + ipath + + This data value (set as a field in the Doc + object) is stored, along with the URL, but not indexed by + &RCL;. Its contents are not interpreted, and its use is up + to the application. For example, the &RCL; internal file + system indexer stores the part of the document access path + internal to the container file (ipath in + this case is a list of subdocument sequential numbers). url + and ipath are returned in every search result and permit + access to the original document. + + + + + Stored and indexed fields + + The fields file inside + the &RCL; configuration defines which document fields are + either "indexed" (searchable), "stored" (retrievable with + search results), or both. + + + + + + Data for an external indexer, should be stored in a + separate index, not the one for the &RCL; internal file system + indexer, except if the latter is not used at all). The reason + is that the main document indexer purge pass would remove all + the other indexer's documents, as they were not seen during + indexing. The main indexer documents would also probably be a + problem for the external indexer purge operation. + + + + + Python interface + + + Introduction + + &RCL; versions after 1.11 define a Python programming + interface, both for searching and indexing. The indexing + portion has seen little use, but the searching one is used + in the Recoll Ubuntu Unity Lens and Recoll Web UI. + + The API is inspired by the Python database API + specification. There were two major changes in recent &RCL; + versions: + + The basis for the &RCL; API changed from Python + database API version 1.0 (&RCL; versions up to 1.18.1), + to version 2.0 (&RCL; 1.18.2 and later). + The recoll module became a + package (with an internal recoll + module) as of &RCL; version 1.19, in order to add more + functions. For existing code, this only changes the way + the interface must be imported. + + + + We will mostly describe the new API and package + structure here. A paragraph at the end of this section will + explain a few differences and ways to write code + compatible with both versions. + + The Python interface can be found in the source package, + under python/recoll. + + The python/recoll/ directory + contains the usual setup.py. After + configuring the main &RCL; code, you can use the script to + build and install the Python module: + + cd recoll-xxx/python/recoll + python setup.py build + python setup.py install + + + + The normal &RCL; installer installs the Python + API along with the main code. + + When installing from a repository, and depending on the + distribution, the Python API can sometimes be found in a + separate package. + + + + + Recoll package + + The recoll package contains two + modules: + + The recoll module contains + functions and classes used to query (or update) the + index. + The rclextract module contains + functions and classes used to access document + data. + + + + + + The recoll module + + + Functions + + + + connect(confdir=None, extra_dbs=None, + writable = False) + + The connect() function connects to + one or several &RCL; index(es) and returns + a Db object. + + confdir may specify + a configuration directory. The usual defaults + apply. + extra_dbs is a list of + additional indexes (Xapian directories). + writable decides if + we can index new data through this + connection. + + This call initializes the recoll module, and it should + always be performed before any other call or object creation. + + + + + + + + + Classes + + + The Db class + + A Db object is created by + a connect() call and holds a + connection to a Recoll index. + + Methods + + Db.close() + Closes the connection. You can't do anything + with the Db object after + this. + + + Db.query(), Db.cursor() These + aliases return a blank Query object + for this index. + + + + Db.setAbstractParams(maxchars, + contextwords) Set the parameters used + to build snippets (sets of keywords in context text + fragments). maxchars defines the + maximum total size of the abstract. + contextwords defines how many + terms are shown around the keyword. + + + + Db.termMatch(match_type, expr, field='', + maxlen=-1, casesens=False, diacsens=False, lang='english') + + Expand an expression against the + index term list. Performs the basic function from the + GUI term explorer tool. match_type + can be either + of wildcard, regexp + or stem. Returns a list of terms + expanded from the input expression. + + + + + + + + + + The Query class + + A Query object (equivalent to a + cursor in the Python DB API) is created by + a Db.query() call. It is used to + execute index searches. + + + Methods + + + Query.sortby(fieldname, ascending=True) + Sort results + by fieldname, in ascending + or descending order. Must be called before executing + the search. + + + + Query.execute(query_string, stemming=1, + stemlang="english") + Starts a search + for query_string, a &RCL; + search language string. + + + + Query.executesd(SearchData) + Starts a search for the query defined by the + SearchData object. + + + + Query.fetchmany(size=query.arraysize) + + Fetches + the next Doc objects in the current + search results, and returns them as an array of the + required size, which is by default the value of + the arraysize data member. + + + + Query.fetchone() + Fetches the next Doc object + from the current search results. + + + + Query.close() + Closes the query. The object is unusable + after the call. + + + + Query.scroll(value, mode='relative') + Adjusts the position in the current result + set. mode can + be relative + or absolute. + + + + Query.getgroups() + Retrieves the expanded query terms as a list + of pairs. Meaningful only after executexx In each + pair, the first entry is a list of user terms (of size + one for simple terms, or more for group and phrase + clauses), the second a list of query terms as derived + from the user terms and used in the Xapian + Query. + + + + Query.getxquery() + Return the Xapian query description as a Unicode string. + Meaningful only after executexx. + + + + Query.highlight(text, ishtml = 0, methods = object) + Will insert <span "class=rclmatch">, + </span> tags around the match areas in the input text + and return the modified text. ishtml + can be set to indicate that the input text is HTML and + that HTML special characters should not be escaped. + methods if set should be an object + with methods startMatch(i) and endMatch() which will be + called for each match and should return a begin and end + tag + + + + Query.makedocabstract(doc, methods = object)) + Create a snippets abstract + for doc (a Doc + object) by selecting text around the match terms. + If methods is set, will also perform highlighting. See + the highlight method. + + + + + Query.__iter__() and Query.next() + So that things like for doc in + query: will work. + + + + + Data descriptors + + Query.arraysize Default + number of records processed by fetchmany (r/w). + + Query.rowcountNumber of + records returned by the last execute. + Query.rownumberNext index + to be fetched from results. Normally increments after + each fetchone() call, but can be set/reset before the + call to effect seeking (equivalent to + using scroll()). Starts at + 0. + + + + + + + + + The Doc class + + A Doc object contains index data + for a given document. The data is extracted from the + index when searching, or set by the indexer program when + updating. The Doc object has many attributes to be read or + set by its user. It matches exactly the Rcl::Doc C++ + object. Some of the attributes are predefined, but, + especially when indexing, others can be set, the name of + which will be processed as field names by the indexing + configuration. Inputs can be specified as Unicode or + strings. Outputs are Unicode objects. All dates are + specified as Unix timestamps, printed as strings. Please + refer to the rcldb/rcldoc.h C++ file + for a description of the predefined attributes. + + At query time, only the fields that are defined + as stored either by default or in + the fields configuration file will be + meaningful in the Doc + object. Especially this will not be the case for the + document text. See the rclextract + module for accessing document contents. + + + Methods + + + get(key), [] operator + Retrieve the named doc attribute + + getbinurl()Retrieve + the URL in byte array format (no transcoding), for use as + parameter to a system call. + + + items() + Return a dictionary of doc object + keys/values + + + keys() + list of doc object keys (attribute + names). + + + + + + + The SearchData class + + A SearchData object allows building + a query by combining clauses, for execution + by Query.executesd(). It can be used + in replacement of the query language approach. The + interface is going to change a little, so no detailed doc + for now... + + + Methods + + + addclause(type='and'|'or'|'excl'|'phrase'|'near'|'sub', + qstring=string, slack=0, field='', stemming=1, + subSearch=SearchData) + + + + + + + + + + + The rclextract module + + Index queries do not provide document content (only a + partial and unprecise reconstruction is performed to show the + snippets text). In order to access the actual document data, + the data extraction part of the indexing process + must be performed (subdocument access and format + translation). This is not trivial in + general. The rclextract module currently + provides a single class which can be used to access the data + content for result documents. + + + Classes + + + The Extractor class + + + Methods + + + Extractor(doc) + An Extractor object is + built from a Doc object, output + from a query. + + + Extractor.textextract(ipath) + Extract document defined + by ipath and return + a Doc object. The doc.text field + has the document text converted to either text/plain or + text/html according to doc.mimetype. The typical use + would be as follows: + +qdoc = query.fetchone() +extractor = recoll.Extractor(qdoc) +doc = extractor.textextract(qdoc.ipath) +# use doc.text, e.g. for previewing + + + + + Extractor.idoctofile(ipath, targetmtype, outfile='') + Extracts document into an output file, + which can be given explicitly or will be created as a + temporary file to be deleted by the caller. Typical use: + +qdoc = query.fetchone() +extractor = recoll.Extractor(qdoc) +filename = extractor.idoctofile(qdoc.ipath, qdoc.mimetype) + + + + + + + + + + + + + + Example code + + The following sample would query the index with a user + language string. See the python/samples + directory inside the &RCL; source for other + examples. The recollgui subdirectory + has a very embryonic GUI which demonstrates the + highlighting and data extraction functions. + + +#!/usr/bin/env python + 5: + nres = 5 +for i in range(nres): + doc = query.fetchone() + print "Result #%d" % (query.rownumber,) + for k in ("title", "size"): + print k, ":", getattr(doc, k).encode('utf-8') + abs = db.makeDocAbstract(doc, query).encode('utf-8') + print abs + print + +]]> + + + + + + Compatibility with the previous version + + The following code fragments can be used to ensure that + code can run with both the old and the new API (as long as it + does not use the new abilities of the new API of + course). + + Adapting to the new package structure: + + + + + Adapting to the change of nature of + the next Query + member. The same test can be used to choose to use + the scroll() method (new) or set + the next value (old). + + + + + + + + + + + + + Installation and configuration + + + Installing a binary copy + + + &RCL; binary copies are always distributed as regular + packages for your system. They can be obtained either through + the system's normal software distribution framework (e.g. + Debian/Ubuntu apt, + FreeBSD ports, etc.), or from some type + of "backports" repository providing versions newer than the standard + ones, or found on the &RCL; WEB site in some + cases. The most up-to-date information about Recoll packages can + usually be found on the + + Recoll WEB site downloads + page + + There used to exist another form of binary install, as + pre-compiled source trees, but these are just less convenient than + the packages and don't exist any more. + + The package management tools will usually automatically + deal with hard dependancies for packages obtained from a proper + package repository. You will have to deal with them by hand for + downloaded packages (for example, when dpkg + complains about missing dependancies). + + In all cases, you will have to check or install supporting applications + for the file types that you want to index beyond those that are + natively processed by &RCL; (text, HTML, email files, and a few + others). + + You should also maybe have a look at the + configuration section + (but this may not be necessary for a quick test with default + parameters). Most parameters can be more conveniently set from the + GUI interface. + + + + + Supporting packages + + The &WIN; installation of &RCL; is self-contained, and + only needs Python 2.7 to be externally installed. &WIN; users can + skip this section. + + &RCL; uses external applications to index some file + types. You need to install them for the file types that you wish to + have indexed (these are run-time optional dependencies. None is + needed for building or running &RCL; except for indexing their + specific file type). + + After an indexing pass, the commands that were found + missing can be displayed from the recoll + File menu. The list is stored in the + missing text file inside the configuration + directory. + + A list of common file types which need external + commands follows. Many of the handlers need the + iconv command, which is not always listed as a + dependancy. + + Please note that, due to the relatively dynamic nature of this + information, the most up to date version is now kept on &RCLAPPS; + along with links to the home pages or best source/patches pages, + and misc tips. The list below is not updated often and may be quite + stale. + + For many Linux distributions, most of the commands listed can + be installed from the package repositories. However, the packages + are sometimes outdated, or not the best version for &RCL;, so you + should take a look at &RCLAPPS; if a file + type is important to you. + + As of &RCL; release 1.14, a number of XML-based formats that + were handled by ad hoc handler code now use the + xsltproc command, which usually comes with + libxslt. These are: abiword, fb2 + (ebooks), kword, openoffice, svg. + + Now for the list: + + + Openoffice files need unzip and + xsltproc. + + PDF files need pdftotext + which is part of Poppler (usually + comes with the poppler-utils + package). Avoid the original one from + Xpdf. + + Postscript files need pstotext. + The original version has an issue with shell + character in file names, which is corrected in recent + packages. See &RCLAPPS; for more detail. + + + MS Word needs + antiword. It is also useful to have + wvWare installed as it may be + be used as a fallback for some files which + antiword does not handle. + + MS Excel and PowerPoint are processed by + internal Python handlers. + + MS Open XML (docx) needs + xsltproc. + + Wordperfect files need wpd2html + from the libwpd (or + libwpd-tools on Ubuntu) + package. + + RTF files need unrtf, + which, in its older versions, has much trouble with + non-western character sets. Many Linux distributions carry + outdated unrtf versions. Check + &RCLAPPS; for details. + + TeX files need untex or + detex. Check &RCLAPPS; for sources if it's not + packaged for your distribution. + + dvi files need dvips. + + + djvu files need djvutxt and + djvused from the + DjVuLibre package. + + Audio files: &RCL; releases 1.14 and later use + a single Python handler based + on mutagen for all audio file + types. + + + Pictures: &RCL; uses the + Exiftool + Perl package to extract tag + information. Most image file formats are supported. Note that + there may not be much interest in indexing the technical tags + (image size, aperture, etc.). This is only of interest if you + store personal tags or textual descriptions inside the image + files. + + chm: files in Microsoft help format need Python and + the pychm module (which needs + chmlib). + + ICS: up to &RCL; 1.13, iCalendar files need + Python + and the icalendar + module. icalendar is not needed for newer + versions, which use internal code. + + Zip archives need Python + (and the standard zipfile module). + + Rar archives need + Python, the + rarfile Python module and the + unrar utility. + + Midi karaoke files need + Python and the + + Midi module + + + Konqueror webarchive format with Python (uses the + Tarfile module). + + Mimehtml web archive format (support based on + the email handler, which introduces some mild weirdness, but + still usable). + + + + Text, HTML, email folders, and Scribus files are + processed internally. Lyx is used to + index Lyx files. Many handlers need iconv and the + standard sed and awk. + + + + + + + Building from source + + + Prerequisites + + If you can install any or all of the following through + the package manager for your system, all the + better. Especially Qt is a very + big piece of software, but you will most probably be able to + find a binary package. + + You may have to compile &XAP; but this is easy. + + The shopping list: + + + The autoconf, + automake and libtool + triad. Only autoconf is needed up to &RCL; + 1.21. + + C++ compiler. Up to &RCL; version 1.13.04, + its absence can manifest itself by strange messages + about a missing iconv_open. + + + bison command (for &RCL; 1.21 + and later). + + + xsltproc command. For building + the documentation (for &RCL; 1.21 + and later). This sometimes comes with the + libxslt package. And also the Docbook XML and + style sheet files. + + + + Development files + for Xapian + core. + + If you are + building Xapian for an older CPU (before Pentium 4 or Athlon + 64), you need to add the flag + to the configure command. Else all Xapian application will + crash with an illegal instruction + error. + + + + + Development files for + + Qt 4 . &RCL; has not been + tested with Qt 5 yet. &RCL; 1.15.9 + was the last version to support Qt 3. + If you do not want to install or build + the Qt Webkit module, &RCL; + has a configuration option to disable its use (see further). + + + + + Development files for X11 and + zlib. + + + + Development files for Python + (or use --disable-python-module). + + + + You may also need + + libiconv. On Linux + systems, the iconv interface is part of libc and you should not + need to do anything special. + + + + + Check the + &RCL; download page for up to date version + information. + + + + + Building + + &RCL; has been built on Linux, FreeBSD, Mac OS X, and Solaris, + most versions after 2005 should be ok, maybe some older ones too + (Solaris 8 is ok). If you build on another system, and + need to modify things, + I would + very much welcome patches. + + + Configure options: + + + + + will disable the code for phonetic matching of search + terms. + + or + will enable the code for + real time indexing. Inotify support is enabled by default on + recent Linux systems. + + will + enable sending Zeitgeist + events about the visited search results, and needs + the qzeitgeist + package. + + is available + from version 1.17 to implement the result list with a + Qt QTextBrowser instead of a + WebKit widget if you do not or can't depend on the + latter. + + is available + from version 1.19 to suppress multithreading inside the + indexing process. You can also use the run-time + configuration to restrict recollindex + to using a single thread, but the compile-time option + may disable a few more unused locks. This only applies + to the use of multithreading for the core index + processing (data input). The &RCL; monitor mode always + uses at least two threads of execution. + + will + avoid building the Python + module. + + will prevent + fetching data from file extended attributes. Beyond a + few standard attributes, fetching extended attributes + data can only be useful is some application stores data + in there, and also needs some simple configuration (see + comments in the fields configuration + file). + + will enable + splitting camelCase words. This + is not enabled by default as it has the unfortunate + side-effect of making some phrase searches quite + confusing: ie, "MySQL manual" would be + matched by "MySQL manual" and + "my sql manual" but not "mysql + manual" (only inside phrase searches). + + + Specify + the version of the 'file' command to use (ie: + --with-file-command=/usr/local/bin/file). Can be useful to + enable the gnu version on systems where the native one is + bad. + + Disable the Qt + interface. Will allow building the indexer and the command line + search program in absence of a Qt environment. + + + Disable + X11 connection monitoring + inside recollindex. Together with --disable-qtgui, this + allows building recoll without + Qt and + X11. + + + will avoid building the user manual. This avoids having to + install the Docbook XML/XSL files and the TeX toolchain used for + translating the manual to PDF. + + (&RCL; versions up + to 1.21 only) will compile + &RCL; with position-dependant code. This is incompatible with + building the KIO or the Python + or PHP extensions, but might + yield very marginally faster code. + + Of course the usual + autoconf configure + options, like apply. + + + + + + Normal procedure (for source extracted from a tar + distribution): + + cd recoll-xxx + ./configure + make + (practices usual hardship-repelling invocations) + + + When building from source cloned from the BitBucket repository, + you also need to install autoconf, + automake, and + libtool and you must execute sh + autogen.sh in the top source directory before running + configure. + + + Building on Solaris + + We did not test building the GUI on Solaris for recent + versions. You will need at least Qt 4.4. There are some hints + on an old + web site page, they may still be valid. + + Someone did test the 1.19 indexer and Python module build, + they do work, with a few minor glitches. Be sure to use + GNU make and install. + + + + + + Installation + + Either type make install or execute + recollinstall + prefix, in the root + of the source tree. This will copy the commands to + prefix/bin + and the sample configuration files, scripts and other shared + data to + prefix/share/recoll. + If the installation prefix given to + recollinstall is different from either the + system default or the value which was + specified when executing configure (as in + configure --prefix /some/path), you + will have to set the RECOLL_DATADIR + environment variable to indicate where the shared data is to + be found (ie for (ba)sh: + export RECOLL_DATADIR=/some/path/share/recoll). + + + You can then proceed to configuration. + + + + + + Configuration overview + + Most of the parameters specific to the + recoll GUI are set through the + Preferences menu and stored in the standard Qt + place ($HOME/.config/Recoll.org/recoll.conf). + You probably do not want to edit this by hand. + + &RCL; indexing options are set inside text configuration + files located in a configuration directory. There can be + several such directories, each of which defines the parameters + for one index. + + The configuration files can be edited by hand or through + the Index configuration dialog + (Preferences menu). The GUI tool will try + to respect your formatting and comments as much as possible, + so it is quite possible to use both approaches on the same + configuration. + + The most accurate documentation for the + configuration parameters is given by comments inside the default + files, and we will just give a general overview here. + + For each index, there are at least two sets of + configuration files. System-wide configuration files are kept + in a directory named + like /usr/share/recoll/examples, + and define default values, shared by all indexes. For each + index, a parallel set of files defines the customized + parameters. + + The default location of the customized configuration is the + .recoll + directory in your home. Most people will only use this + directory. + + This location can be changed, or others can be added with the + RECOLL_CONFDIR environment variable or the + option parameter to recoll and + recollindex. + + In addition (as of &RCL; version 1.19.7), it is possible + to specify two additional configuration directories which will + be stacked before and after the user configuration + directory. These are defined by + the RECOLL_CONFTOP + and RECOLL_CONFMID environment + variables. Values from configuration files inside the top + directory will override user ones, values from configuration + files inside the middle directory will override system ones + and be overriden by user ones. These two variables may be of + use to applications which augment &RCL; functionality, and + need to add configuration data without disturbing the user's + files. Please note that the two, currently single, values will + probably be interpreted as colon-separated lists in the + future: do not use colon characters inside the directory + paths. + + If the .recoll directory does not + exist when recoll or + recollindex are started, it will be created + with a set of empty configuration files. + recoll will give you a chance to edit the + configuration file before starting + indexing. recollindex will proceed + immediately. To avoid mistakes, the automatic directory + creation will only occur for the + default location, not if or + RECOLL_CONFDIR were used (in the latter + cases, you will have to create the directory). + + All configuration files share the same format. For + example, a short extract of the main configuration file might + look as follows: + + # Space-separated list of directories to index. + topdirs = ~/docs /usr/share/doc + + [~/somedirectory-with-utf8-txt-files] + defaultcharset = utf-8 + + + There are three kinds of lines: + + Comment (starts with + #) or empty. + + Parameter affectation (name = + value). + + Section definition + ([somedirname]). + + + + Long lines can be broken by ending each incomplete part with + a backslash (\). + + Depending on the type of configuration file, section + definitions either separate groups of parameters or allow + redefining some parameters for a directory sub-tree. They stay + in effect until another section definition, or the end of + file, is encountered. Some of the parameters used for indexing + are looked up hierarchically from the current directory + location upwards. Not all parameters can be meaningfully + redefined, this is specified for each in the next + section. + + When found at the beginning of a file path, the tilde + character (~) is expanded to the name of the user's home + directory, as a shell would do. + + Some parameters are lists of strings. White space is used for + separation. List elements with embedded spaces can be quoted using + double-quotes. Double quotes inside these elements can be escaped + with a backslash. + + No value inside a configuration file can contain a newline + character. Long lines can be continued by escaping the + physical newline with backslash, even inside quoted strings. + +astringlist = "some string \ +with spaces" +thesame = "some string with spaces" + + + Parameters which are not part of string lists can't be + quoted, and leading and trailing space characters are + stripped before the value is used. + + + Encoding issues + Most of the configuration parameters are plain ASCII. Two + particular sets of values may cause encoding issues: + + + + + + File path parameters may contain non-ascii + characters and should use the exact same byte values as found in + the file system directory. Usually, this means that the + configuration file should use the system default locale + encoding. + + The unac_except_trans parameter + should be encoded in UTF-8. If your system locale is not UTF-8, and + you need to also specify non-ascii file paths, this poses a + difficulty because common text editors cannot handle multiple + encodings in a single file. In this relatively unlikely case, you + can edit the configuration file as two separate text files with + appropriate encodings, and concatenate them to create the complete + configuration. + + + + + + Environment variables + + + + RECOLL_CONFDIR + Defines the main configuration + directory. + + + + RECOLL_TMPDIR, TMPDIR + Locations for temporary files, in this order + of priority. The default if none of these is set is to use + /tmp. Big temporary files may be created + during indexing, mostly for decompressing, and also for + processing, e.g. email attachments. + + + + RECOLL_CONFTOP, RECOLL_CONFMID + Allow adding configuration directories with + priorities below and above the user directory (see above the + Configuration overview section for details). + + + + RECOLL_EXTRA_DBS, + RECOLL_ACTIVE_EXTRA_DBS + + Help for setting up external indexes. See this paragraph for + explanations. + + + + + RECOLL_DATADIR + Defines replacement for the default location + of Recoll data files, normally found in, e.g., + /usr/share/recoll). + + + + RECOLL_FILTERSDIR + Defines replacement for the default location + of Recoll filters, normally found in, e.g., + /usr/share/recoll/filters). + + + + ASPELL_PROG + aspell program to use for + creating the spelling dictionary. The result has to be + compatible with the libaspell which &RCL; + is using. + + + + VARNAME + Blabla + + + + + + + + The main configuration file, recoll.conf + + recoll.conf is the main + configuration file. It defines things like + what to index (top directories and things to ignore), and the + default character set to use for document types which do not + specify it internally. + + The default configuration will index your home + directory. If this is not appropriate, start + recoll to create a blank + configuration, click Cancel, and edit + the configuration file before restarting the command. This + will start the initial indexing, which may take some time. + + Most of the following parameters can be changed from the + Index Configuration menu in the + recoll interface. Some can only be set by + editing the configuration file. + + + Parameters affecting what documents we index: + + + + + topdirs + Specifies the list of directories or files to + index (recursively for directories). You can use symbolic links + as elements of this list. See the + followLinks option about following symbolic links + found under the top elements (not followed by default). + + + + skippedNames + + A space-separated list of wilcard patterns for + names of files or directories that should be completely + ignored. The list defined in the default file is: + +skippedNames = #* bin CVS Cache cache* caughtspam tmp .thumbnails .svn \ + *~ .beagle .git .hg .bzr loop.ps .xsession-errors \ + .recoll* xapiandb recollrc recoll.conf + + The list can be redefined at any sub-directory in the + indexed area. + The top-level directories are not affected by this + list (that is, a directory in topdirs + might match and would still be indexed). + The list in the default configuration does not + exclude hidden directories (names beginning with a + dot), which means that it may index quite a few things + that you do not want. On the other hand, email user + agents like thunderbird + usually store messages in hidden directories, and you + probably want this indexed. One possible solution is to + have .* in + skippedNames, and add things like + ~/.thunderbird or + ~/.evolution in + topdirs. + + Not even the file names are indexed for patterns + in this list. See the + noContentSuffixes variable for an alternative + approach which indexes the file names. + + + + noContentSuffixes + This is a list of file name endings (not + wildcard expressions, nor dot-delimited suffixes). Only the + names of matching files will be indexed (no attempt at MIME + type identification, no decompression, no content + indexing). This can be redefined for + subdirectories, and edited from the GUI. The default value is: + +noContentSuffixes = .md5 .map \ + .o .lib .dll .a .sys .exe .com \ + .mpp .mpt .vsd \ + .img .img.gz .img.bz2 .img.xz .image .image.gz .image.bz2 .image.xz \ + .dat .bak .rdf .log.gz .log .db .msf .pid \ + ,v ~ # + + + + + skippedPaths and + daemSkippedPaths + + A space-separated list of patterns for + paths of files or directories that should be skipped. + There is no default in the sample configuration file, + but the code always adds the configuration and database + directories in there. + skippedPaths is used both by + batch and real time + indexing. daemSkippedPaths can be + used to specify things that should be indexed at + startup, but not monitored. + Example of use for skipping text files only in a + specific directory: + +skippedPaths = ~/somedir/*.txt + + + + + + skippedPathsFnmPathname + The values in the + *skippedPaths variables are matched by + default with fnmatch(3), with the + FNM_PATHNAME flag. This means that '/' + characters must be matched explicitely. You can set + skippedPathsFnmPathname to 0 to disable + the use of FNM_PATHNAME (meaning that /*/dir3 will match + /dir1/dir2/dir3). + + + + + + zipSkippedNames + A space-separated list of patterns for + names of files or directories that should be ignored + inside zip archives. This is used directly by the zip + handler, and has a function similar to skippedNames, but + works independantly. Can be redefined for filesystem + subdirectories. For versions up to 1.19, you will need + to update the Zip handler and install a supplementary + Python module. The details are + described on + the &RCL; wiki. + + + + + followLinks + Specifies if the indexer should follow + symbolic links while walking the file tree. The default is + to ignore symbolic links to avoid multiple indexing of + linked files. No effort is made to avoid duplication when + this option is set to true. This option can be set + individually for each of the topdirs + members by using sections. It can not be changed below the + topdirs level. + + + + indexedmimetypes + &RCL; normally indexes any file which it + knows how to read. This list lets you restrict the indexed + MIME types to what you specify. If the variable is + unspecified or the list empty (the default), all supported + types are processed. Can be redefined for subdirectories. + + + + excludedmimetypes + This list lets you exclude some MIME types from + indexing. Can be redefined for subdirectories. + + + + compressedfilemaxkbs + Size limit for compressed (.gz or .bz2) + files. These need to be decompressed in a temporary + directory for identification, which can be very wasteful + if 'uninteresting' big compressed files are present. + Negative means no limit, 0 means no processing of any + compressed file. Defaults to -1. + + + + textfilemaxmbs + Maximum size for text files. Very big text + files are often uninteresting logs. Set to -1 to disable + (default 20MB). + + + + textfilepagekbs + If set to other than -1, text files will be + indexed as multiple documents of the given page size. This may + be useful if you do want to index very big text files as it + will both reduce memory usage at index time and help with + loading data to the preview window. A size of a few megabytes + would seem reasonable (default: 1MB). + + + + membermaxkbs + This defines the maximum size in kilobytes for + an archive member (zip, tar or rar at the moment). Bigger + entries will be skipped. + + + + indexallfilenames + &RCL; indexes file names in a special + section of the database to allow specific file names + searches using wild cards. This parameter decides if + file name indexing is performed only for files with MIME + types that would qualify them for full text indexing, or + for all files inside the selected subtrees, independently of + MIME type. + + + + usesystemfilecommand + Decide if we execute a system command + (file by default) + as a final step for determining the MIME type for a file + (the main procedure uses suffix associations as defined in + the mimemap file). This can be useful + for files with suffix-less names, but it will also cause + the indexing of many bogus "text" files. + + + + systemfilecommand + Command to use for mime for mime type + determination if usesystefilecommand is + set. Recent versions of xdg-mime sometimes + work better than file. + + + + processwebqueue + If this is set, process the directory where + Web browser plugins copy visited pages for indexing. + + + + webqueuedir + The path to the web indexing queue. This is + hard-coded in the Firefox plugin as + ~/.recollweb/ToIndex so there should be no + need to change it. + + + + + + + + Parameters affecting how we generate terms: + + Changing some of these parameters will imply a full + reindex. Also, when using multiple indexes, it may not make sense + to search indexes that don't share the values for these parameters, + because they usually affect both search and index operations. + + + + indexStripChars + Decide if we strip characters of diacritics and + convert them to lower-case before terms are indexed. If we + don't, searches sensitive to case and diacritics can be + performed, but the index will be bigger, and some marginal + weirdness may sometimes occur. The default is a stripped + index (indexStripChars = 1) for + now. When using multiple indexes for a search, + this parameter must be defined identically for + all. Changing the value implies an index reset. + + + + maxTermExpand + Maximum expansion count for a single term (e.g.: + when using wildcards). The default of 10000 is reasonable and + will avoid queries that appear frozen while the engine is + walking the term list. + + + + maxXapianClauses + Maximum number of elementary clauses we can add + to a single Xapian query. In some cases, the result of term + expansion can be multiplicative, and we want to avoid using + excessive memory. The default of 100 000 should be both + high enough in most cases and compatible with current + typical hardware configurations. + + + + nonumbers + If this set to true, no terms will be generated + for numbers. For example "123", "1.5e6", 192.168.1.4, would not + be indexed ("value123" would still be). Numbers are often quite + interesting to search for, and this should probably not be set + except for special situations, ie, scientific documents with huge + amounts of numbers in them. This can only be set for a whole + index, not for a subtree. + + + + dehyphenate + Determines if, given an input of + co-worker, we add a term for + coworker. This possibility is new in version + 1.22, and on by default. Setting the variable to off allows + restoring the previous behaviour. + + + + nocjk + If this set to true, specific east asian + (Chinese Korean Japanese) characters/word splitting is + turned off. This will save a small amount of cpu if you + have no CJK documents. If your document base does include + such text but you are not interested in searching it, + setting nocjk may be a significant time + and space saver. + + + + cjkngramlen + This lets you adjust the size of n-grams + used for indexing CJK text. The default value of 2 is + probably appropriate in most cases. A value of 3 would + allow more precision and efficiency on longer words, but + the index will be approximately twice as large. + + + + indexstemminglanguages + A list of languages for which the stem + expansion databases will be built. See + recollindex + 1 or use the + recollindex command + for possible values. You can add a stem expansion database + for a different language by using + recollindex , but it + will be deleted during the next indexing. Only languages + listed in the configuration file are permanent. + + + + defaultcharset + The name of the character set used for + files that do not contain a character set definition (ie: + plain text files). This can be redefined for any + sub-directory. If it is not set at all, the character set + used is the one defined by the nls environment ( + LC_ALL, LC_CTYPE, + LANG), or iso8859-1 + if nothing is set. + + + + unac_except_trans + This is a list of characters, encoded in UTF-8, + which should be handled specially when converting text to + unaccented lowercase. For example, in Swedish, the letter + a with diaeresis has full alphabet + citizenship and should not be turned into an + a. Each element in the space-separated list + has the special character as first element and the translation + following. The handling of both the lowercase and upper-case + versions of a character should be specified, as appartenance to + the list will turn-off both standard accent and case + processing. Example for Swedish: + +unac_except_trans = åå Åå ää Ää öö Öö + + + Note that the translation is not limited to a single + character, you could very well have something like + üue in the list. + + The default value set for + unac_except_trans can't be listed here + because I have trouble with SGML and UTF-8, but it only + contains ligature decompositions: german ss, oe, ae, fi, + fl. + + This parameter can't be defined for subdirectories, it + is global, because there is no way to do otherwise when + querying. If you have document sets which would need different + values, you will have to index and query them separately. + + + + maildefcharset + This can be used to define the default + character set specifically for email messages which don't + specify it. This is mainly useful for readpst (libpst) dumps, + which are utf-8 but do not say so. + + + + localfields + This allows setting fields for all documents + under a given directory. Typical usage would be to set an + "rclaptg" field, to be used in mimeview to + select a specific viewer. If several fields are to be set, they + should be separated with a semi-colon (';') character, which there + is currently no way to escape. Also note the initial semi-colon. + Example: + localfields= ;rclaptg=gnus;other = val, then + select specifier viewer with + mimetype|tag=... in + mimeview. + + + + testmodifusemtime + If true, use mtime instead of default ctime to + determine if a file has been modified (in addition to + size, which is always used). Setting this can reduce + re-indexing on systems where extended attributes are + modified (by some other application), but not indexed + (changing extended attributes only affects + ctime). Notes: + + This may prevent detection of change + in some marginal file rename cases (the target would + need to have the same size and + mtime). + You should probably also set + noxattrfields to 1 in this case, except if you still + prefer to perform xattr indexing, for example if the + local file update pattern makes it of value (as in + general, there is a risk for pure extended attributes + updates without file modification to go + undetected). + + Perform a full index reset after changing the value of + this parameter. + + + + noxattrfields + Recoll versions 1.19 and later + automatically translate file extended attributes into + document fields (to be processed according to the + parameters from the fields + file). Setting this variable to 1 will disable the + behaviour. + + + + metadatacmds + This allows executing external commands + for each file and storing the output in &RCL; document + fields. This could be used for example to index + external tag data. The value is a list of field names + and commands, don't forget an initial + semi-colon. Example: + +[/some/area/of/the/fs] +metadatacmds = ; tags = tmsu tags %f; otherfield = somecmd -xx %f + + As a specially disgusting hack brought by + &RCL; 1.19.7, if a "field name" begins + with rclmulti, the data returned by + the command is expected to contain multiple field + values, in configuration file format. This allows + setting several fields by executing a single + command. Example: + +metadatacmds = ; rclmulti1 = somecmd %f + + If somecmd returns data in the form + of: + +field1 = value1 +field2 = value for field2 + + field1 + and field2 will be set inside the + document metadata. + + + + + + + + + + Parameters affecting where and how we store things: + + + dbdir + The name of the Xapian data directory. It + will be created if needed when the index is + initialized. If this is not an absolute path, it will be + interpreted relative to the configuration directory. The + value can have embedded spaces but starting or trailing + spaces will be trimmed. You cannot use quotes here. + + + + idxstatusfile + The name of the scratch file where the indexer + process updates its status. Default: + idxstatus.txt inside the configuration + directory. + + + + maxfsoccuppc + Maximum file system occupation before we + stop indexing. The value is a percentage, corresponding to + what the "Capacity" df output column shows. The default + value is 0, meaning no checking. + + + + mboxcachedir + The directory where mbox message offsets cache + files are held. This is normally $RECOLL_CONFDIR/mboxcache, but + it may be useful to share a directory between different + configurations. + + + + mboxcacheminmbs + The minimum mbox file size over which we + cache the offsets. There is really no sense in caching + offsets for small files. The default is 5 MB. + + + + webcachedir + This is only used by the web browser + plugin indexing code, and defines where the cache for visited + pages will live. Default: + $RECOLL_CONFDIR/webcache + + + + webcachemaxmbs + This is only used by the web browser + plugin indexing code, and defines the maximum size for the web + page cache. Default: 40 MB. Quite unfortunately, this is only + taken into account when creating the cache file. You need to + delete the file for a change to be taken into account. + + + + + idxflushmb + Threshold (megabytes of new text data) where we + flush from memory to disk index. Setting this can help control + memory usage. A value of 0 means no explicit flushing, letting + Xapian use its own default, which is flushing every 10000 (or + XAPIAN_FLUSH_THRESHOLD) documents, which gives little memory + usage control, as memory usage also depends on average document + size. The default value is 10, and it is probably a bit low. If + your system usually has free memory, you can try higher values + between 20 and 80. In my experience, values beyond 100 are + always counterproductive. + + + + + + + + Parameters affecting multithread processing + + The &RCL; indexing process + recollindex can use multiple threads to + speed up indexing on multiprocessor systems. The work done + to index files is divided in several stages and some of the + stages can be executed by multiple threads. The stages are: + + File system walking: this is always performed by + the main thread. + File conversion and data extraction. + Text processing (splitting, stemming, + etc.) + &XAP; index update. + + + You can also read a + + longer document about the transformation of + &RCL; indexing to multithreading. + + The threads configuration is controlled by two + configuration file parameters. + + + + thrQSizes + This variable defines the job input queues + configuration. There are three possible queues for + stages 2, 3 and 4, and this parameter should give the + queue depth for each stage (three integer values). If + a value of -1 is used for a given stage, no queue is + used, and the thread will go on performing the next + stage. In practise, deep queues have not been shown to + increase performance. A value of 0 for the first queue + tells &RCL; to perform autoconfiguration (no need for + the two other values in this case) - this is the + default configuration. + + + + thrTCounts + This defines the number of threads used + for each stage. If a value of -1 is used for one of + the queue depths, the corresponding thread count is + ignored. It makes no sense to use a value other than 1 + for the last stage because updating the &XAP; index is + necessarily single-threaded (and protected by a + mutex). + + + + + + The following example would use three queues (of depth 2), + and 4 threads for converting source documents, 2 for + processing their text, and one to update the index. This was + tested to be the best configuration on the test system + (quadri-processor with multiple disks). + +thrQSizes = 2 2 2 +thrTCounts = 4 2 1 + + + + The following example would use a single queue, and the + complete processing for each document would be performed by + a single thread (several documents will still be processed + in parallel in most cases). The threads will use mutual + exclusion when entering the index update stage. In practise + the performance would be close to the precedent case in + general, but worse in certain cases (e.g. a Zip archive + would be performed purely sequentially), so the previous + approach is preferred. YMMV... The 2 last values for + thrTCounts are ignored. + +thrQSizes = 2 -1 -1 +thrTCounts = 6 1 1 + + + + The following example would disable + multithreading. Indexing will be performed by a single + thread. + +thrQSizes = -1 -1 -1 + + + + + + + Miscellaneous parameters: + + + + autodiacsens + IF the index is not stripped, decide if we + automatically trigger diacritics sensitivity if the search + term has accented characters (not in + unac_except_trans). Else you need to use + the query language and the D modifier to + specify diacritics sensitivity. Default is no. + + + + autocasesens + IF the index is not stripped, decide if we + automatically trigger character case sensitivity if the + search term has upper-case characters in any but the first + position. Else you need to use the query language and the + C modifier to specify character-case + sensitivity. Default is yes. + + + + loglevel,daemloglevel + Verbosity level for recoll and + recollindex. A value of 4 lists quite a lot of + debug/information messages. 2 only lists errors. The + daemversion is specific to the indexing monitor + daemon. + + + + logfilename, + daemlogfilename + Where the messages should go. 'stderr' can + be used as a special value, and is the default. The + daemversion is specific to the indexing monitor + daemon. + + + + checkneedretryindexscript + This defines the name for a command + executed by recollindex when starting + indexing. If the exit status of the command is 0, + recollindex retries to index all files + which previously could not be indexed because of data + extraction errors. The default value is a script which + checks if any of the common bin + directories have changed (indicating that a helper program + may have been installed). + + + + mondelaypatterns + This allows specify wildcard path patterns + (processed with fnmatch(3) with 0 flag), to match files which + change too often and for which a delay should be observed before + re-indexing. This is a space-separated list, each entry being a + pattern and a time in seconds, separated by a colon. You can + use double quotes if a path entry contains white + space. Example: + +mondelaypatterns = *.log:20 "this one has spaces*:10" + + + + + monixinterval + Minimum interval (seconds) for processing the + indexing queue. The real time monitor does not process each + event when it comes in, but will wait this time for the queue + to accumulate to diminish overhead and in order to aggregate + multiple events to the same file. Default 30 S. + + + + monauxinterval + Period (in seconds) at which the real time + monitor will regenerate the auxiliary databases (spelling, + stemming) if needed. The default is one hour. + + + + monioniceclass, monioniceclassdata + These allow defining the + ionice class and data used by the + indexer (default class 3, no data). + + + + filtermaxseconds + Maximum handler execution time, after which it + is aborted. Some postscript programs just loop... + + + + filtermaxmbytes + &RCL; 1.20.7 and later. Maximum handler memory + utilisation. This uses setrlimit(RLIMIT_AS) on most systems + (total virtual memory space size limit). Some programs may start + with 500 MBytes of mapped shared libraries, so take this into + account when choosing a value. The default is a liberal + 2000MB. + + + + filtersdir + A directory to search for the external + input handler scripts used to index some types of files. The + value should not be changed, except if you want to modify + one of the default scripts. The value can be redefined for + any sub-directory. + + + + iconsdir + The name of the directory where + recoll result list icons are + stored. You can change this if you want different + images. + + + + idxabsmlen + &RCL; stores an abstract for each indexed + file inside the database. The text can come from an actual + 'abstract' section in the document or will just be the + beginning of the document. It is stored in the index so + that it can be displayed inside the result lists without + decoding the original + file. The idxabsmlen parameter defines + the size of the stored abstract. The default value is 250 bytes. + The search interface gives you the choice to display this + stored text or a synthetic abstract built by extracting + text around the search terms. If you always + prefer the synthetic abstract, you can reduce this value + and save a little space. + + + + + idxmetastoredlen + Maximum stored length for metadata + fields. This does not affect indexing (the whole field is + processed anyway), just the amount of data stored in the + index for the purpose of displaying fields inside result + lists or previews. The default value is 150 bytes which + may be too low if you have custom fields. + + + + aspellLanguage + Language definitions to use when creating + the aspell dictionary. The value must match a set of + aspell language definition files. You can type "aspell + config" to see where these are installed (look for + data-dir). The default if the variable is not set is to + use your desktop national language environment to guess + the value. + + + + noaspell + If this is set, the aspell dictionary + generation is turned off. Useful for cases where you don't + need the functionality or when it is unusable because + aspell crashes during dictionary generation. + + + + mhmboxquirks + This allows definining location-related quirks + for the mailbox handler. Currently only the + tbird flag is defined, and it should be set + for directories which hold + Thunderbird data, as their folder + format is weird. Example: + [/path/to/my/mozilla/mail] +mhmboxquirks = tbird + It should be noted that later &RCL; + versions have improved automatic detection of + Thunderbird folders, so that this + should not be needed at all in most cases. + + + + + + + + + + The fields file + + This file contains information about dynamic fields handling + in &RCL;. Some very basic fields have hard-wired behaviour, + and, mostly, you should not change the original data inside the + fields file. But you can create custom fields + fitting your data and handle them just like they were native + ones. + + The fields file has several sections, + which each define an aspect of fields processing. Quite often, + you'll have to modify several sections to obtain the desired + behaviour. + + We will only give a short description here, you should refer + to the comments inside the default file for more detailed + information. + + Field names should be lowercase alphabetic ASCII. + + + + + [prefixes] + A field becomes indexed (searchable) by having + a prefix defined in this section. + + + + [stored] + A field becomes stored (displayable inside + results) by having its name listed in this section (typically + with an empty value). + + + + [aliases] + This section defines lists of synonyms for the + canonical names used inside the [prefixes] + and [stored] sections + + + + [queryaliases] + This section also defines aliases for the + canonic field names, with the difference that the substitution + will only be used at query time, avoiding any possibility that + the value would pick-up random metadata from documents. + + + + handler-specific sections + Some input handlers may need specific + configuration for handling fields. Only the email message handler + currently has such a section (named + [mail]). It allows indexing arbitrary email + headers in addition to the ones indexed by default. Other such + sections may appear in the future. + + + + + + Here follows a small example of a personal + fields + file. This would extract a specific email header and + use it as a searchable field, with data displayable inside result + lists. (Side note: as the email handler does no decoding on the values, + only plain ascii headers can be indexed, and only the + first occurrence will be used for headers that occur several times). + +[prefixes] +# Index mailmytag contents (with the given prefix) +mailmytag = XMTAG + +[stored] +# Store mailmytag inside the document data record (so that it can be +# displayed - as %(mailmytag) - in result lists). +mailmytag = + +[queryaliases] +filename = fn +containerfilename = cfn + +[mail] +# Extract the X-My-Tag mail header, and use it internally with the +# mailmytag field name +x-my-tag = mailmytag + + + + + + Extended attributes in the fields file + + &RCL; versions 1.19 and later process user extended + file attributes as documents fields by default. + + Attributes are processed as fields of the same name, + after removing the user prefix on + Linux. + + The [xattrtofields] + section of the fields file allows + specifying translations from extended attributes names to + &RCL; field names. An empty translation disables use of the + corresponding attribute data. + + + + + + + The mimemap file + + mimemap specifies the + file name extension to MIME type mappings. + + For file names without an extension, or with an unknown + one, the system's file + command will be + executed to determine the MIME type (this can be switched off + inside the main configuration file). + + The mappings can be specified on a per-subtree basis, + which may be useful in some cases. Example: + gaim logs have a + .txt extension but + should be handled specially, which is possible because they + are usually all located in one place. + + The recoll_noindex + mimemap variable has been moved to + recoll.conf and renamed to + noContentSuffixes, while keeping the same + function, as of &RCL; version 1.21. For older &RCL; versions, + see the documentation for noContentSuffixes + but use recoll_noindex in + mimemap. + + + + + The mimeconf file + + mimeconf specifies how the + different MIME types are handled for indexing, and which icons + are displayed in the recoll result lists. + + Changing the parameters in the [index] section is + probably not a good idea except if you are a &RCL; + developer. + + The [icons] section allows you to change the icons which + are displayed by recoll in the result + lists (the values are the basenames of the png images inside + the iconsdir directory (specified in + recoll.conf). + + + + + The mimeview file + + mimeview specifies which programs + are started when you click on an Open link + in a result list. Ie: HTML is normally displayed using + firefox, but you may prefer + Konqueror, your + openoffice.org + program might be named oofice instead of + openoffice etc. + + Changes to this file can be done by direct editing, or + through the recoll GUI preferences dialog. + + If Use desktop preferences to choose document + editor is checked in the &RCL; GUI preferences, all + mimeview entries will be ignored except the + one labelled application/x-all (which is set to + use xdg-open by default). + + In this case, the xallexcepts top level + variable defines a list of MIME type exceptions which + will be processed according to the local entries instead of being + passed to the desktop. This is so that specific &RCL; options + such as a page number or a search string can be passed to + applications that support them, such as the + evince viewer. + + As for the other configuration files, the normal usage + is to have a mimeview inside your own + configuration directory, with just the non-default entries, + which will override those from the central configuration + file. + + All viewer definition entries must be placed under a + [view] section. + + The keys in the file are normally MIME types. You can add an + application tag to specialize the choice for an area of the + filesystem (using a localfields specification + in mimeconf). The syntax for the key is +mimetype|tag + + The nouncompforviewmts entry, (placed at + the top level, outside of the [view] section), + holds a list of MIME types that should not be uncompressed before + starting the viewer (if they are found compressed, ie: + mydoc.doc.gz). + + The right side of each assignment holds a command to be + executed for opening the file. The following substitutions are + performed: + + + + %D + Document date + + + %f + File name. This may be the name of a temporary file if + it was necessary to create one (ie: to extract a subdocument + from a container). + + + %i + Internal path, for subdocuments of containers. The + format depends on the container type. If this appears in the + command line, &RCL; will not create a temporary file to + extract the subdocument, expecting the called application + (possibly a script) to be able to handle it. + + + %M + MIME type + + + %p + Page index. Only significant for a subset of document + types, currently only PDF, Postscript and DVI files. Can be + used to start the editor at the right page for a match or + snippet. + + + %s + Search term. The value will only be set for documents + with indexed page numbers (ie: PDF). The value will be one of + the matched search terms. It would allow pre-setting the + value in the "Find" entry inside Evince for example, for easy + highlighting of the term. + + + %u + Url. + + + + In addition to the predefined values above, all strings like + %(fieldname) will be replaced by the value of + the field named fieldname for the + document. This could be used in combination with field + customisation to help with opening the document. + + + + + The <filename>ptrans</filename> file + + ptrans specifies query-time path + translations. These can be useful + in multiple + cases. + The file has a section for any index which needs + translations, either the main one or additional query + indexes. The sections are named with the &XAP; index + directory names. No slash character should exist at the end + of the paths (all comparisons are textual). An exemple + should make things sufficiently clear + + + [/home/me/.recoll/xapiandb] + /this/directory/moved = /to/this/place + + [/path/to/additional/xapiandb] + /server/volume1/docdir = /net/server/volume1/docdir + /server/volume2/docdir = /net/server/volume2/docdir + + + + + + + Examples of configuration adjustments + + + Adding an external viewer for an non-indexed type + + Imagine that you have some kind of file which does not + have indexable content, but for which you would like to have a + functional Open link in the result list + (when found by file name). The file names end in + .blob and can be displayed by + application blobviewer. + + You need two entries in the configuration files for this + to work: + + + In $RECOLL_CONFDIR/mimemap + (typically ~/.recoll/mimemap), add the + following line: +.blob = application/x-blobapp + + Note that the MIME type is made up here, and you could + call it diesel/oil just the + same. + + In $RECOLL_CONFDIR/mimeview + under the [view] section, add: + +application/x-blobapp = blobviewer %f + + We are supposing + that blobviewer wants a file + name parameter here, you would use %u if + it liked URLs better. + + + + If you just wanted to change the application used by + &RCL; to display a MIME type which it already knows, you + would just need to edit mimeview. The + entries you add in your personal file override those in the + central configuration, which you do not need to + alter. mimeview can also be modified + from the Gui. + + + + + Adding indexing support for a new file type + + Let us now imagine that the above + .blob files actually contain + indexable text and that you know how to extract it with a + command line program. Getting &RCL; to index the files is + easy. You need to perform the above alteration, and also to + add data to the mimeconf file + (typically in ~/.recoll/mimeconf): + + Under the [index] + section, add the following line (more about the + rclblob indexing script + later): +application/x-blobapp = exec rclblob + + + Under the [icons] + section, you should choose an icon to be displayed for the + files inside the result lists. Icons are normally 64x64 + pixels PNG files which live in + /usr/share/recoll/images. + + Under the [categories] + section, you should add the MIME type where it makes sense + (you can also create a category). Categories may be used + for filtering in advanced search. + + + + The rclblob handler should + be an executable program or script which exists inside + /usr/share/recoll/filters. It + will be given a file name as argument and should output the + text or html contents on the standard output. + + The filter + programming section describes in more detail how + to write an input handler. + + + + + + + + + +
+ diff --git a/src/doc/user/webhelp/00README.txt b/src/doc/user/webhelp/00README.txt new file mode 100644 index 00000000..50f6609c --- /dev/null +++ b/src/doc/user/webhelp/00README.txt @@ -0,0 +1,13 @@ + +01-2016: +Webhelp is not packaged on Debian. To setup the build: + + - Get a docbook-xsl tar distribution (e.g. docbook-xsl-1.79.1.tar.bz2) + - Copy webhelp/xsl to the docbook dist: + /usr/share/xml/docbook/stylesheet/docbook-xsl/webhelp/xsl + - Possibly adjust + DOCBOOK_DIST := /usr/share/xml/docbook/stylesheet/docbook-xsl/ + in Makefile (if other system with docbook installed elsewhere). + +Did not try to get the search to work (needs lucene etc.) + diff --git a/src/doc/user/webhelp/Makefile b/src/doc/user/webhelp/Makefile new file mode 100644 index 00000000..50b210ef --- /dev/null +++ b/src/doc/user/webhelp/Makefile @@ -0,0 +1,114 @@ +# Configuration +# The name of the source DocBook xml file +INPUT_XML = ../usermanual.xml + +# The makefile assumes that you have a +# directory named images that contains +# your images. It copies this to the +# output directory +USER_IMAGES_PARENT_DIR=docsrc + +# Name of the desired output directory +# This will be created if it doesn't exist +OUTPUT_DIR = docs + +# A list of files to exclude from indexing +INDEXER_EXCLUDED_FILES = ix01.html + +# Profiling params. For more information on +# profiling (conditional text) and DocBook documents, see +# http://www.sagehill.net/docbookxsl/Profiling.html +PROFILE.ARCH = "" +PROFILE.AUDIENCE = "" +PROFILE.CONDITION = "" +PROFILE.CONFORMANCE = "" +PROFILE.LANG = "" +PROFILE.OS = "" +PROFILE.REVISION = "" +PROFILE.REVISIONFLAG = "" +PROFILE.ROLE = "" +PROFILE.SECURITY = "" +PROFILE.STATUS = "" +PROFILE.USERLEVEL = "" +PROFILE.VENDOR = "" +PROFILE.WORDSIZE = "" +PROFILE.ATTRIBUTE = "" +PROFILE.VALUE = "" + +# Use this variable to pass in other stringparams +# to the xsltproc pass that generates DocBook output. +# For example: +# OTHER_XSLTPROC_ARGS = --stringparam example.param "" +OTHER_XSLTPROC_ARGS = + +# Path to the DocBook Distribution that +# contains the xslts etc. +DOCBOOK_DIST := /usr/share/xml/docbook/stylesheet/docbook-xsl/ + +# ================================================= +# You probably don't need to change anything below +# unless you choose to add a validation step. +# ================================================ +DOCBOOK_EXTENSIONS_DIR = $(DOCBOOK_DIST)/extensions +INDEXER_JAR := $(DOCBOOK_EXTENSIONS_DIR)/webhelpindexer.jar +TAGSOUP_JAR := $(DOCBOOK_EXTENSIONS_DIR)/tagsoup-1.2.1.jar +LUCENE_ANALYZER_JAR := $(DOCBOOK_EXTENSIONS_DIR)/lucene-analyzers-3.0.0.jar +LUCENE_CORE_JAR := $(DOCBOOK_EXTENSIONS_DIR)/lucene-core-3.0.0.jar + +classpath := $(INDEXER_JAR):$(TAGSOUP_JAR):$(LUCENE_ANALYZER_JAR):$(LUCENE_CORE_JAR) + +all: copyfiles docs/index.html # index + +${OUTPUT_DIR}/favicon.ico: template/favicon.ico + cp -p template/favicon.ico ${OUTPUT_DIR}/favicon.ico +${OUTPUT_DIR}/common/main.js: template/common/main.js + cp -rp template/common ${OUTPUT_DIR} + +copyfiles: ${OUTPUT_DIR}/favicon.ico ${OUTPUT_DIR}/common/main.js + +# test ! -d $(USER_IMAGES_PARENT_DIR)/images/ || \ +# cp -rp $(USER_IMAGES_PARENT_DIR)/images ${OUTPUT_DIR}/images + +docs/index.html: ${INPUT_XML} + xsltproc --xinclude --output xincluded-profiled.xml \ + --stringparam profile.arch ${PROFILE.ARCH} \ + --stringparam profile.audience ${PROFILE.AUDIENCE} \ + --stringparam profile.condition ${PROFILE.CONDITION} \ + --stringparam profile.conformance ${PROFILE.CONFORMANCE} \ + --stringparam profile.lang ${PROFILE.LANG} \ + --stringparam profile.os ${PROFILE.OS} \ + --stringparam profile.revision ${PROFILE.REVISION} \ + --stringparam profile.revisionflag ${PROFILE.REVISIONFLAG} \ + --stringparam profile.role ${PROFILE.ROLE} \ + --stringparam profile.security ${PROFILE.SECURITY} \ + --stringparam profile.status ${PROFILE.STATUS} \ + --stringparam profile.userlevel ${PROFILE.USERLEVEL} \ + --stringparam profile.vendor ${PROFILE.VENDOR} \ + --stringparam profile.wordsize ${PROFILE.WORDSIZE} \ + --stringparam profile.attribute ${PROFILE.ATTRIBUTE} \ + --stringparam profile.value ${PROFILE.VALUE} \ + ${DOCBOOK_DIST}/profiling/profile.xsl \ + ${INPUT_XML} + xsltproc ${OTHER_XSLTPROC_ARGS} \ + ${DOCBOOK_DIST}/webhelp/xsl/webhelp.xsl \ + xincluded-profiled.xml + rm xincluded-profiled.xml + +index: + java \ + -DhtmlDir=$(OUTPUT_DIR) \ + -DindexerLanguage=en \ + -DhtmlExtension=html \ + -DdoStem=true \ + -DindexerExcludedFiles=$(INDEXER_EXCLUDED_FILES) \ + -Dorg.xml.sax.driver=org.ccil.cowan.tagsoup.Parser \ + -Djavax.xml.parsers.SAXParserFactory=org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl \ + -classpath $(classpath) \ + com.nexwave.nquindexer.IndexerMain + + cp -r template/search/* ${OUTPUT_DIR}/search + +clean: + $(RM) -r ${OUTPUT_DIR} + mkdir -p $(OUTPUT_DIR) + diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.GUI.html b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.GUI.html new file mode 100644 index 00000000..c1723801 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.GUI.html @@ -0,0 +1,158 @@ + + + + +The index configuration GUI - - Recoll user manual

The index configuration GUI

Most parameters for a given index configuration can + be set from a recoll GUI running on this + configuration (either as default, or by setting + RECOLL_CONFDIR or the -c + option.)

The interface is started from the + Preferences → Index Configuration + menu entry. It is divided in four tabs, + Global parameters, Local + parameters, Web history + (which is explained in the next section) and Search + parameters.

The Global parameters tab allows setting + global variables, like the lists of top directories, skipped paths, + or stemming languages.

The Local parameters tab allows setting + variables that can be redefined for subdirectories. This second tab + has an initially empty list of customisation directories, to which + you can add. The variables are then set for the currently selected + directory (or at the top level if the empty line is + selected).

The Search parameters section defines + parameters which are used at query time, but are global to an + index and affect all search tools, not only the GUI.

The meaning for most entries in the interface is + self-evident and documented by a ToolTip + popup on the text label. For more detail, you will need to + refer to the configuration + section of this guide.

The configuration tool normally respects the comments + and most of the formatting inside the configuration file, so + that it is quite possible to use it on hand-edited files, + which you might nevertheless want to backup first...

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.MULTIPLE.html b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.MULTIPLE.html new file mode 100644 index 00000000..e31777da --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.MULTIPLE.html @@ -0,0 +1,172 @@ + + + + +Multiple indexes - - Recoll user manual

Multiple indexes

Multiple Recoll indexes can be created by + using several configuration directories which are usually set to + index different areas of the file system. A specific index can + be selected for updating or searching, using the + RECOLL_CONFDIR environment variable or the + -c option to recoll and + recollindex.

When working with the recoll index + configuration GUI, the configuration directory for which parameters + are modified is the one which was selected by + RECOLL_CONFDIR or the -c parameter, + and there is no way to switch configurations within the GUI.

Additional configuration directory (beyond + ~/.recoll) must be created by hand + (mkdir or such), the GUI will not do it. This is + to avoid mistakenly creating additional directories when an + argument is mistyped.

A typical usage scenario for the multiple index feature + would be for a system administrator to set up a central index + for shared data, that you choose to search or not in addition to + your personal data. Of course, there are other + possibilities. There are many cases where you know the subset of + files that should be searched, and where narrowing the search + can improve the results. You can achieve approximately the same + effect with the directory filter in advanced search, but + multiple indexes will have much better performance and may be + worth the trouble.

A recollindex program instance can only + update one specific index.

The main index (defined by + RECOLL_CONFDIR or -c) is + always active. If this is undesirable, you can set up your + base configuration to index an empty directory.

The different search interfaces (GUI, command line, ...) + have different methods to define the set of indexes to be + used, see the appropriate section.

If a set of multiple indexes are to be used together for + searches, some configuration parameters must be consistent + among the set. These are parameters which need to be the same + when indexing and searching. As the parameters come from the + main configuration when searching, they need to be compatible + with what was set when creating the other indexes (which came + from their respective configuration directories).

Most importantly, all indexes to be queried concurrently must + have the same option concerning character case and diacritics + stripping, but there are other constraints. Most of the + relevant parameters are described in the + linked + section.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.SENS.html b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.SENS.html new file mode 100644 index 00000000..ba3a3d47 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.SENS.html @@ -0,0 +1,162 @@ + + + + +Index case and diacritics sensitivity - - Recoll user manual

Index case and diacritics sensitivity

As of Recoll version 1.18 you have a choice of building an + index with terms stripped of character case and diacritics, or + one with raw terms. For a source term of + Résumé, the former will store + resume, the latter + Résumé.

Each type of index allows performing searches insensitive to + case and diacritics: with a raw index, the user entry will be + expanded to match all case and diacritics variations present in + the index. With a stripped index, the search term will be stripped + before searching.

A raw index allows for another possibility which a stripped + index cannot offer: using case and diacritics to discriminate + between terms, returning different results when searching for + US and us or + resume and résumé. + Read the section about search + case and diacritics sensitivity for more details.

The type of index to be created is controlled by the + indexStripChars configuration + variable which can only be changed by editing the + configuration file. Any change implies an index reset (not + automated by Recoll), and all indexes in a search must be set + in the same way (again, not checked by Recoll).

If the indexStripChars is not set, Recoll + 1.18 creates a stripped index by default, for + compatibility with previous versions.

As a cost for added capability, a raw index will be slightly + bigger than a stripped one (around 10%). Also, searches will be + more complex, so probably slightly slower, and the feature is + still young, so that a certain amount of weirdness cannot be + excluded.

One of the most adverse consequence of using a raw index + is that some phrase and proximity searches may become + impossible: because each term needs to be expanded, and all + combinations searched for, the multiplicative expansion may + become unmanageable.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.html b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.html new file mode 100644 index 00000000..6b2d109d --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.CONFIG.html @@ -0,0 +1,161 @@ + + + + +Index configuration - - Recoll user manual

Index configuration

Variables set inside the + Recoll configuration files + control which areas of the file system are indexed, and how + files are processed. These variables can be set either by + editing the text files or by using the + dialogs in the + recoll GUI.

The first time you start recoll, you + will be asked whether or not you would like it to build the + index. If you want to adjust the configuration before + indexing, just click Cancel at this + point, which will get you into the configuration interface. If + you exit at this point, recoll will have + created a ~/.recoll directory containing + empty configuration files, which you can edit by hand.

The configuration is documented inside the + installation chapter + of this document, or in the + recoll.conf(5) + man page, but the most + current information will most likely be the comments inside the + sample file. The most immediately useful variable you may + interested in is probably + + topdirs, + which determines what subtrees get indexed.

The applications needed to index file types other than + text, HTML or email (ie: pdf, postscript, ms-word...) are + described in the external + packages section.

As of Recoll 1.18 there are two incompatible types of Recoll + indexes, depending on the treatment of character case and + diacritics. The next section describes the two types in more + detail.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.EXTATTR.html b/src/doc/user/webhelp/docs/RCL.INDEXING.EXTATTR.html new file mode 100644 index 00000000..91dcf584 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.EXTATTR.html @@ -0,0 +1,147 @@ + + + + +Extended attributes data - - Recoll user manual

Extended attributes data

User extended attributes are named pieces of information + that most modern file systems can attach to any file.

Recoll versions 1.19 and later process extended attributes + as document fields by default. For older versions, this has to + be activated at build time.

A + + freedesktop standard defines a few special + attributes, which are handled as such by Recoll: +

mime_type

If set, this overrides any other + determination of the file MIME type.

charset
If set, this defines the file character set + (mostly useful for plain text files).

+

By default, other attributes are handled as Recoll fields. + On Linux, the user prefix is removed from + the name. This can be configured more precisely inside + the + fields configuration file. +

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.EXTTAGS.html b/src/doc/user/webhelp/docs/RCL.INDEXING.EXTTAGS.html new file mode 100644 index 00000000..185f79e7 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.EXTTAGS.html @@ -0,0 +1,138 @@ + + + + +Importing external tags - - Recoll user manual

Importing external tags

During indexing, it is possible to import metadata for + each file by executing commands. For example, this could + extract user tag data for the file and store it in a field for + indexing.

See the + section + about the metadatacmds field in + the main configuration chapter for more detail.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.CONFIG.html b/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.CONFIG.html new file mode 100644 index 00000000..31005b94 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.CONFIG.html @@ -0,0 +1,155 @@ + + + + +Configurations, multiple indexes - - Recoll user manual

Configurations, multiple indexes

The parameters describing what is to be indexed and + local preferences are defined in text files contained in a + configuration + directory.

All parameters have defaults, defined in system-wide + files.

Without further configuration, Recoll will index all + appropriate files from your home directory, with a reasonable + set of defaults.

A default personal configuration directory + ($HOME/.recoll/) is created + when a Recoll program is first executed. It is possible to + create other configuration directories, and use them by + setting the RECOLL_CONFDIR environment + variable, or giving the -c option to any of + the Recoll commands.

In some cases, it may be interesting to index different + areas of the file system to separate databases. You can do this + by using multiple configuration directories, each indexing a + file system area to a specific database. Typically, this + would be done to separate personal and shared + indexes, or to take advantage of the organization of your data + to improve search precision.

The generated indexes can + be queried concurrently in a transparent manner.

For index generation, multiple configurations are + totally independant from each other. When multiple indexes need + to be used for a single search, + some parameters + should be consistent among the configurations.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.MODES.html b/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.MODES.html new file mode 100644 index 00000000..df98f08d --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.MODES.html @@ -0,0 +1,155 @@ + + + + +Indexing modes - - Recoll user manual

Indexing modes

Recoll indexing can be performed along two different modes: +

  • + Periodic (or batch) indexing: indexing takes place at discrete + times, by executing the recollindex + command. The typical usage is to have a nightly indexing run + + programmed into + your cron file.

  • Real + time indexing: indexing takes place as soon as a file is created or + changed. recollindex runs as a daemon + and uses a file system alteration monitor such as + inotify, + Fam or + Gamin + to detect file changes.

+

The choice between the two methods is mostly a matter of + preference, and they can be combined by setting up multiple + indexes (ie: use periodic indexing on a big documentation + directory, and real time indexing on a small home + directory). Monitoring a big file system tree can consume + significant system resources.

The choice of method and the parameters used can be + configured from the recoll GUI: + Preferences → Indexing schedule +

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.html b/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.html new file mode 100644 index 00000000..fe700219 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.INTRODUCTION.html @@ -0,0 +1,152 @@ + + + + +Introduction - - Recoll user manual

Introduction

Indexing is the process by which the set of documents is + analyzed and the data entered into the database. Recoll + indexing is normally incremental: documents will only be + processed if they have been modified since the last run. On + the first execution, all documents will need processing. A + full index build can be forced later by specifying an option + to the indexing command (recollindex + -z or -Z).

recollindex skips files which caused an + error during a previous pass. This is a performance + optimization, and a new behaviour in version 1.21 (failed files + were always retried by previous versions). The command line + option -k can be set to retry failed files, for + example after updating a filter.

The following sections give an overview of different + aspects of the indexing processes and configuration, with links + to detailed sections.

Depending on your data, temporary files may be needed during + indexing, some of them possibly quite big. You can use the + RECOLL_TMPDIR or TMPDIR environment + variables to determine where they are created (the default is to + use /tmp). Using TMPDIR has + the nice property that it may also be taken into account by + auxiliary commands executed by recollindex.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.FASTFILES.html b/src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.FASTFILES.html new file mode 100644 index 00000000..f6c8d8d9 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.FASTFILES.html @@ -0,0 +1,139 @@ + + + + +Slowing down the reindexing rate for fast changing files - - Recoll user manual

Slowing down the reindexing rate for fast changing + files

When using the real time monitor, it may happen that some + files need to be indexed, but change so often that they impose an + excessive load for the system.

Recoll provides a configuration option to specify the minimum + time before which a file, specified by a wildcard pattern, cannot be + reindexed. See the mondelaypatterns parameter in + the + configuration section.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.html b/src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.html new file mode 100644 index 00000000..9e5ba954 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.MONITOR.html @@ -0,0 +1,206 @@ + + + + +Real time indexing - - Recoll user manual

Real time indexing

Real time monitoring/indexing is performed by starting the + recollindex -m command. + With this option, recollindex will detach + from the terminal and become a daemon, permanently monitoring + file changes and updating the index.

Under KDE, + Gnome and some other desktop + environments, the daemon can automatically started when you log + in, by creating a desktop file inside the + ~/.config/autostart directory. This can be + done for you by the Recoll GUI. Use the + Preferences->Indexing Schedule menu.

With older X11 setups, starting + the daemon is normally performed as part of the user session + script.

The rclmon.sh script can be used to + easily start and stop the daemon. It can be found in the + examples directory (typically + /usr/local/[share/]recoll/examples).

For example, my out of fashion + xdm-based session has a + .xsession script with the following lines + at the end:

recollconf=$HOME/.recoll-home
+recolldata=/usr/local/share/recoll
+RECOLL_CONFDIR=$recollconf $recolldata/examples/rclmon.sh start
+
+fvwm 
+
+

The indexing daemon gets started, then the window manager, + for which the session waits.

By default the + indexing daemon will monitor the state of the X11 session, and + exit when it finishes, it is not necessary to kill it + explicitly. (The X11 server + monitoring can be disabled with option -x to + recollindex).

If you use the daemon completely out of an + X11 session, you need to add option + -x to disable X11 + session monitoring (else the daemon will not start).

By default, the messages from the indexing daemon will be + setn to the same file as those from the interactive commands + (logfilename). You may want to change this + by setting the daemlogfilename and + daemloglevel configuration parameters. Also + the log file will only be truncated when the daemon starts. If + the daemon runs permanently, the log file may grow quite big, + depending on the log level.

When building Recoll, the real time indexing support can be + customised during package configuration with + the --with[out]-fam or + --with[out]-inotify options. The default is + currently to include inotify + monitoring on systems that support it, and, as of Recoll 1.17, + gamin support on + FreeBSD.

While it is convenient that data is indexed in real time, + repeated indexing can generate a significant load on the + system when files such as email folders change. Also, + monitoring large file trees by itself significantly taxes + system resources. You probably do not want to enable it if + your system is short on resources. Periodic indexing is + adequate in most cases.

Increasing resources for inotify

On Linux systems, monitoring a big tree may need + increasing the resources available to inotify, which are + normally defined in /etc/sysctl.conf. +

+### inotify
+#
+# cat  /proc/sys/fs/inotify/max_queued_events   - 16384
+# cat  /proc/sys/fs/inotify/max_user_instances  - 128
+# cat  /proc/sys/fs/inotify/max_user_watches    - 16384
+#
+# -- Change to:
+#
+fs.inotify.max_queued_events=32768
+fs.notify.max_user_instances=256
+fs.inotify.max_user_watches=32768
+	  

+ +

Especially, you will need to trim your tree or adjust + the max_user_watches value if indexing exits with + a message about errno ENOSPC (28) from + inotify_add_watch.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.AUTOMAT.html b/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.AUTOMAT.html new file mode 100644 index 00000000..4fce3fef --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.AUTOMAT.html @@ -0,0 +1,161 @@ + + + + +Using cron to automate indexing - - Recoll user manual

Using cron to automate + indexing

The most common way to set up indexing is to have a cron + task execute it every night. For example the following + crontab entry would do it every day at + 3:30AM (supposing recollindex is in your + PATH): + +

+30 3 * * * recollindex > /some/tmp/dir/recolltrace 2>&1
+

+ + Or, using anacron: +

+1  15  su mylogin -c "recollindex recollindex > /tmp/rcltraceme 2>&1"
+

+

As of version 1.17 the Recoll GUI has dialogs to manage + crontab entries for + recollindex. You can reach them from the + Preferences → Indexing Schedule + menu. They only + work with the good old cron, and do not give + access to all features of cron scheduling.

The usual command to edit your + crontab is crontab + -e (which will usually start the + vi editor to edit the file). You may have + more sophisticated tools available on your system.

Please be aware that there may be differences between your + usual interactive command line environment and the one seen by + crontab commands. Especially the PATH variable may be of + concern. Please check the crontab manual pages about possible + issues.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.EXEC.html b/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.EXEC.html new file mode 100644 index 00000000..b64aa516 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.EXEC.html @@ -0,0 +1,190 @@ + + + + +Running indexing - - Recoll user manual

Running indexing

Indexing is always performed by the + recollindex program, which can be started + either from the command line or from the File + menu in the recoll GUI program. When started + from the GUI, the indexing will run on the same configuration + recoll was started on. When started from the + command line, recollindex will use the + RECOLL_CONFDIR variable or accept a + -c confdir option + to specify a non-default configuration directory.

If the recoll program finds no index + when it starts, it will automatically start indexing (except + if canceled).

The recollindex indexing process can be + interrupted by sending an interrupt (Ctrl-C, + SIGINT) or terminate + (SIGTERM) signal. Some time may elapse before the process exits, + because it needs to properly flush and close the index. This can + also be done from the recoll GUI + File → Stop Indexing + menu entry.

After such an interruption, the index will be somewhat + inconsistent because some operations which are normally + performed at the end of the indexing pass will have been + skipped (for example, the stemming and spelling databases + will be inexistant or out of date). You just need to restart + indexing at a later time to restore consistency. The + indexing will restart at the interruption point (the full + file tree will be traversed, but files that were indexed up + to the interruption and for which the index is still up to + date will not need to be reindexed).

recollindex has a number of other options + which are described in its man page. Only a few will be + described here.

Option -z will reset the index when + starting. This is almost the same as destroying the index + files (the nuance is that the Xapian format version will not + be changed).

Option -Z will force the update of all + documents without resetting the index first. This will not + have the "clean start" aspect of -z, but + the advantage is that the index will remain available for + querying while it is rebuilt, which can be a significant + advantage if it is very big (some installations need days + for a full index rebuild).

Option -k will force retrying files + which previously failed to be indexed, for example because + of a missing helper program.

Of special interest also, maybe, are + the -i and -f + options. -i allows indexing an explicit + list of files (given as command line parameters or read on + stdin). -f tells + recollindex to ignore file selection + parameters from the configuration. Together, these options + allow building a custom file selection process for some area + of the file system, by adding the top directory to the + skippedPaths list and using an + appropriate file selection method to build the file list to + be fed to recollindex + -if. Trivial example:

+	    find . -name indexable.txt -print | recollindex -if
+	  

recollindex -i will + not descend into subdirectories specified as parameters, + but just add them as index entries. It is + up to the external file selection method to build the complete + file list.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.html b/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.html new file mode 100644 index 00000000..bbbb3246 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.PERIODIC.html @@ -0,0 +1,133 @@ + + + + +Periodic indexing - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.FORMAT.html b/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.FORMAT.html new file mode 100644 index 00000000..06b9b865 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.FORMAT.html @@ -0,0 +1,144 @@ + + + + +Xapian index formats - - Recoll user manual

Xapian index formats

Xapian versions usually support several formats for index + storage. A given major Xapian version will have a current format, + used to create new indexes, and will also support the format from + the previous major version.

Xapian will not convert automatically an existing index + from the older format to the newer one. If you want to upgrade to + the new format, or if a very old index needs to be converted + because its format is not supported any more, you will have to + explicitly delete the old index, then run a normal indexing + process.

Using the -z option to + recollindex is not sufficient to change the + format, you will have to delete all files inside the index + directory (typically ~/.recoll/xapiandb) + before starting the indexing.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.SECURITY.html b/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.SECURITY.html new file mode 100644 index 00000000..642ee55d --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.SECURITY.html @@ -0,0 +1,141 @@ + + + + +Security aspects - - Recoll user manual

Security aspects

The Recoll index does not hold copies of the indexed + documents. But it does hold enough data to allow for an almost + complete reconstruction. If confidential data is indexed, + access to the database directory should be restricted.

Recoll will create the configuration directory with a mode of + 0700 (access by owner only). As the index data directory is by + default a sub-directory of the configuration directory, this should + result in appropriate protection.

If you use another setup, you should think of the kind + of protection you need for your index, set the directory + and files access modes appropriately, and also maybe adjust + the umask used during index updates.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.html b/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.html new file mode 100644 index 00000000..8a14bfcc --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.STORAGE.html @@ -0,0 +1,175 @@ + + + + +Index storage - - Recoll user manual

Index storage

The default location for the index data is the + xapiandb subdirectory of the Recoll + configuration directory, typically + $HOME/.recoll/xapiandb/. This can be + changed via two different methods (with different purposes): +

  • You can specify a different configuration + directory by setting the RECOLL_CONFDIR + environment variable, or using the -c + option to the Recoll commands. This method would typically be + used to index different areas of the file system to + different indexes. For example, if you were to issue the + following command: +

    recoll -c ~/.indexes-email

    Then + Recoll would use configuration files + stored in ~/.indexes-email/ and, + (unless specified otherwise in + recoll.conf) would look for + the index in + ~/.indexes-email/xapiandb/.

    Using multiple configuration directories and configuration + options allows you to tailor multiple configurations and + indexes to handle whatever subset of the available data you wish + to make searchable.

  • For a given configuration directory, you can + specify a non-default storage location for the index by setting + the dbdir parameter in the configuration file + (see the configuration + section). This method would mainly be of use if you wanted + to keep the configuration directory in its default location, but + desired another location for the index, typically out of disk + occupation concerns.

+

The size of the index is determined by the size of the set + of documents, but the ratio can vary a lot. For a typical + mixed set of documents, the index size will often be close to + the data set size. In specific cases (a set of compressed mbox + files for example), the index can become much bigger than the + documents. It may also be much smaller if the documents + contain a lot of images or other non-indexed data (an extreme + example being a set of mp3 files where only the tags would be + indexed).

Of course, images, sound and video do not increase the + index size, which means that nowadays (2012), typically, even a big + index will be negligible against the total amount of data on the + computer.

The index data directory (xapiandb) + only contains data that can be completely rebuilt by an index run + (as long as the original documents exist), and it can always be + destroyed safely.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.WEBQUEUE.html b/src/doc/user/webhelp/docs/RCL.INDEXING.WEBQUEUE.html new file mode 100644 index 00000000..ab54ca9e --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.WEBQUEUE.html @@ -0,0 +1,151 @@ + + + + +Indexing WEB pages you wisit - - Recoll user manual

Indexing WEB pages you wisit

With the help of a Firefox + extension, Recoll can index the Internet pages that you visit. The + extension was initially designed for the + Beagle indexer, but it has recently be + renamed and better adapted to Recoll.

The extension works by copying visited WEB pages to an indexing + queue directory, which Recoll then processes, indexing the data, + storing it into a local cache, then removing the file from the + queue.

This feature can be enabled in the GUI + Index configuration + panel, or by editing the configuration file (set + processwebqueue to 1).

A current pointer to the extension can be found, along with + up-to-date instructions, on the + Recoll wiki.

A copy of the indexed WEB pages is retained by Recoll in a + local cache (from which previews can be fetched). The cache size can + be adjusted from the Index configuration / + Web history panel. Once the maximum size + is reached, old pages are purged - both from the cache and the index + - to make room for new ones, so you need to explicitly archive in + some other place the pages that you want to keep + indefinitely.

diff --git a/src/doc/user/webhelp/docs/RCL.INDEXING.html b/src/doc/user/webhelp/docs/RCL.INDEXING.html new file mode 100644 index 00000000..5f06f856 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INDEXING.html @@ -0,0 +1,132 @@ + + + + +Indexing - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.BINARY.html b/src/doc/user/webhelp/docs/RCL.INSTALL.BINARY.html new file mode 100644 index 00000000..1aa026f8 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.BINARY.html @@ -0,0 +1,156 @@ + + + + +Installing a binary copy - - Recoll user manual

Installing a binary copy

Recoll binary copies are always distributed as regular + packages for your system. They can be obtained either through + the system's normal software distribution framework (e.g. + Debian/Ubuntu apt, + FreeBSD ports, etc.), or from some type + of "backports" repository providing versions newer than the standard + ones, or found on the Recoll WEB site in some + cases. The most up-to-date information about Recoll packages can + usually be found on the + + Recoll WEB site downloads + page

There used to exist another form of binary install, as + pre-compiled source trees, but these are just less convenient than + the packages and don't exist any more.

The package management tools will usually automatically + deal with hard dependancies for packages obtained from a proper + package repository. You will have to deal with them by hand for + downloaded packages (for example, when dpkg + complains about missing dependancies).

In all cases, you will have to check or install supporting applications + for the file types that you want to index beyond those that are + natively processed by Recoll (text, HTML, email files, and a few + others).

You should also maybe have a look at the + configuration section + (but this may not be necessary for a quick test with default + parameters). Most parameters can be more conveniently set from the + GUI interface.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.SOLARIS.html b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.SOLARIS.html new file mode 100644 index 00000000..14e80a9e --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.SOLARIS.html @@ -0,0 +1,137 @@ + + + + +Building on Solaris - - Recoll user manual

Building on Solaris

We did not test building the GUI on Solaris for recent + versions. You will need at least Qt 4.4. There are some hints + on an old + web site page, they may still be valid.

Someone did test the 1.19 indexer and Python module build, + they do work, with a few minor glitches. Be sure to use + GNU make and install.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.html b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.html new file mode 100644 index 00000000..a9fc8fa5 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.BUILD.html @@ -0,0 +1,207 @@ + + + + +Building - - Recoll user manual

Building

Recoll has been built on Linux, FreeBSD, Mac OS X, and Solaris, + most versions after 2005 should be ok, maybe some older ones too + (Solaris 8 is ok). If you build on another system, and + need to modify things, + I would + very much welcome patches.

Configure options:  +

  • --without-aspell + will disable the code for phonetic matching of search + terms.

  • --with-fam or + --with-inotify will enable the code for + real time indexing. Inotify support is enabled by default on + recent Linux systems.

  • --with-qzeitgeist will + enable sending Zeitgeist + events about the visited search results, and needs + the qzeitgeist + package.

  • --disable-webkit is available + from version 1.17 to implement the result list with a + Qt QTextBrowser instead of a + WebKit widget if you do not or can't depend on the + latter.

  • --disable-idxthreads is available + from version 1.19 to suppress multithreading inside the + indexing process. You can also use the run-time + configuration to restrict recollindex + to using a single thread, but the compile-time option + may disable a few more unused locks. This only applies + to the use of multithreading for the core index + processing (data input). The Recoll monitor mode always + uses at least two threads of execution.

  • --disable-python-module will + avoid building the Python + module.

  • --disable-xattr will prevent + fetching data from file extended attributes. Beyond a + few standard attributes, fetching extended attributes + data can only be useful is some application stores data + in there, and also needs some simple configuration (see + comments in the fields configuration + file).

  • --enable-camelcase will enable + splitting camelCase words. This + is not enabled by default as it has the unfortunate + side-effect of making some phrase searches quite + confusing: ie, "MySQL manual" would be + matched by "MySQL manual" and + "my sql manual" but not "mysql + manual" (only inside phrase searches).

  • --with-file-command Specify + the version of the 'file' command to use (ie: + --with-file-command=/usr/local/bin/file). Can be useful to + enable the gnu version on systems where the native one is + bad.

  • --disable-qtgui Disable the Qt + interface. Will allow building the indexer and the command line + search program in absence of a Qt environment.

  • --disable-x11mon Disable + X11 connection monitoring + inside recollindex. Together with --disable-qtgui, this + allows building recoll without + Qt and + X11.

  • --disable-userdoc + will avoid building the user manual. This avoids having to + install the Docbook XML/XSL files and the TeX toolchain used for + translating the manual to PDF.

  • --disable-pic (Recoll versions up + to 1.21 only) will compile + Recoll with position-dependant code. This is incompatible with + building the KIO or the Python + or PHP extensions, but might + yield very marginally faster code.

  • Of course the usual + autoconf configure + options, like --prefix apply.

+

Normal procedure (for source extracted from a tar + distribution):

+        cd recoll-xxx
+        ./configure
+        make
+        (practices usual hardship-repelling invocations)
+      

When building from source cloned from the BitBucket repository, + you also need to install autoconf, + automake, and + libtool and you must execute sh + autogen.sh in the top source directory before running + configure.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.INSTALL.html b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.INSTALL.html new file mode 100644 index 00000000..b9ecb812 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.INSTALL.html @@ -0,0 +1,148 @@ + + + + +Installation - - Recoll user manual

Installation

Either type make install or execute + recollinstall + prefix, in the root + of the source tree. This will copy the commands to + prefix/bin + and the sample configuration files, scripts and other shared + data to + prefix/share/recoll.

If the installation prefix given to + recollinstall is different from either the + system default or the value which was + specified when executing configure (as in + configure --prefix /some/path), you + will have to set the RECOLL_DATADIR + environment variable to indicate where the shared data is to + be found (ie for (ba)sh: + export RECOLL_DATADIR=/some/path/share/recoll). +

You can then proceed to configuration.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.PREREQS.html b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.PREREQS.html new file mode 100644 index 00000000..3d4d762f --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.PREREQS.html @@ -0,0 +1,169 @@ + + + + +Prerequisites - - Recoll user manual

Prerequisites

If you can install any or all of the following through + the package manager for your system, all the + better. Especially Qt is a very + big piece of software, but you will most probably be able to + find a binary package.

You may have to compile Xapian but this is easy.

The shopping list:

  • The autoconf, + automake and libtool + triad. Only autoconf is needed up to Recoll + 1.21.

  • C++ compiler. Up to Recoll version 1.13.04, + its absence can manifest itself by strange messages + about a missing iconv_open.

  • bison command (for Recoll 1.21 + and later).

  • xsltproc command. For building + the documentation (for Recoll 1.21 + and later). This sometimes comes with the + libxslt package. And also the Docbook XML and + style sheet files.

  • Development files + for Xapian + core.

    Important

    If you are + building Xapian for an older CPU (before Pentium 4 or Athlon + 64), you need to add the --disable-sse flag + to the configure command. Else all Xapian application will + crash with an illegal instruction + error.

  • Development files for + + Qt 4 . Recoll has not been + tested with Qt 5 yet. Recoll 1.15.9 + was the last version to support Qt 3. + If you do not want to install or build + the Qt Webkit module, Recoll + has a configuration option to disable its use (see further). +

  • Development files for X11 and + zlib.

  • Development files for Python + (or use --disable-python-module).

  • You may also need + + libiconv. On Linux + systems, the iconv interface is part of libc and you should not + need to do anything special.

Check the + Recoll download page for up to date version + information.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.html b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.html new file mode 100644 index 00000000..b72a3f6a --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.BUILDING.html @@ -0,0 +1,132 @@ + + + + +Building from source - - Recoll user manual
diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.ENVIR.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.ENVIR.html new file mode 100644 index 00000000..4cc22040 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.ENVIR.html @@ -0,0 +1,150 @@ + + + + +Environment variables - - Recoll user manual

Environment variables

RECOLL_CONFDIR

Defines the main configuration + directory.

RECOLL_TMPDIR, TMPDIR

Locations for temporary files, in this order + of priority. The default if none of these is set is to use + /tmp. Big temporary files may be created + during indexing, mostly for decompressing, and also for + processing, e.g. email attachments.

RECOLL_CONFTOP, RECOLL_CONFMID

Allow adding configuration directories with + priorities below and above the user directory (see above the + Configuration overview section for details).

RECOLL_EXTRA_DBS, + RECOLL_ACTIVE_EXTRA_DBS

+ Help for setting up external indexes. See this paragraph for + explanations. +

RECOLL_DATADIR

Defines replacement for the default location + of Recoll data files, normally found in, e.g., + /usr/share/recoll).

RECOLL_FILTERSDIR

Defines replacement for the default location + of Recoll filters, normally found in, e.g., + /usr/share/recoll/filters).

ASPELL_PROG

aspell program to use for + creating the spelling dictionary. The result has to be + compatible with the libaspell which Recoll + is using.

VARNAME

Blabla

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDINDEX.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDINDEX.html new file mode 100644 index 00000000..d6339c37 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDINDEX.html @@ -0,0 +1,154 @@ + + + + +Adding indexing support for a new file type - - Recoll user manual

Adding indexing support for a new file type

Let us now imagine that the above + .blob files actually contain + indexable text and that you know how to extract it with a + command line program. Getting Recoll to index the files is + easy. You need to perform the above alteration, and also to + add data to the mimeconf file + (typically in ~/.recoll/mimeconf):

  • Under the [index] + section, add the following line (more about the + rclblob indexing script + later):

    +application/x-blobapp = exec rclblob
    +
  • Under the [icons] + section, you should choose an icon to be displayed for the + files inside the result lists. Icons are normally 64x64 + pixels PNG files which live in + /usr/share/recoll/images.

  • Under the [categories] + section, you should add the MIME type where it makes sense + (you can also create a category). Categories may be used + for filtering in advanced search.

The rclblob handler should + be an executable program or script which exists inside + /usr/share/recoll/filters. It + will be given a file name as argument and should output the + text or html contents on the standard output.

The filter + programming section describes in more detail how + to write an input handler.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDVIEW.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDVIEW.html new file mode 100644 index 00000000..d10e506e --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.ADDVIEW.html @@ -0,0 +1,157 @@ + + + + +Adding an external viewer for an non-indexed type - - Recoll user manual

Adding an external viewer for an non-indexed type

Imagine that you have some kind of file which does not + have indexable content, but for which you would like to have a + functional Open link in the result list + (when found by file name). The file names end in + .blob and can be displayed by + application blobviewer.

You need two entries in the configuration files for this + to work:

  • In $RECOLL_CONFDIR/mimemap + (typically ~/.recoll/mimemap), add the + following line:

    +.blob = application/x-blobapp
    +

    + Note that the MIME type is made up here, and you could + call it diesel/oil just the + same.

  • In $RECOLL_CONFDIR/mimeview + under the [view] section, add:

    +application/x-blobapp = blobviewer %f
    +

    We are supposing + that blobviewer wants a file + name parameter here, you would use %u if + it liked URLs better.

If you just wanted to change the application used by + Recoll to display a MIME type which it already knows, you + would just need to edit mimeview. The + entries you add in your personal file override those in the + central configuration, which you do not need to + alter. mimeview can also be modified + from the Gui.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.html new file mode 100644 index 00000000..d30c4a78 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.EXAMPLES.html @@ -0,0 +1,132 @@ + + + + +Examples of configuration adjustments - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.XATTR.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.XATTR.html new file mode 100644 index 00000000..dd4300c2 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.XATTR.html @@ -0,0 +1,139 @@ + + + + +Extended attributes in the fields file - - Recoll user manual

Extended attributes in the fields file

Recoll versions 1.19 and later process user extended + file attributes as documents fields by default.

Attributes are processed as fields of the same name, + after removing the user prefix on + Linux.

The [xattrtofields] + section of the fields file allows + specifying translations from extended attributes names to + Recoll field names. An empty translation disables use of the + corresponding attribute data.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.html new file mode 100644 index 00000000..ce9904e5 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.FIELDS.html @@ -0,0 +1,181 @@ + + + + +The fields file - - Recoll user manual

The fields file

This file contains information about dynamic fields handling + in Recoll. Some very basic fields have hard-wired behaviour, + and, mostly, you should not change the original data inside the + fields file. But you can create custom fields + fitting your data and handle them just like they were native + ones.

The fields file has several sections, + which each define an aspect of fields processing. Quite often, + you'll have to modify several sections to obtain the desired + behaviour.

We will only give a short description here, you should refer + to the comments inside the default file for more detailed + information.

Field names should be lowercase alphabetic ASCII.

[prefixes]

A field becomes indexed (searchable) by having + a prefix defined in this section.

[stored]

A field becomes stored (displayable inside + results) by having its name listed in this section (typically + with an empty value).

[aliases]

This section defines lists of synonyms for the + canonical names used inside the [prefixes] + and [stored] sections

[queryaliases]

This section also defines aliases for the + canonic field names, with the difference that the substitution + will only be used at query time, avoiding any possibility that + the value would pick-up random metadata from documents.

handler-specific sections

Some input handlers may need specific + configuration for handling fields. Only the email message handler + currently has such a section (named + [mail]). It allows indexing arbitrary email + headers in addition to the ones indexed by default. Other such + sections may appear in the future.

Here follows a small example of a personal + fields + file. This would extract a specific email header and + use it as a searchable field, with data displayable inside result + lists. (Side note: as the email handler does no decoding on the values, + only plain ascii headers can be indexed, and only the + first occurrence will be used for headers that occur several times). + +

[prefixes]
+# Index mailmytag contents (with the given prefix)
+mailmytag = XMTAG
+
+[stored]
+# Store mailmytag inside the document data record (so that it can be
+# displayed - as %(mailmytag) - in result lists).
+mailmytag = 
+
+[queryaliases]
+filename = fn
+containerfilename = cfn
+
+[mail]
+# Extract the X-My-Tag mail header, and use it internally with the
+# mailmytag field name
+x-my-tag = mailmytag
+

+

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMECONF.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMECONF.html new file mode 100644 index 00000000..5fdbe590 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMECONF.html @@ -0,0 +1,140 @@ + + + + +The mimeconf file - - Recoll user manual

The mimeconf file

mimeconf specifies how the + different MIME types are handled for indexing, and which icons + are displayed in the recoll result lists.

Changing the parameters in the [index] section is + probably not a good idea except if you are a Recoll + developer.

The [icons] section allows you to change the icons which + are displayed by recoll in the result + lists (the values are the basenames of the png images inside + the iconsdir directory (specified in + recoll.conf).

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEMAP.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEMAP.html new file mode 100644 index 00000000..7f796995 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEMAP.html @@ -0,0 +1,149 @@ + + + + +The mimemap file - - Recoll user manual

The mimemap file

mimemap specifies the + file name extension to MIME type mappings.

For file names without an extension, or with an unknown + one, the system's file -i + command will be + executed to determine the MIME type (this can be switched off + inside the main configuration file).

The mappings can be specified on a per-subtree basis, + which may be useful in some cases. Example: + gaim logs have a + .txt extension but + should be handled specially, which is possible because they + are usually all located in one place.

The recoll_noindex + mimemap variable has been moved to + recoll.conf and renamed to + noContentSuffixes, while keeping the same + function, as of Recoll version 1.21. For older Recoll versions, + see the documentation for noContentSuffixes + but use recoll_noindex in + mimemap.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEVIEW.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEVIEW.html new file mode 100644 index 00000000..f5b045f1 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.MIMEVIEW.html @@ -0,0 +1,182 @@ + + + + +The mimeview file - - Recoll user manual

The mimeview file

mimeview specifies which programs + are started when you click on an Open link + in a result list. Ie: HTML is normally displayed using + firefox, but you may prefer + Konqueror, your + openoffice.org + program might be named oofice instead of + openoffice etc.

Changes to this file can be done by direct editing, or + through the recoll GUI preferences dialog.

If Use desktop preferences to choose document + editor is checked in the Recoll GUI preferences, all + mimeview entries will be ignored except the + one labelled application/x-all (which is set to + use xdg-open by default).

In this case, the xallexcepts top level + variable defines a list of MIME type exceptions which + will be processed according to the local entries instead of being + passed to the desktop. This is so that specific Recoll options + such as a page number or a search string can be passed to + applications that support them, such as the + evince viewer.

As for the other configuration files, the normal usage + is to have a mimeview inside your own + configuration directory, with just the non-default entries, + which will override those from the central configuration + file.

All viewer definition entries must be placed under a + [view] section.

The keys in the file are normally MIME types. You can add an + application tag to specialize the choice for an area of the + filesystem (using a localfields specification + in mimeconf). The syntax for the key is +mimetype|tag

The nouncompforviewmts entry, (placed at + the top level, outside of the [view] section), + holds a list of MIME types that should not be uncompressed before + starting the viewer (if they are found compressed, ie: + mydoc.doc.gz).

The right side of each assignment holds a command to be + executed for opening the file. The following substitutions are + performed:

  • %D. Document date

  • %f. File name. This may be the name of a temporary file if + it was necessary to create one (ie: to extract a subdocument + from a container).

  • %i. Internal path, for subdocuments of containers. The + format depends on the container type. If this appears in the + command line, Recoll will not create a temporary file to + extract the subdocument, expecting the called application + (possibly a script) to be able to handle it.

  • %M. MIME type

  • %p. Page index. Only significant for a subset of document + types, currently only PDF, Postscript and DVI files. Can be + used to start the editor at the right page for a match or + snippet.

  • %s. Search term. The value will only be set for documents + with indexed page numbers (ie: PDF). The value will be one of + the matched search terms. It would allow pre-setting the + value in the "Find" entry inside Evince for example, for easy + highlighting of the term.

  • %u. Url.

In addition to the predefined values above, all strings like + %(fieldname) will be replaced by the value of + the field named fieldname for the + document. This could be used in combination with field + customisation to help with opening the document.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.PTRANS.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.PTRANS.html new file mode 100644 index 00000000..392cae0b --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.PTRANS.html @@ -0,0 +1,147 @@ + + + + +The ptrans file - - Recoll user manual

The ptrans file

ptrans specifies query-time path + translations. These can be useful + in multiple + cases.

The file has a section for any index which needs + translations, either the main one or additional query + indexes. The sections are named with the Xapian index + directory names. No slash character should exist at the end + of the paths (all comparisons are textual). An exemple + should make things sufficiently clear

+          [/home/me/.recoll/xapiandb]
+          /this/directory/moved = /to/this/place
+
+          [/path/to/additional/xapiandb]
+          /server/volume1/docdir = /net/server/volume1/docdir
+          /server/volume2/docdir = /net/server/volume2/docdir
+        
diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.FILES.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.FILES.html new file mode 100644 index 00000000..26b50c51 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.FILES.html @@ -0,0 +1,247 @@ + + + + +Parameters affecting what documents we index: - - Recoll user manual

Parameters affecting what documents we index:

topdirs

Specifies the list of directories or files to + index (recursively for directories). You can use symbolic links + as elements of this list. See the + followLinks option about following symbolic links + found under the top elements (not followed by default).

skippedNames

A space-separated list of wilcard patterns for + names of files or directories that should be completely + ignored. The list defined in the default file is:

+skippedNames = #* bin CVS  Cache cache* caughtspam  tmp .thumbnails .svn \
+ 	       *~ .beagle .git .hg .bzr loop.ps .xsession-errors \
+	       .recoll* xapiandb recollrc recoll.conf 
+

The list can be redefined at any sub-directory in the + indexed area.

The top-level directories are not affected by this + list (that is, a directory in topdirs + might match and would still be indexed).

The list in the default configuration does not + exclude hidden directories (names beginning with a + dot), which means that it may index quite a few things + that you do not want. On the other hand, email user + agents like thunderbird + usually store messages in hidden directories, and you + probably want this indexed. One possible solution is to + have .* in + skippedNames, and add things like + ~/.thunderbird or + ~/.evolution in + topdirs.

Not even the file names are indexed for patterns + in this list. See the + noContentSuffixes variable for an alternative + approach which indexes the file names.

noContentSuffixes

This is a list of file name endings (not + wildcard expressions, nor dot-delimited suffixes). Only the + names of matching files will be indexed (no attempt at MIME + type identification, no decompression, no content + indexing). This can be redefined for + subdirectories, and edited from the GUI. The default value is: +

+noContentSuffixes = .md5 .map \
+       .o .lib .dll .a .sys .exe .com \
+       .mpp .mpt .vsd \
+	   .img .img.gz .img.bz2 .img.xz .image .image.gz .image.bz2 .image.xz \
+       .dat .bak .rdf .log.gz .log .db .msf .pid \
+       ,v ~ #
+

+

skippedPaths and + daemSkippedPaths

A space-separated list of patterns for + paths of files or directories that should be skipped. + There is no default in the sample configuration file, + but the code always adds the configuration and database + directories in there.

skippedPaths is used both by + batch and real time + indexing. daemSkippedPaths can be + used to specify things that should be indexed at + startup, but not monitored.

Example of use for skipping text files only in a + specific directory:

+skippedPaths = ~/somedir/*.txt
+              
skippedPathsFnmPathname

The values in the + *skippedPaths variables are matched by + default with fnmatch(3), with the + FNM_PATHNAME flag. This means that '/' + characters must be matched explicitely. You can set + skippedPathsFnmPathname to 0 to disable + the use of FNM_PATHNAME (meaning that /*/dir3 will match + /dir1/dir2/dir3).

zipSkippedNames

A space-separated list of patterns for + names of files or directories that should be ignored + inside zip archives. This is used directly by the zip + handler, and has a function similar to skippedNames, but + works independantly. Can be redefined for filesystem + subdirectories. For versions up to 1.19, you will need + to update the Zip handler and install a supplementary + Python module. The details are + described on + the Recoll wiki. +

followLinks

Specifies if the indexer should follow + symbolic links while walking the file tree. The default is + to ignore symbolic links to avoid multiple indexing of + linked files. No effort is made to avoid duplication when + this option is set to true. This option can be set + individually for each of the topdirs + members by using sections. It can not be changed below the + topdirs level.

indexedmimetypes

Recoll normally indexes any file which it + knows how to read. This list lets you restrict the indexed + MIME types to what you specify. If the variable is + unspecified or the list empty (the default), all supported + types are processed. Can be redefined for subdirectories.

excludedmimetypes

This list lets you exclude some MIME types from + indexing. Can be redefined for subdirectories.

compressedfilemaxkbs

Size limit for compressed (.gz or .bz2) + files. These need to be decompressed in a temporary + directory for identification, which can be very wasteful + if 'uninteresting' big compressed files are present. + Negative means no limit, 0 means no processing of any + compressed file. Defaults to -1.

textfilemaxmbs

Maximum size for text files. Very big text + files are often uninteresting logs. Set to -1 to disable + (default 20MB).

textfilepagekbs

If set to other than -1, text files will be + indexed as multiple documents of the given page size. This may + be useful if you do want to index very big text files as it + will both reduce memory usage at index time and help with + loading data to the preview window. A size of a few megabytes + would seem reasonable (default: 1MB).

membermaxkbs

This defines the maximum size in kilobytes for + an archive member (zip, tar or rar at the moment). Bigger + entries will be skipped.

indexallfilenames

Recoll indexes file names in a special + section of the database to allow specific file names + searches using wild cards. This parameter decides if + file name indexing is performed only for files with MIME + types that would qualify them for full text indexing, or + for all files inside the selected subtrees, independently of + MIME type.

usesystemfilecommand

Decide if we execute a system command + (file -i by default) + as a final step for determining the MIME type for a file + (the main procedure uses suffix associations as defined in + the mimemap file). This can be useful + for files with suffix-less names, but it will also cause + the indexing of many bogus "text" files.

systemfilecommand

Command to use for mime for mime type + determination if usesystefilecommand is + set. Recent versions of xdg-mime sometimes + work better than file.

processwebqueue

If this is set, process the directory where + Web browser plugins copy visited pages for indexing.

webqueuedir

The path to the web indexing queue. This is + hard-coded in the Firefox plugin as + ~/.recollweb/ToIndex so there should be no + need to change it.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.IDXTHREADS.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.IDXTHREADS.html new file mode 100644 index 00000000..ebed71dd --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.IDXTHREADS.html @@ -0,0 +1,189 @@ + + + + +Parameters affecting multithread processing - - Recoll user manual

Parameters affecting multithread processing

The Recoll indexing process + recollindex can use multiple threads to + speed up indexing on multiprocessor systems. The work done + to index files is divided in several stages and some of the + stages can be executed by multiple threads. The stages are: +

  1. File system walking: this is always performed by + the main thread.
  2. File conversion and data extraction.
  3. Text processing (splitting, stemming, + etc.)
  4. Xapian index update.

+

You can also read a + + longer document about the transformation of + Recoll indexing to multithreading.

The threads configuration is controlled by two + configuration file parameters.

thrQSizes

This variable defines the job input queues + configuration. There are three possible queues for + stages 2, 3 and 4, and this parameter should give the + queue depth for each stage (three integer values). If + a value of -1 is used for a given stage, no queue is + used, and the thread will go on performing the next + stage. In practise, deep queues have not been shown to + increase performance. A value of 0 for the first queue + tells Recoll to perform autoconfiguration (no need for + the two other values in this case) - this is the + default configuration.

thrTCounts

This defines the number of threads used + for each stage. If a value of -1 is used for one of + the queue depths, the corresponding thread count is + ignored. It makes no sense to use a value other than 1 + for the last stage because updating the Xapian index is + necessarily single-threaded (and protected by a + mutex).

The following example would use three queues (of depth 2), + and 4 threads for converting source documents, 2 for + processing their text, and one to update the index. This was + tested to be the best configuration on the test system + (quadri-processor with multiple disks). +

+thrQSizes = 2 2 2
+thrTCounts =  4 2 1
+

+

The following example would use a single queue, and the + complete processing for each document would be performed by + a single thread (several documents will still be processed + in parallel in most cases). The threads will use mutual + exclusion when entering the index update stage. In practise + the performance would be close to the precedent case in + general, but worse in certain cases (e.g. a Zip archive + would be performed purely sequentially), so the previous + approach is preferred. YMMV... The 2 last values for + thrTCounts are ignored. +

+thrQSizes = 2 -1 -1
+thrTCounts =  6 1 1
+

+

The following example would disable + multithreading. Indexing will be performed by a single + thread. +

+thrQSizes = -1 -1 -1
+

+

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.MISC.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.MISC.html new file mode 100644 index 00000000..ca7a1e20 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.MISC.html @@ -0,0 +1,226 @@ + + + + +Miscellaneous parameters: - - Recoll user manual

Miscellaneous parameters:

autodiacsens

IF the index is not stripped, decide if we + automatically trigger diacritics sensitivity if the search + term has accented characters (not in + unac_except_trans). Else you need to use + the query language and the D modifier to + specify diacritics sensitivity. Default is no.

autocasesens

IF the index is not stripped, decide if we + automatically trigger character case sensitivity if the + search term has upper-case characters in any but the first + position. Else you need to use the query language and the + C modifier to specify character-case + sensitivity. Default is yes.

loglevel,daemloglevel

Verbosity level for recoll and + recollindex. A value of 4 lists quite a lot of + debug/information messages. 2 only lists errors. The + daemversion is specific to the indexing monitor + daemon.

logfilename, + daemlogfilename

Where the messages should go. 'stderr' can + be used as a special value, and is the default. The + daemversion is specific to the indexing monitor + daemon.

checkneedretryindexscript

This defines the name for a command + executed by recollindex when starting + indexing. If the exit status of the command is 0, + recollindex retries to index all files + which previously could not be indexed because of data + extraction errors. The default value is a script which + checks if any of the common bin + directories have changed (indicating that a helper program + may have been installed).

mondelaypatterns

This allows specify wildcard path patterns + (processed with fnmatch(3) with 0 flag), to match files which + change too often and for which a delay should be observed before + re-indexing. This is a space-separated list, each entry being a + pattern and a time in seconds, separated by a colon. You can + use double quotes if a path entry contains white + space. Example:

+mondelaypatterns = *.log:20 "this one has spaces*:10"
+              
monixinterval

Minimum interval (seconds) for processing the + indexing queue. The real time monitor does not process each + event when it comes in, but will wait this time for the queue + to accumulate to diminish overhead and in order to aggregate + multiple events to the same file. Default 30 S.

monauxinterval

Period (in seconds) at which the real time + monitor will regenerate the auxiliary databases (spelling, + stemming) if needed. The default is one hour.

monioniceclass, monioniceclassdata +

These allow defining the + ionice class and data used by the + indexer (default class 3, no data).

filtermaxseconds

Maximum handler execution time, after which it + is aborted. Some postscript programs just loop...

filtermaxmbytes

Recoll 1.20.7 and later. Maximum handler memory + utilisation. This uses setrlimit(RLIMIT_AS) on most systems + (total virtual memory space size limit). Some programs may start + with 500 MBytes of mapped shared libraries, so take this into + account when choosing a value. The default is a liberal + 2000MB.

filtersdir

A directory to search for the external + input handler scripts used to index some types of files. The + value should not be changed, except if you want to modify + one of the default scripts. The value can be redefined for + any sub-directory.

iconsdir

The name of the directory where + recoll result list icons are + stored. You can change this if you want different + images.

idxabsmlen

Recoll stores an abstract for each indexed + file inside the database. The text can come from an actual + 'abstract' section in the document or will just be the + beginning of the document. It is stored in the index so + that it can be displayed inside the result lists without + decoding the original + file. The idxabsmlen parameter defines + the size of the stored abstract. The default value is 250 bytes. + The search interface gives you the choice to display this + stored text or a synthetic abstract built by extracting + text around the search terms. If you always + prefer the synthetic abstract, you can reduce this value + and save a little space. +

idxmetastoredlen

Maximum stored length for metadata + fields. This does not affect indexing (the whole field is + processed anyway), just the amount of data stored in the + index for the purpose of displaying fields inside result + lists or previews. The default value is 150 bytes which + may be too low if you have custom fields.

aspellLanguage

Language definitions to use when creating + the aspell dictionary. The value must match a set of + aspell language definition files. You can type "aspell + config" to see where these are installed (look for + data-dir). The default if the variable is not set is to + use your desktop national language environment to guess + the value.

noaspell

If this is set, the aspell dictionary + generation is turned off. Useful for cases where you don't + need the functionality or when it is unusable because + aspell crashes during dictionary generation.

mhmboxquirks

This allows definining location-related quirks + for the mailbox handler. Currently only the + tbird flag is defined, and it should be set + for directories which hold + Thunderbird data, as their folder + format is weird. Example: +

[/path/to/my/mozilla/mail] 
+mhmboxquirks = tbird

+ It should be noted that later Recoll + versions have improved automatic detection of + Thunderbird folders, so that this + should not be needed at all in most cases.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.STORAGE.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.STORAGE.html new file mode 100644 index 00000000..0d506efd --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.STORAGE.html @@ -0,0 +1,164 @@ + + + + +Parameters affecting where and how we store things: - - Recoll user manual

Parameters affecting where and how we store things:

dbdir

The name of the Xapian data directory. It + will be created if needed when the index is + initialized. If this is not an absolute path, it will be + interpreted relative to the configuration directory. The + value can have embedded spaces but starting or trailing + spaces will be trimmed. You cannot use quotes here.

idxstatusfile

The name of the scratch file where the indexer + process updates its status. Default: + idxstatus.txt inside the configuration + directory.

maxfsoccuppc

Maximum file system occupation before we + stop indexing. The value is a percentage, corresponding to + what the "Capacity" df output column shows. The default + value is 0, meaning no checking.

mboxcachedir

The directory where mbox message offsets cache + files are held. This is normally $RECOLL_CONFDIR/mboxcache, but + it may be useful to share a directory between different + configurations.

mboxcacheminmbs

The minimum mbox file size over which we + cache the offsets. There is really no sense in caching + offsets for small files. The default is 5 MB.

webcachedir

This is only used by the web browser + plugin indexing code, and defines where the cache for visited + pages will live. Default: + $RECOLL_CONFDIR/webcache

webcachemaxmbs

This is only used by the web browser + plugin indexing code, and defines the maximum size for the web + page cache. Default: 40 MB. Quite unfortunately, this is only + taken into account when creating the cache file. You need to + delete the file for a change to be taken into account.

idxflushmb

Threshold (megabytes of new text data) where we + flush from memory to disk index. Setting this can help control + memory usage. A value of 0 means no explicit flushing, letting + Xapian use its own default, which is flushing every 10000 (or + XAPIAN_FLUSH_THRESHOLD) documents, which gives little memory + usage control, as memory usage also depends on average document + size. The default value is 10, and it is probably a bit low. If + your system usually has free memory, you can try higher values + between 20 and 80. In my experience, values beyond 100 are + always counterproductive.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.TERMS.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.TERMS.html new file mode 100644 index 00000000..147c4134 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.TERMS.html @@ -0,0 +1,271 @@ + + + + +Parameters affecting how we generate terms: - - Recoll user manual

Parameters affecting how we generate terms:

Changing some of these parameters will imply a full + reindex. Also, when using multiple indexes, it may not make sense + to search indexes that don't share the values for these parameters, + because they usually affect both search and index operations.

indexStripChars

Decide if we strip characters of diacritics and + convert them to lower-case before terms are indexed. If we + don't, searches sensitive to case and diacritics can be + performed, but the index will be bigger, and some marginal + weirdness may sometimes occur. The default is a stripped + index (indexStripChars = 1) for + now. When using multiple indexes for a search, + this parameter must be defined identically for + all. Changing the value implies an index reset.

maxTermExpand

Maximum expansion count for a single term (e.g.: + when using wildcards). The default of 10000 is reasonable and + will avoid queries that appear frozen while the engine is + walking the term list.

maxXapianClauses

Maximum number of elementary clauses we can add + to a single Xapian query. In some cases, the result of term + expansion can be multiplicative, and we want to avoid using + excessive memory. The default of 100 000 should be both + high enough in most cases and compatible with current + typical hardware configurations.

nonumbers

If this set to true, no terms will be generated + for numbers. For example "123", "1.5e6", 192.168.1.4, would not + be indexed ("value123" would still be). Numbers are often quite + interesting to search for, and this should probably not be set + except for special situations, ie, scientific documents with huge + amounts of numbers in them. This can only be set for a whole + index, not for a subtree.

dehyphenate

Determines if, given an input of + co-worker, we add a term for + coworker. This possibility is new in version + 1.22, and on by default. Setting the variable to off allows + restoring the previous behaviour.

nocjk

If this set to true, specific east asian + (Chinese Korean Japanese) characters/word splitting is + turned off. This will save a small amount of cpu if you + have no CJK documents. If your document base does include + such text but you are not interested in searching it, + setting nocjk may be a significant time + and space saver.

cjkngramlen

This lets you adjust the size of n-grams + used for indexing CJK text. The default value of 2 is + probably appropriate in most cases. A value of 3 would + allow more precision and efficiency on longer words, but + the index will be approximately twice as large.

indexstemminglanguages

A list of languages for which the stem + expansion databases will be built. See recollindex(1) or use the + recollindex -l command + for possible values. You can add a stem expansion database + for a different language by using + recollindex -s, but it + will be deleted during the next indexing. Only languages + listed in the configuration file are permanent.

defaultcharset

The name of the character set used for + files that do not contain a character set definition (ie: + plain text files). This can be redefined for any + sub-directory. If it is not set at all, the character set + used is the one defined by the nls environment ( + LC_ALL, LC_CTYPE, + LANG), or iso8859-1 + if nothing is set.

unac_except_trans

This is a list of characters, encoded in UTF-8, + which should be handled specially when converting text to + unaccented lowercase. For example, in Swedish, the letter + a with diaeresis has full alphabet + citizenship and should not be turned into an + a. Each element in the space-separated list + has the special character as first element and the translation + following. The handling of both the lowercase and upper-case + versions of a character should be specified, as appartenance to + the list will turn-off both standard accent and case + processing. Example for Swedish:

+unac_except_trans =  åå Åå ää Ää öö Öö
+            

Note that the translation is not limited to a single + character, you could very well have something like + üue in the list.

The default value set for + unac_except_trans can't be listed here + because I have trouble with SGML and UTF-8, but it only + contains ligature decompositions: german ss, oe, ae, fi, + fl.

This parameter can't be defined for subdirectories, it + is global, because there is no way to do otherwise when + querying. If you have document sets which would need different + values, you will have to index and query them separately.

maildefcharset

This can be used to define the default + character set specifically for email messages which don't + specify it. This is mainly useful for readpst (libpst) dumps, + which are utf-8 but do not say so.

localfields

This allows setting fields for all documents + under a given directory. Typical usage would be to set an + "rclaptg" field, to be used in mimeview to + select a specific viewer. If several fields are to be set, they + should be separated with a semi-colon (';') character, which there + is currently no way to escape. Also note the initial semi-colon. + Example: + localfields= ;rclaptg=gnus;other = val, then + select specifier viewer with + mimetype|tag=... in + mimeview.

testmodifusemtime

If true, use mtime instead of default ctime to + determine if a file has been modified (in addition to + size, which is always used). Setting this can reduce + re-indexing on systems where extended attributes are + modified (by some other application), but not indexed + (changing extended attributes only affects + ctime). Notes: +

  • This may prevent detection of change + in some marginal file rename cases (the target would + need to have the same size and + mtime).

  • You should probably also set + noxattrfields to 1 in this case, except if you still + prefer to perform xattr indexing, for example if the + local file update pattern makes it of value (as in + general, there is a risk for pure extended attributes + updates without file modification to go + undetected).

+ Perform a full index reset after changing the value of + this parameter. +

noxattrfields

Recoll versions 1.19 and later + automatically translate file extended attributes into + document fields (to be processed according to the + parameters from the fields + file). Setting this variable to 1 will disable the + behaviour.

metadatacmds

This allows executing external commands + for each file and storing the output in Recoll document + fields. This could be used for example to index + external tag data. The value is a list of field names + and commands, don't forget an initial + semi-colon. Example: +

+[/some/area/of/the/fs]
+metadatacmds = ; tags = tmsu tags %f; otherfield = somecmd -xx %f
+                

+

As a specially disgusting hack brought by + Recoll 1.19.7, if a "field name" begins + with rclmulti, the data returned by + the command is expected to contain multiple field + values, in configuration file format. This allows + setting several fields by executing a single + command. Example: +

+metadatacmds = ; rclmulti1 = somecmd %f
+                

+ If somecmd returns data in the form + of: +

+field1 = value1
+field2 = value for field2
+                

+ field1 + and field2 will be set inside the + document metadata.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.html new file mode 100644 index 00000000..f47d2c26 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.RECOLLCONF.html @@ -0,0 +1,144 @@ + + + + +The main configuration file, recoll.conf - - Recoll user manual

The main configuration file, recoll.conf

recoll.conf is the main + configuration file. It defines things like + what to index (top directories and things to ignore), and the + default character set to use for document types which do not + specify it internally.

The default configuration will index your home + directory. If this is not appropriate, start + recoll to create a blank + configuration, click Cancel, and edit + the configuration file before restarting the command. This + will start the initial indexing, which may take some time.

Most of the following parameters can be changed from the + Index Configuration menu in the + recoll interface. Some can only be set by + editing the configuration file.

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.html b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.html new file mode 100644 index 00000000..d13c8f28 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.CONFIG.html @@ -0,0 +1,231 @@ + + + + +Configuration overview - - Recoll user manual

Configuration overview

Most of the parameters specific to the + recoll GUI are set through the + Preferences menu and stored in the standard Qt + place ($HOME/.config/Recoll.org/recoll.conf). + You probably do not want to edit this by hand.

Recoll indexing options are set inside text configuration + files located in a configuration directory. There can be + several such directories, each of which defines the parameters + for one index.

The configuration files can be edited by hand or through + the Index configuration dialog + (Preferences menu). The GUI tool will try + to respect your formatting and comments as much as possible, + so it is quite possible to use both approaches on the same + configuration.

The most accurate documentation for the + configuration parameters is given by comments inside the default + files, and we will just give a general overview here.

For each index, there are at least two sets of + configuration files. System-wide configuration files are kept + in a directory named + like /usr/share/recoll/examples, + and define default values, shared by all indexes. For each + index, a parallel set of files defines the customized + parameters.

The default location of the customized configuration is the + .recoll + directory in your home. Most people will only use this + directory.

This location can be changed, or others can be added with the + RECOLL_CONFDIR environment variable or the + -c option parameter to recoll and + recollindex.

In addition (as of Recoll version 1.19.7), it is possible + to specify two additional configuration directories which will + be stacked before and after the user configuration + directory. These are defined by + the RECOLL_CONFTOP + and RECOLL_CONFMID environment + variables. Values from configuration files inside the top + directory will override user ones, values from configuration + files inside the middle directory will override system ones + and be overriden by user ones. These two variables may be of + use to applications which augment Recoll functionality, and + need to add configuration data without disturbing the user's + files. Please note that the two, currently single, values will + probably be interpreted as colon-separated lists in the + future: do not use colon characters inside the directory + paths.

If the .recoll directory does not + exist when recoll or + recollindex are started, it will be created + with a set of empty configuration files. + recoll will give you a chance to edit the + configuration file before starting + indexing. recollindex will proceed + immediately. To avoid mistakes, the automatic directory + creation will only occur for the + default location, not if -c or + RECOLL_CONFDIR were used (in the latter + cases, you will have to create the directory).

All configuration files share the same format. For + example, a short extract of the main configuration file might + look as follows:

+        # Space-separated list of directories to index.
+        topdirs =  ~/docs /usr/share/doc
+
+        [~/somedirectory-with-utf8-txt-files]
+        defaultcharset = utf-8
+        

There are three kinds of lines:

  • Comment (starts with + #) or empty.

  • Parameter affectation (name = + value).

  • Section definition + ([somedirname]).

Long lines can be broken by ending each incomplete part with + a backslash (\).

Depending on the type of configuration file, section + definitions either separate groups of parameters or allow + redefining some parameters for a directory sub-tree. They stay + in effect until another section definition, or the end of + file, is encountered. Some of the parameters used for indexing + are looked up hierarchically from the current directory + location upwards. Not all parameters can be meaningfully + redefined, this is specified for each in the next + section.

When found at the beginning of a file path, the tilde + character (~) is expanded to the name of the user's home + directory, as a shell would do.

Some parameters are lists of strings. White space is used for + separation. List elements with embedded spaces can be quoted using + double-quotes. Double quotes inside these elements can be escaped + with a backslash.

No value inside a configuration file can contain a newline + character. Long lines can be continued by escaping the + physical newline with backslash, even inside quoted strings.

+astringlist =  "some string \
+with spaces"
+thesame = "some string with spaces"        
+        

Parameters which are not part of string lists can't be + quoted, and leading and trailing space characters are + stripped before the value is used.

Encoding issues. Most of the configuration parameters are plain ASCII. Two + particular sets of values may cause encoding issues:

+

  • File path parameters may contain non-ascii + characters and should use the exact same byte values as found in + the file system directory. Usually, this means that the + configuration file should use the system default locale + encoding.

  • The unac_except_trans parameter + should be encoded in UTF-8. If your system locale is not UTF-8, and + you need to also specify non-ascii file paths, this poses a + difficulty because common text editors cannot handle multiple + encodings in a single file. In this relatively unlikely case, you + can edit the configuration file as two separate text files with + appropriate encodings, and concatenate them to create the complete + configuration.

+

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.EXTERNAL.html b/src/doc/user/webhelp/docs/RCL.INSTALL.EXTERNAL.html new file mode 100644 index 00000000..846f0efc --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.EXTERNAL.html @@ -0,0 +1,212 @@ + + + + +Supporting packages - - Recoll user manual

Supporting packages

Note

The Windows installation of Recoll is self-contained, and + only needs Python 2.7 to be externally installed. Windows users can + skip this section.

Recoll uses external applications to index some file + types. You need to install them for the file types that you wish to + have indexed (these are run-time optional dependencies. None is + needed for building or running Recoll except for indexing their + specific file type).

After an indexing pass, the commands that were found + missing can be displayed from the recoll + File menu. The list is stored in the + missing text file inside the configuration + directory.

A list of common file types which need external + commands follows. Many of the handlers need the + iconv command, which is not always listed as a + dependancy.

Please note that, due to the relatively dynamic nature of this + information, the most up to date version is now kept on http://www.recoll.org/features.html + along with links to the home pages or best source/patches pages, + and misc tips. The list below is not updated often and may be quite + stale.

For many Linux distributions, most of the commands listed can + be installed from the package repositories. However, the packages + are sometimes outdated, or not the best version for Recoll, so you + should take a look at http://www.recoll.org/features.html if a file + type is important to you.

As of Recoll release 1.14, a number of XML-based formats that + were handled by ad hoc handler code now use the + xsltproc command, which usually comes with + libxslt. These are: abiword, fb2 + (ebooks), kword, openoffice, svg.

Now for the list:

  • Openoffice files need unzip and + xsltproc.

  • PDF files need pdftotext + which is part of Poppler (usually + comes with the poppler-utils + package). Avoid the original one from + Xpdf.

  • Postscript files need pstotext. + The original version has an issue with shell + character in file names, which is corrected in recent + packages. See http://www.recoll.org/features.html for more detail.

  • MS Word needs + antiword. It is also useful to have + wvWare installed as it may be + be used as a fallback for some files which + antiword does not handle.

  • MS Excel and PowerPoint are processed by + internal Python handlers.

  • MS Open XML (docx) needs + xsltproc.

  • Wordperfect files need wpd2html + from the libwpd (or + libwpd-tools on Ubuntu) + package.

  • RTF files need unrtf, + which, in its older versions, has much trouble with + non-western character sets. Many Linux distributions carry + outdated unrtf versions. Check + http://www.recoll.org/features.html for details.

  • TeX files need untex or + detex. Check http://www.recoll.org/features.html for sources if it's not + packaged for your distribution.

  • dvi files need dvips.

  • djvu files need djvutxt and + djvused from the + DjVuLibre package.

  • Audio files: Recoll releases 1.14 and later use + a single Python handler based + on mutagen for all audio file + types.

  • Pictures: Recoll uses the + Exiftool + Perl package to extract tag + information. Most image file formats are supported. Note that + there may not be much interest in indexing the technical tags + (image size, aperture, etc.). This is only of interest if you + store personal tags or textual descriptions inside the image + files.

  • chm: files in Microsoft help format need Python and + the pychm module (which needs + chmlib).

  • ICS: up to Recoll 1.13, iCalendar files need + Python + and the icalendar + module. icalendar is not needed for newer + versions, which use internal code.

  • Zip archives need Python + (and the standard zipfile module).

  • Rar archives need + Python, the + rarfile Python module and the + unrar utility.

  • Midi karaoke files need + Python and the + + Midi module

  • Konqueror webarchive format with Python (uses the + Tarfile module).

  • Mimehtml web archive format (support based on + the email handler, which introduces some mild weirdness, but + still usable).

Text, HTML, email folders, and Scribus files are + processed internally. Lyx is used to + index Lyx files. Many handlers need iconv and the + standard sed and awk. +

diff --git a/src/doc/user/webhelp/docs/RCL.INSTALL.html b/src/doc/user/webhelp/docs/RCL.INSTALL.html new file mode 100644 index 00000000..1dbc9c65 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INSTALL.html @@ -0,0 +1,130 @@ + + + + +Installation and configuration - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.INTRODUCTION.RECOLL.html b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.RECOLL.html new file mode 100644 index 00000000..8a1c0b32 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.RECOLL.html @@ -0,0 +1,226 @@ + + + + +Recoll overview - - Recoll user manual

Recoll overview

Recoll uses the + Xapian information retrieval + library as its storage and retrieval engine. Xapian is a very + mature package using a sophisticated + probabilistic ranking model.

The Xapian library manages an index database which + describes where terms appear in your document files. It + efficiently processes the complex queries which are produced by + the Recoll query expansion mechanism, and is in charge of the + all-important relevance computation task.

Recoll provides the mechanisms and interface to get data + into and out of the index. This includes translating the many + possible document formats into pure text, handling term + variations (using Xapian stemmers), and spelling approximations + (using the aspell speller), + interpreting user queries and presenting results.

In a shorter way, Recoll does the dirty footwork, Xapian + deals with the intelligent parts of the process.

The Xapian index can be big (roughly the size of the + original document set), but it is not a document + archive. Recoll can only display documents that still exist at + the place from which they were indexed. (Actually, there is a + way to reconstruct a document from the information in the + index, but the result is not nice, as all formatting, + punctuation and capitalization are lost).

Recoll stores all internal data in Unicode + UTF-8 format, and it can index files of many types + with different character sets, encodings, and languages into the + same index. It can process documents embedded inside other + documents (for example a pdf document stored inside a Zip + archive sent as an email attachment...), down to an arbitrary + depth.

Stemming is the process by which Recoll reduces words to + their radicals so that searching does not depend, for example, on a + word being singular or plural (floor, floors), or on a verb tense + (flooring, floored). Because the mechanisms used for stemming + depend on the specific grammatical rules for each language, there + is a separate Xapian stemmer module for most common languages where + stemming makes sense.

Recoll stores the unstemmed versions of terms in the main index + and uses auxiliary databases for term expansion (one for each + stemming language), which means that you can switch stemming + languages between searches, or add a language without needing a + full reindex.

Storing documents written in different languages in the same + index is possible, and commonly done. In this situation, you can + specify several stemming languages for the index.

Recoll currently makes no attempt at automatic language + recognition, which means that the stemmer will sometimes be applied + to terms from other languages with potentially strange results. In + practise, even if this introduces possibilities of confusion, this + approach has been proven quite useful, and it is much less + cumbersome than separating your documents according to what + language they are written in.

By default, Recoll strips most accents and + diacritics from terms, and converts them to lower case before + either storing them in the index or searching for them. As a + consequence, it is impossible to search for a particular + capitalization of a term (US / + us), or to discriminate two terms based on + diacritics (sake / saké, + mate / maté).

Recoll versions 1.18 and newer can optionally store the raw + terms, without accent stripping or case conversion. In this + configuration, default searches will behave as before, but it is + possible to perform searches sensitive to case and + diacritics. This is described in more detail + in the section about index + case and diacritics sensitivity.

Recoll has many parameters which define exactly what to + index, and how to classify and decode the source + documents. These are kept in configuration files. A + default configuration is copied into a standard location + (usually something like + /usr/share/recoll/examples) + during installation. The default values set by the + configuration files in this directory may be overridden by + values set inside your personal configuration, found + by default in the .recoll sub-directory + of your home directory. The default configuration will index + your home directory with default parameters and should be + sufficient for giving Recoll a try, but you may want to adjust + it later, which can be done either by editing the text files + or by using configuration menus in the + recoll GUI. Some other parameters affecting only + the recoll GUI are stored in the standard + location defined by Qt.

The indexing + process is started automatically the first time you + execute the recoll GUI. Indexing can also + be performed by executing the recollindex + command. Recoll indexing is multithreaded by default when + appropriate hardware resources are available, and can perform + in parallel multiple tasks among text extraction, segmentation + and index updates.

Searches are usually + performed inside the recoll GUI, which has many + options to help you find what you are looking for. However, there + are other ways to perform Recoll searches: mostly a + command line interface, a + + Python + programming interface, a + KDE KIO slave module, and + Ubuntu Unity + Lens (for older versions) or + + Scope (for current versions) modules. +

diff --git a/src/doc/user/webhelp/docs/RCL.INTRODUCTION.SEARCH.html b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.SEARCH.html new file mode 100644 index 00000000..76e0cbbe --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.SEARCH.html @@ -0,0 +1,162 @@ + + + + +Full text search - - Recoll user manual

Full text search

Recoll is a full text search application, which means that it + finds your data by content rather than by external attributes + (like the file name). You specify words + (terms) which should or should not appear in the text you are + looking for, and receive in return a list of matching + documents, ordered so that the most + relevant documents will appear + first.

You do not need to remember in what file or email message you + stored a given piece of information. You just ask for related + terms, and the tool will return a list of documents where + these terms are prominent, in a similar way to Internet search + engines.

Full text search applications try to determine which + documents are most relevant to the search terms you + provide. Computer algorithms for determining relevance can be + very complex, and in general are inferior to the power of the + human mind to rapidly determine relevance. The quality of + relevance guessing is probably the most important aspect when + evaluating a search application.

In many cases, you are looking for all the forms of a + word, including plurals, different tenses for a verb, or terms + derived from the same root or stem + (example: floor, floors, floored, + flooring...). Queries are usually automatically + expanded to all such related terms (words that reduce to the + same stem). This can be prevented for searching for a specific + form.

Stemming, by itself, does not accommodate for misspellings + or phonetic searches. A full text search application may also + support this form of approximation. For example, a search for + aliterattion returning no result may + propose, depending on index contents, alliteration + alteration alterations altercation as possible + replacement terms.

diff --git a/src/doc/user/webhelp/docs/RCL.INTRODUCTION.TRYIT.html b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.TRYIT.html new file mode 100644 index 00000000..f5fba77e --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.TRYIT.html @@ -0,0 +1,146 @@ + + + + +Giving it a try - - Recoll user manual

Giving it a try

If you do not like reading manuals (who does?) but + wish to give Recoll a try, just install the application + and start the recoll graphical user + interface (GUI), which will ask permission to index your home + directory by default, allowing you to search immediately after + indexing completes.

Do not do this if your home directory contains a huge + number of documents and you do not want to wait or are very + short on disk space. In this case, you may first want to customize + the configuration + to restrict the indexed area (for the very impatient with a completed package install, from the recoll GUI: Preferences → Indexing configuration, then adjust the Top + directories section).

Also be aware that you may need to install the + appropriate supporting + applications for document types that need them (for + example antiword for + Microsoft Word files).

diff --git a/src/doc/user/webhelp/docs/RCL.INTRODUCTION.html b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.html new file mode 100644 index 00000000..526cf8a1 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.INTRODUCTION.html @@ -0,0 +1,142 @@ + + + + +Introduction - - Recoll user manual

Introduction

This document introduces full text search notions + and describes the installation and use of the Recoll + application. This version describes Recoll 1.22.

Recoll was for a long time dedicated to Unix-like systems. It + was only lately (2015) ported to + MS-Windows. Many references in this + manual, especially file locations, are specific to Unix, and not + valid on Windows. Some described features are also not available on + Windows.

The manual will be progressively updated for Windows. Until this + happens, most references to files can be translated by looking under + the Recoll installation directory (esp. the + Share subdirectory). The user configuration is + stored by default under AppData/Local/Recoll + inside the user directory, along with the index itself.

diff --git a/src/doc/user/webhelp/docs/RCL.KICKER-APPLET.html b/src/doc/user/webhelp/docs/RCL.KICKER-APPLET.html new file mode 100644 index 00000000..a4d9eafd --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.KICKER-APPLET.html @@ -0,0 +1,146 @@ + + + + +The KDE Kicker Recoll applet - - Recoll user manual

The KDE Kicker Recoll applet

This is probably obsolete now. Anyway:

The Recoll source tree contains the source code to the + recoll_applet, a small application derived + from the find_applet. This can be used to + add a small Recoll launcher to the KDE panel.

The applet is not automatically built with the main Recoll + programs, nor is it included with the main source distribution + (because the KDE build boilerplate makes it relatively big). You can + download its source from the recoll.org download page. Use the + omnipotent configure;make;make install + incantation to build and install.

You can then add the applet to the panel by right-clicking the + panel and choosing the Add applet entry.

The recoll_applet has a small text + window where you can type a Recoll query (in query language form), + and an icon which can be used to restrict the search to certain + types of files. It is quite primitive, and launches a new recoll + GUI instance every time (even if it is already running). You may + find it useful anyway.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.API.ELEMENTS.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.API.ELEMENTS.html new file mode 100644 index 00000000..91d17514 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.API.ELEMENTS.html @@ -0,0 +1,159 @@ + + + + +Interface elements - - Recoll user manual

Interface elements

A few elements in the interface are specific and and need + an explanation.

udi

An udi (unique document + identifier) identifies a document. Because of limitations + inside the index engine, it is restricted in length (to + 200 bytes), which is why a regular URI cannot be used. The + structure and contents of the udi is defined by the + application and opaque to the index engine. For example, + the internal file system indexer uses the complete + document path (file path + internal path), truncated to + length, the suppressed part being replaced by a hash + value.

ipath

This data value (set as a field in the Doc + object) is stored, along with the URL, but not indexed by + Recoll. Its contents are not interpreted, and its use is up + to the application. For example, the Recoll internal file + system indexer stores the part of the document access path + internal to the container file (ipath in + this case is a list of subdocument sequential numbers). url + and ipath are returned in every search result and permit + access to the original document.

Stored and indexed fields

The fields file inside + the Recoll configuration defines which document fields are + either "indexed" (searchable), "stored" (retrievable with + search results), or both.

Data for an external indexer, should be stored in a + separate index, not the one for the Recoll internal file system + indexer, except if the latter is not used at all). The reason + is that the main document indexer purge pass would remove all + the other indexer's documents, as they were not seen during + indexing. The main indexer documents would also probably be a + problem for the external indexer purge operation.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.API.PYTHON.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.API.PYTHON.html new file mode 100644 index 00000000..b9b1df74 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.API.PYTHON.html @@ -0,0 +1,132 @@ + + + + +Python interface - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.API.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.API.html new file mode 100644 index 00000000..c6042f82 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.API.html @@ -0,0 +1,132 @@ + + + + +API - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FIELDS.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FIELDS.html new file mode 100644 index 00000000..1f6105e6 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FIELDS.html @@ -0,0 +1,176 @@ + + + + +Field data processing - - Recoll user manual

Field data processing

Fields are named pieces of information + in or about documents, like title, + author, abstract.

The field values for documents can appear in several ways + during indexing: either output by input handlers + as meta fields in the HTML header section, or + extracted from file extended attributes, or added as attributes + of the Doc object when using the API, or + again synthetized internally by Recoll.

The Recoll query language allows searching for text in a + specific field.

Recoll defines a number of default fields. Additional + ones can be output by handlers, and described in the + fields configuration file.

Fields can be:

  • indexed, meaning that their + terms are separately stored in inverted lists (with a specific + prefix), and that a field-specific search is possible.

  • stored, meaning that their + value is recorded in the index data record for the document, + and can be returned and displayed with search results.

A field can be either or both indexed and stored. This and + other aspects of fields handling is defined inside the + fields configuration file.

The sequence of events for field processing is as follows: +

  • During indexing, + recollindex scans all meta + fields in HTML documents (most document types are transformed + into HTML at some point). It compares the name for each element + to the configuration defining what should be done with fields + (the fields file)

  • If the name for the meta + element matches one for a field that should be indexed, the + contents are processed and the terms are entered into the index + with the prefix defined in the fields + file.

  • If the name for the meta element + matches one for a field that should be stored, the content of the + element is stored with the document data record, from which it + can be extracted and displayed at query time.

  • At query time, if a field search is performed, the + index prefix is computed and the match is only performed against + appropriately prefixed terms in the index.

  • At query time, the field can be displayed inside + the result list by using the appropriate directive in the + definition of the result list paragraph + format. All fields are displayed on the fields screen of + the preview window (which you can reach through the right-click + menu). This is independant of the fact that the search which + produced the results used the field or not.

+

You can find more information in the + section about the + fields file, or in comments inside the + file.

You can also have a look at the + example on the Wiki, + detailing how one could add a page count field + to pdf documents for displaying inside result lists.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.ASSOCIATION.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.ASSOCIATION.html new file mode 100644 index 00000000..00ba2147 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.ASSOCIATION.html @@ -0,0 +1,176 @@ + + + + +Telling Recoll about the handler - - Recoll user manual

Telling Recoll about the handler

There are two elements that link a file to the handler which + should process it: the association of file to MIME type and the + association of a MIME type with a handler.

The association of files to MIME types is mostly based on + name suffixes. The types are defined inside the + + mimemap file. Example: +

+
+.doc = application/msword
+

+ If no suffix association is found for the file name, Recoll will try + to execute the file -i command to determine a + MIME type.

The association of file types to handlers is performed in + the + mimeconf file. A sample will probably be + of better help than a long explanation:

+
+[index]
+application/msword = exec antiword -t -i 1 -m UTF-8;\
+     mimetype = text/plain ; charset=utf-8
+
+application/ogg = exec rclogg
+
+text/rtf = exec unrtf --nopict --html; charset=iso-8859-1; mimetype=text/html
+
+application/x-chm = execm rclchm
+

The fragment specifies that: + +

  • application/msword files + are processed by executing the antiword + program, which outputs + text/plain encoded in + utf-8.

  • application/ogg files are + processed by the rclogg script, with + default output type (text/html, with + encoding specified in the header, or utf-8 + by default).

  • text/rtf is processed by + unrtf, which outputs + text/html. The + iso-8859-1 encoding is specified because it + is not the utf-8 default, and not output by + unrtf in the HTML header section.

  • application/x-chm is processed + by a persistant handler. This is determined by the + execm keyword.

+

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.HTML.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.HTML.html new file mode 100644 index 00000000..97c086d2 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.HTML.html @@ -0,0 +1,193 @@ + + + + +Input handler HTML output - - Recoll user manual

Input handler HTML output

The output HTML could be very minimal like the following + example: +

+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+  </head>
+  <body>
+   Some text content
+  </body>
+</html>
+          

+

You should take care to escape some + characters inside the text by transforming them into + appropriate entities. At the very minimum, + "&" should be transformed into + "&amp;", "<" + should be transformed into + "&lt;". This is not always properly + done by translating programs which output HTML, and of + course never by those which output plain text.

When encapsulating plain text in an HTML body, + the display of a preview may be improved by enclosing the + text inside <pre> tags.

The character set needs to be specified in the + header. It does not need to be UTF-8 (Recoll will take care + of translating it), but it must be accurate for good + results.

Recoll will process meta tags inside + the header as possible document fields candidates. Documents + fields can be processed by the indexer in different ways, + for searching or displaying inside query results. This is + described in a following + section. +

By default, the indexer will process the standard header + fields if they are present: title, + meta/description, + and meta/keywords are both indexed and stored + for query-time display.

A predefined non-standard meta tag + will also be processed by Recoll without further + configuration: if a date tag is present + and has the right format, it will be used as the document + date (for display and sorting), in preference to the file + modification date. The date format should be as follows: +

+<meta name="date" content="YYYY-mm-dd HH:MM:SS">
+or
+<meta name="date" content="YYYY-mm-ddTHH:MM:SS">
+          

+ Example: +

+<meta name="date" content="2013-02-24 17:50:00">
+          

+

Input handlers also have the possibility to "invent" field + names. This should also be output as meta tags:

+<meta name="somefield" content="Some textual data" />
+

You can embed HTML markup inside the content of custom + fields, for improving the display inside result lists. In this + case, add a (wildly non-standard) markup + attribute to tell Recoll that the value is HTML and should not + be escaped for display.

+<meta name="somefield" markup="html" content="Some <i>textual</i> data" />
+

As written above, the processing of fields is described + in a further + section.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.MULTIPLE.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.MULTIPLE.html new file mode 100644 index 00000000..430e7b4b --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.MULTIPLE.html @@ -0,0 +1,164 @@ + + + + +"Multiple" handlers - - Recoll user manual

"Multiple" handlers

If you can program and want to write + an execm handler, it should not be too + difficult to make sense of one of the existing modules. For + example, look at rclzip which uses Zip + file paths as identifiers (ipath), + and rclics, which uses an integer + index. Also have a look at the comments inside + the internfile/mh_execm.h file and + possibly at the corresponding module.

execm handlers sometimes need to make + a choice for the nature of the ipath + elements that they use in communication with the + indexer. Here are a few guidelines: +

  • Use ASCII or UTF-8 (if the identifier is an + integer print it, for example, like printf %d would + do).

  • If at all possible, the data should make some + kind of sense when printed to a log file to help with + debugging.

  • Recoll uses a colon (:) as a + separator to store a complex path internally (for + deeper embedding). Colons inside + the ipath elements output by a + handler will be escaped, but would be a bad choice as a + handler-specific separator (mostly, again, for + debugging issues).

+ In any case, the main goal is that it should + be easy for the handler to extract the target document, given + the file name and the ipath + element.

execm handlers will also produce + a document with a null ipath + element. Depending on the type of document, this may have + some associated data (e.g. the body of an email message), or + none (typical for an archive file). If it is empty, this + document will be useful anyway for some operations, as the + parent of the actual data documents.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.PAGES.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.PAGES.html new file mode 100644 index 00000000..c6e87f5b --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.PAGES.html @@ -0,0 +1,136 @@ + + + + +Page numbers - - Recoll user manual

Page numbers

The indexer will interpret ^L characters + in the handler output as indicating page breaks, and will record + them. At query time, this allows starting a viewer on the right + page for a hit or a snippet. Currently, only the PDF, Postscript + and DVI handlers generate page breaks.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.SIMPLE.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.SIMPLE.html new file mode 100644 index 00000000..d9cd9486 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.SIMPLE.html @@ -0,0 +1,154 @@ + + + + +Simple input handlers - - Recoll user manual

Simple input handlers

Recoll simple handlers are usually shell-scripts, but this is in + no way necessary. Extracting the text from the native format is the + difficult part. Outputting the format expected by Recoll is + trivial. Happily enough, most document formats have translators or + text extractors which can be called from the handler. In some cases + the output of the translating program is completely appropriate, + and no intermediate shell-script is needed.

Input handlers are called with a single argument which is the + source file name. They should output the result to stdout.

When writing a handler, you should decide if it will output + plain text or HTML. Plain text is simpler, but you will not be able + to add metadata or vary the output character encoding (this will be + defined in a configuration file). Additionally, some formatting may + be easier to preserve when previewing HTML. Actually the deciding factor + is metadata: Recoll has a way to + extract metadata from the HTML header and use it for field + searches..

The RECOLL_FILTER_FORPREVIEW environment + variable (values yes, no) + tells the handler if the operation is for indexing or + previewing. Some handlers use this to output a slightly different + format, for example stripping uninteresting repeated keywords (ie: + Subject: for email) when indexing. This is not + essential.

You should look at one of the simple handlers, for example + rclps for a starting point.

Don't forget to make your handler executable before + testing !

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.html new file mode 100644 index 00000000..18f8ca0c --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.FILTERS.html @@ -0,0 +1,202 @@ + + + + +Writing a document input handler - - Recoll user manual

Writing a document input handler

Terminology

The small programs or pieces + of code which handle the processing of the different document + types for Recoll used to be called filters, + which is still reflected in the name of the directory which + holds them and many configuration variables. They were named + this way because one of their primary functions is to filter + out the formatting directives and keep the text + content. However these modules may have other behaviours, and + the term input handler is now progressively + substituted in the documentation. filter is + still used in many places though.

Recoll input handlers cooperate to translate from the multitude + of input document formats, simple ones + as opendocument, + acrobat), or compound ones such + as Zip + or Email, into the final Recoll + indexing input format, which is plain text. + Most input handlers are executable + programs or scripts. A few handlers are coded in C++ and live + inside recollindex. This latter kind will not + be described here.

There are currently (1.18 and since 1.13) two kinds of + external executable input handlers: +

  • Simple exec handlers + run once and exit. They can be bare programs like + antiword, or scripts using other + programs. They are very simple to write, because they just + need to print the converted document to the standard + output. Their output can be plain text or HTML. HTML is + usually preferred because it can store metadata fields and + it allows preserving some of the formatting for the GUI + preview.

  • Multiple execm handlers + can process multiple files (sparing the process startup + time which can be very significant), or multiple documents + per file (e.g.: for zip or + chm files). They communicate + with the indexer through a simple protocol, but are + nevertheless a bit more complicated than the older + kind. Most of new handlers are written in + Python, using a common module + to handle the protocol. There is an exception, + rclimg which is written in Perl. The + subdocuments output by these handlers can be directly + indexable (text or HTML), or they can be other simple or + compound documents that will need to be processed by + another handler.

+

In both cases, handlers deal with regular file system + files, and can process either a single document, or a + linear list of documents in each file. Recoll is responsible + for performing up to date checks, deal with more complex + embedding and other upper level issues.

A simple handler returning a + document in text/plain format, can transfer + no metadata to the indexer. Generic metadata, like document + size or modification date, will be gathered and stored by + the indexer.

Handlers that produce text/html + format can return an arbitrary amount of metadata inside HTML + meta tags. These will be processed + according to the directives found in + the + fields configuration + file.

The handlers that can handle multiple documents per file + return a single piece of data to identify each document inside + the file. This piece of data, called + an ipath element will be sent back by + Recoll to extract the document at query time, for previewing, + or for creating a temporary file to be opened by a + viewer.

The following section describes the simple + handlers, and the next one gives a few explanations about + the execm ones. You could conceivably + write a simple handler with only the elements in the + manual. This will not be the case for the other ones, for + which you will have to look at the code.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.COMPAT.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.COMPAT.html new file mode 100644 index 00000000..ed254e2d --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.COMPAT.html @@ -0,0 +1,154 @@ + + + + +Compatibility with the previous version - - Recoll user manual

Compatibility with the previous version

The following code fragments can be used to ensure that + code can run with both the old and the new API (as long as it + does not use the new abilities of the new API of + course).

Adapting to the new package structure:

+
+try:
+    from recoll import recoll
+    from recoll import rclextract
+    hasextract = True
+except:
+    import recoll
+    hasextract = False
+
+

Adapting to the change of nature of + the next Query + member. The same test can be used to choose to use + the scroll() method (new) or set + the next value (old).

+
+       rownum = query.next if type(query.next) == int else \
+                 query.rownumber
+
+
diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.EXAMPLES.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.EXAMPLES.html new file mode 100644 index 00000000..9e8e684b --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.EXAMPLES.html @@ -0,0 +1,160 @@ + + + + +Example code - - Recoll user manual

Example code

The following sample would query the index with a user + language string. See the python/samples + directory inside the Recoll source for other + examples. The recollgui subdirectory + has a very embryonic GUI which demonstrates the + highlighting and data extraction functions.

+#!/usr/bin/env python
+
+from recoll import recoll
+
+db = recoll.connect()
+db.setAbstractParams(maxchars=80, contextwords=4)
+
+query = db.query()
+nres = query.execute("some user question")
+print "Result count: ", nres
+if nres > 5:
+    nres = 5
+for i in range(nres):
+    doc = query.fetchone()
+    print "Result #%d" % (query.rownumber,)
+    for k in ("title", "size"):
+        print k, ":", getattr(doc, k).encode('utf-8')
+    abs = db.makeDocAbstract(doc, query).encode('utf-8')
+    print abs
+    print
+
+
+
diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.INTRO.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.INTRO.html new file mode 100644 index 00000000..949c96fc --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.INTRO.html @@ -0,0 +1,161 @@ + + + + +Introduction - - Recoll user manual

Introduction

Recoll versions after 1.11 define a Python programming + interface, both for searching and indexing. The indexing + portion has seen little use, but the searching one is used + in the Recoll Ubuntu Unity Lens and Recoll Web UI.

The API is inspired by the Python database API + specification. There were two major changes in recent Recoll + versions: +

  • The basis for the Recoll API changed from Python + database API version 1.0 (Recoll versions up to 1.18.1), + to version 2.0 (Recoll 1.18.2 and later).
  • The recoll module became a + package (with an internal recoll + module) as of Recoll version 1.19, in order to add more + functions. For existing code, this only changes the way + the interface must be imported.

+

We will mostly describe the new API and package + structure here. A paragraph at the end of this section will + explain a few differences and ways to write code + compatible with both versions.

The Python interface can be found in the source package, + under python/recoll.

The python/recoll/ directory + contains the usual setup.py. After + configuring the main Recoll code, you can use the script to + build and install the Python module: +

+            cd recoll-xxx/python/recoll
+            python setup.py build
+            python setup.py install
+          

+

The normal Recoll installer installs the Python + API along with the main code.

When installing from a repository, and depending on the + distribution, the Python API can sometimes be found in a + separate package.

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.PACKAGE.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.PACKAGE.html new file mode 100644 index 00000000..dcde9b06 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.PACKAGE.html @@ -0,0 +1,139 @@ + + + + +Recoll package - - Recoll user manual

Recoll package

The recoll package contains two + modules: +

  • The recoll module contains + functions and classes used to query (or update) the + index.

  • The rclextract module contains + functions and classes used to access document + data.

+

diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RCLEXTRACT.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RCLEXTRACT.html new file mode 100644 index 00000000..1b171adc --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RCLEXTRACT.html @@ -0,0 +1,159 @@ + + + + +The rclextract module - - Recoll user manual

The rclextract module

Index queries do not provide document content (only a + partial and unprecise reconstruction is performed to show the + snippets text). In order to access the actual document data, + the data extraction part of the indexing process + must be performed (subdocument access and format + translation). This is not trivial in + general. The rclextract module currently + provides a single class which can be used to access the data + content for result documents.

Classes
The Extractor class

Methods

Extractor(doc)
An Extractor object is + built from a Doc object, output + from a query.
Extractor.textextract(ipath)
Extract document defined + by ipath and return + a Doc object. The doc.text field + has the document text converted to either text/plain or + text/html according to doc.mimetype. The typical use + would be as follows: +
+qdoc = query.fetchone()
+extractor = recoll.Extractor(qdoc)
+doc = extractor.textextract(qdoc.ipath)
+# use doc.text, e.g. for previewing
+
Extractor.idoctofile(ipath, targetmtype, outfile='')
Extracts document into an output file, + which can be given explicitly or will be created as a + temporary file to be deleted by the caller. Typical use: +
+qdoc = query.fetchone()
+extractor = recoll.Extractor(qdoc)
+filename = extractor.idoctofile(qdoc.ipath, qdoc.mimetype)
diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RECOLL.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RECOLL.html new file mode 100644 index 00000000..640d9a8e --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.PYTHON.RECOLL.html @@ -0,0 +1,242 @@ + + + + +The recoll module - - Recoll user manual

The recoll module

Functions
connect(confdir=None, extra_dbs=None, + writable = False)
+ The connect() function connects to + one or several Recoll index(es) and returns + a Db object. +
  • confdir may specify + a configuration directory. The usual defaults + apply.
  • extra_dbs is a list of + additional indexes (Xapian directories).
  • writable decides if + we can index new data through this + connection.
+ This call initializes the recoll module, and it should + always be performed before any other call or object creation. +
Classes
The Db class

A Db object is created by + a connect() call and holds a + connection to a Recoll index.

Methods

Db.close()
Closes the connection. You can't do anything + with the Db object after + this.
Db.query(), Db.cursor()
These + aliases return a blank Query object + for this index.
Db.setAbstractParams(maxchars, + contextwords)
Set the parameters used + to build snippets (sets of keywords in context text + fragments). maxchars defines the + maximum total size of the abstract. + contextwords defines how many + terms are shown around the keyword.
Db.termMatch(match_type, expr, field='', + maxlen=-1, casesens=False, diacsens=False, lang='english') +
Expand an expression against the + index term list. Performs the basic function from the + GUI term explorer tool. match_type + can be either + of wildcard, regexp + or stem. Returns a list of terms + expanded from the input expression. +
The Query class

A Query object (equivalent to a + cursor in the Python DB API) is created by + a Db.query() call. It is used to + execute index searches.

Methods

Query.sortby(fieldname, ascending=True)
Sort results + by fieldname, in ascending + or descending order. Must be called before executing + the search.
Query.execute(query_string, stemming=1, + stemlang="english")
Starts a search + for query_string, a Recoll + search language string.
Query.executesd(SearchData)
Starts a search for the query defined by the + SearchData object.
Query.fetchmany(size=query.arraysize)
Fetches + the next Doc objects in the current + search results, and returns them as an array of the + required size, which is by default the value of + the arraysize data member.
Query.fetchone()
Fetches the next Doc object + from the current search results.
Query.close()
Closes the query. The object is unusable + after the call.
Query.scroll(value, mode='relative')
Adjusts the position in the current result + set. mode can + be relative + or absolute.
Query.getgroups()
Retrieves the expanded query terms as a list + of pairs. Meaningful only after executexx In each + pair, the first entry is a list of user terms (of size + one for simple terms, or more for group and phrase + clauses), the second a list of query terms as derived + from the user terms and used in the Xapian + Query.
Query.getxquery()
Return the Xapian query description as a Unicode string. + Meaningful only after executexx.
Query.highlight(text, ishtml = 0, methods = object)
Will insert <span "class=rclmatch">, + </span> tags around the match areas in the input text + and return the modified text. ishtml + can be set to indicate that the input text is HTML and + that HTML special characters should not be escaped. + methods if set should be an object + with methods startMatch(i) and endMatch() which will be + called for each match and should return a begin and end + tag
Query.makedocabstract(doc, methods = object))
Create a snippets abstract + for doc (a Doc + object) by selecting text around the match terms. + If methods is set, will also perform highlighting. See + the highlight method. +
Query.__iter__() and Query.next()
So that things like for doc in + query: will work.

Data descriptors

Query.arraysize
Default + number of records processed by fetchmany (r/w).
Query.rowcount
Number of + records returned by the last execute.
Query.rownumber
Next index + to be fetched from results. Normally increments after + each fetchone() call, but can be set/reset before the + call to effect seeking (equivalent to + using scroll()). Starts at + 0.
The Doc class

A Doc object contains index data + for a given document. The data is extracted from the + index when searching, or set by the indexer program when + updating. The Doc object has many attributes to be read or + set by its user. It matches exactly the Rcl::Doc C++ + object. Some of the attributes are predefined, but, + especially when indexing, others can be set, the name of + which will be processed as field names by the indexing + configuration. Inputs can be specified as Unicode or + strings. Outputs are Unicode objects. All dates are + specified as Unix timestamps, printed as strings. Please + refer to the rcldb/rcldoc.h C++ file + for a description of the predefined attributes.

At query time, only the fields that are defined + as stored either by default or in + the fields configuration file will be + meaningful in the Doc + object. Especially this will not be the case for the + document text. See the rclextract + module for accessing document contents.

Methods

get(key), [] operator
Retrieve the named doc attribute
getbinurl()
Retrieve + the URL in byte array format (no transcoding), for use as + parameter to a system call.
items()
Return a dictionary of doc object + keys/values
keys()
list of doc object keys (attribute + names).
The SearchData class

A SearchData object allows building + a query by combining clauses, for execution + by Query.executesd(). It can be used + in replacement of the query language approach. The + interface is going to change a little, so no detailed doc + for now...

Methods

addclause(type='and'|'or'|'excl'|'phrase'|'near'|'sub', + qstring=string, slack=0, field='', stemming=1, + subSearch=SearchData)
diff --git a/src/doc/user/webhelp/docs/RCL.PROGRAM.html b/src/doc/user/webhelp/docs/RCL.PROGRAM.html new file mode 100644 index 00000000..6e1e449d --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.PROGRAM.html @@ -0,0 +1,134 @@ + + + + +Programming interface - - Recoll user manual

Programming interface

Recoll has an Application Programming Interface, usable both + for indexing and searching, currently accessible from the + Python language.

Another less radical way to extend the application is to + write input handlers for new types of documents.

The processing of metadata attributes for documents + (fields) is highly configurable.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.ANCHOR.html b/src/doc/user/webhelp/docs/RCL.SEARCH.ANCHOR.html new file mode 100644 index 00000000..243dc931 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.ANCHOR.html @@ -0,0 +1,152 @@ + + + + +Anchored searches - - Recoll user manual

Anchored searches

Two characters are used to specify that a search hit should + occur at the beginning or at the end of the + text. ^ at the beginning of a term or phrase + constrains the search to happen at the start, $ + at the end force it to happen at the end.

As this function is implemented as a phrase search it is + possible to specify a maximum distance at which the hit should + occur, either through the controls of the advanced search panel, or + using the query language, for example, as in: +

"^someterm"o10

which would force + someterm to be found within 10 terms of the + start of the text. This can be combined with a field search as in + somefield:"^someterm"o10 or + somefield:someterm$.

This feature can also be used with an actual phrase search, + but in this case, the distance applies to the whole phrase and + anchor, so that, for example, bla bla my unexpected + term at the beginning of the text would be a match for + "^my term"o5.

Anchored searches can be very useful for searches inside + somewhat structured documents like scientific articles, in case + explicit metadata has not been supplied (a most frequent case), for + example for looking for matches inside the abstract or the list of + authors (which occur at the top of the document).

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.ANCHORWILD.html b/src/doc/user/webhelp/docs/RCL.SEARCH.ANCHORWILD.html new file mode 100644 index 00000000..8a22cd64 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.ANCHORWILD.html @@ -0,0 +1,136 @@ + + + + +Anchored searches and wildcards - - Recoll user manual

Anchored searches and wildcards

Some special characters are interpreted by Recoll in search + strings to expand or specialize the search. Wildcards expand a root + term in controlled ways. Anchor characters can restrict a search to + succeed only if the match is found at or near the beginning of the + document or one of its fields.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.CASEDIAC.html b/src/doc/user/webhelp/docs/RCL.SEARCH.CASEDIAC.html new file mode 100644 index 00000000..cda37acf --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.CASEDIAC.html @@ -0,0 +1,167 @@ + + + + +Search case and diacritics sensitivity - - Recoll user manual

Search case and diacritics sensitivity

For Recoll versions 1.18 and later, and when working + with a raw index (not the default), searches can be + made sensitive + to character case and diacritics. How this happens is controlled by + configuration variables and what search data is entered.

The general default is that searches are insensitive to case + and diacritics. An entry of resume will match any + of Resume, RESUME, + résumé, Résumé etc.

Two configuration variables can automate switching on + sensitivity:

autodiacsens

If this is set, search + sensitivity to diacritics will be turned on as soon as an + accented character exists in a search term. When the variable + is set to true, resume will start a + diacritics-unsensitive search, but résumé + will be matched exactly. The default value is + false.

autocasesens

If this is set, search + sensitivity to character case will be turned on as soon as an + upper-case character exists in a search term except + for the first one. When the variable is set to + true, us or Us will + start a diacritics-unsensitive search, but + US will be matched exactly. The default + value is true (contrary to + autodiacsens).

As in the past, capitalizing the first letter of a word will + turn off its stem expansion and have no effect on + case-sensitivity.

You can also explicitely activate case and diacritics + sensitivity by using modifiers with the query + language. C will make the term case-sensitive, and + D will make it + diacritics-sensitive. Examples:

+        "us"C
+   

will search for the term us exactly + (Us will not be a match).

+        "resume"D
+      

will search for the term resume exactly + (résumé will not be a match).

When either case or diacritics sensitivity is activated, stem + expansion is turned off. Having both does not make much sense.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.COMMANDLINE.html b/src/doc/user/webhelp/docs/RCL.SEARCH.COMMANDLINE.html new file mode 100644 index 00000000..6bece766 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.COMMANDLINE.html @@ -0,0 +1,192 @@ + + + + +Searching on the command line - - Recoll user manual

Searching on the command line

There are several ways to obtain search results as a text + stream, without a graphical interface:

  • By passing option -t to the + recoll program.

  • By using the recollq program.

  • By writing a custom + Python program, using the + Recoll Python API.

The first two methods work in the same way and accept/need the same + arguments (except for the additional -t to + recoll). The query to be executed is specified + as command line arguments.

recollq is not built by default. You can + use the Makefile in the + query directory to build it. This is a very + simple program, and if you can program a little c++, you may find it + useful to taylor its output format to your needs. Not that recollq is + only really useful on systems where the Qt libraries (or even the X11 + ones) are not available. Otherwise, just use recoll + -t, which takes the exact same parameters and options which + are described for recollq

recollq has a man page (not installed by + default, look in the doc/man directory). The + Usage string is as follows:

+recollq: usage:
+ -P: Show the date span for all the documents present in the index
+ [-o|-a|-f] [-q] <query string>
+ Runs a recoll query and displays result lines. 
+  Default: will interpret the argument(s) as a xesam query string
+    query may be like: 
+    implicit AND, Exclusion, field spec:    t1 -t2 title:t3
+    OR has priority: t1 OR t2 t3 OR t4 means (t1 OR t2) AND (t3 OR t4)
+    Phrase: "t1 t2" (needs additional quoting on cmd line)
+  -o Emulate the GUI simple search in ANY TERM mode
+  -a Emulate the GUI simple search in ALL TERMS mode
+  -f Emulate the GUI simple search in filename mode
+  -q is just ignored (compatibility with the recoll GUI command line)
+Common options:
+    -c <configdir> : specify config directory, overriding $RECOLL_CONFDIR
+    -d also dump file contents
+    -n [first-]<cnt> define the result slice. The default value for [first]
+       is 0. Without the option, the default max count is 2000.
+       Use n=0 for no limit
+    -b : basic. Just output urls, no mime types or titles
+    -Q : no result lines, just the processed query and result count
+    -m : dump the whole document meta[] array for each result
+    -A : output the document abstracts
+    -S fld : sort by field <fld>
+    -s stemlang : set stemming language to use (must exist in index...)
+       Use -s "" to turn off stem expansion
+    -D : sort descending
+    -i <dbdir> : additional index, several can be given
+    -e use url encoding (%xx) for urls
+    -F <field name list> : output exactly these fields for each result.
+       The field values are encoded in base64, output in one line and 
+       separated by one space character. This is the recommended format 
+       for use by other programs. Use a normal query with option -m to 
+       see the field names.
+

Sample execution:

recollq 'ilur -nautique mime:text/html'
+Recoll query: ((((ilur:(wqf=11) OR ilurs) AND_NOT (nautique:(wqf=11)
+  OR nautiques OR nautiqu OR nautiquement)) FILTER Ttext/html))
+4 results
+text/html       [file:///Users/uncrypted-dockes/projets/bateaux/ilur/comptes.html]      [comptes.html]  18593   bytes   
+text/html       [file:///Users/uncrypted-dockes/projets/nautique/webnautique/articles/ilur1/index.html] [Constructio...
+text/html       [file:///Users/uncrypted-dockes/projets/pagepers/index.html]    [psxtcl/writemime/recoll]...
+text/html       [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/recu-chasse-maree....
+
diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.DESKTOP.html b/src/doc/user/webhelp/docs/RCL.SEARCH.DESKTOP.html new file mode 100644 index 00000000..78a00947 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.DESKTOP.html @@ -0,0 +1,142 @@ + + + + +Desktop integration - - Recoll user manual

Desktop integration

Being independant of the desktop type has its drawbacks: Recoll + desktop integration is minimal. However there are a few tools + available: +

+

Here follow a few other things that may help.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.FILTER.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.FILTER.html new file mode 100644 index 00000000..fc6fa8f0 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.FILTER.html @@ -0,0 +1,156 @@ + + + + +Avanced search: the "filter" tab - - Recoll user manual

Avanced search: the "filter" tab

This part of the dialog has several sections which allow + filtering the results of a search according to a number of + criteria

  • The first section allows filtering by dates of last + modification. You can specify both a minimum and a maximum date. The + initial values are set according to the oldest and newest documents + found in the index.

  • The next section allows filtering the results by + file size. There are two entries for minimum and maximum + size. Enter decimal numbers. You can use suffix multipliers: + k/K, m/M, + g/G, t/T for 1E3, 1E6, + 1E9, 1E12 respectively.

  • The next section allows filtering the results by their MIME + types, or MIME categories (ie: media/text/message/etc.).

    You can transfer the types between two boxes, to define + which will be included or excluded by the search.

    The state of the file type selection can be saved as + the default (the file type filter will not be activated at + program start-up, but the lists will be in the restored + state).

  • The bottom section allows restricting the search results to a + sub-tree of the indexed area. You can use the + Invert checkbox to search for files not in + the sub-tree instead. If you use directory filtering often and on + big subsets of the file system, you may think of setting up + multiple indexes instead, as the performance may be + better.

    You can use relative/partial paths for filtering. Ie, + entering dirA/dirB would match either + /dir1/dirA/dirB/myfile1 or + /dir2/dirA/dirB/someother/myfile2.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.HISTORY.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.HISTORY.html new file mode 100644 index 00000000..959d51b6 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.HISTORY.html @@ -0,0 +1,136 @@ + + + + +Avanced search history - - Recoll user manual

Avanced search history

The advanced search tool memorizes the last 100 searches + performed. You can walk the saved searches by using the up and + down arrow keys while the keyboard focus belongs to the advanced + search dialog.

The complex search history can be erased, along with the + one for simple search, by selecting the File → Erase Search History menu entry.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.TERMS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.TERMS.html new file mode 100644 index 00000000..8b882247 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.TERMS.html @@ -0,0 +1,157 @@ + + + + +Avanced search: the "find" tab - - Recoll user manual

Avanced search: the "find" tab

This part of the dialog lets you constructc a query by + combining multiple clauses of different types. Each entry + field is configurable for the following modes:

  • All terms.

  • Any term.

  • None of the terms.

  • Phrase (exact terms in order within an + adjustable window).

  • Proximity (terms in any order within an + adjustable window).

  • Filename search.

Additional entry fields can be created by clicking the + Add clause button.

When searching, the non-empty clauses will be + combined either with an AND or an OR conjunction, depending on + the choice made on the left (All clauses or + Any clause).

Entries of all types except "Phrase" and "Near" accept + a mix of single words and phrases enclosed in double quotes. + Stemming and wildcard expansion will be performed as for simple + search.

Phrases and Proximity searches. These two clauses work in similar ways, with the + difference that proximity searches do not impose an order on the + words. In both cases, an adjustable number (slack) of non-matched words + may be accepted between the searched ones (use the counter on + the left to adjust this count). For phrases, the default count + is zero (exact match). For proximity it is ten (meaning that two search + terms, would be matched if found within a window of twelve + words). Examples: a phrase search for quick + fox with a slack of 0 will match quick + fox but not quick brown fox. With + a slack of 1 it will match the latter, but not fox + quick. A proximity search for quick + fox with the default slack will match the + latter, and also a fox is a cunning and quick + animal.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.html new file mode 100644 index 00000000..09a25eae --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.COMPLEX.html @@ -0,0 +1,145 @@ + + + + +Complex/advanced search - - Recoll user manual

Complex/advanced search

The advanced search dialog helps you build more complex queries + without memorizing the search language constructs. It can be opened + through the Tools menu or through the main + toolbar.

Recoll keeps a history of searches. See + + Advanced search history.

The dialog has two tabs:

  1. The first tab lets you specify terms to search + for, and permits specifying multiple clauses which are combined + to build the search.

  2. The second tab lets filter the results according + to file size, date of modification, MIME type, or + location.

Click on the Start Search button in + the advanced search dialog, or type Enter in + any text field to start the search. The button in + the main window always performs a simple search.

Click on the Show query details link at + the top of the result page to see the query expansion.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.RESLIST.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.RESLIST.html new file mode 100644 index 00000000..a014cc13 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.RESLIST.html @@ -0,0 +1,243 @@ + + + + +The result list format - - Recoll user manual

The result list format

Newer versions of Recoll (from 1.17) normally use WebKit HTML + widgets for the result list and the + + snippets window (this may be disabled at build time). + Total customisation is possible with full support for CSS and + Javascript. Conversely, there are limits to what you can do with + the older Qt QTextBrowser, but still, it is possible to decide + what data each result will contain, and how it will be + displayed.

The result list presentation can be exhaustively customized + by adjusting two elements: + +

  • The paragraph format

  • HTML code inside the header section. For + versions 1.21 and later, this is also used for the + + snippets window

+ The paragraph format and the header fragment can be edited + from the Result list tab of the + GUI configuration. +

The header fragment is used both for the result list and + the snippets window. The snippets list is a table and has a + snippets class attribute. Each paragraph in + the result list is a table, with class + respar, but this can be changed by editing + the paragraph format.

There are a few examples on the + page about + customising the result list on the Recoll web site.

The paragraph format

This is an arbitrary HTML string where the following printf-like + % substitutions will be performed: + +

  • %A. Abstract

  • %D. Date

  • %I. Icon image + name. This is normally determined from the MIME type. The + associations are defined inside the + + mimeconf configuration file. + If a thumbnail for the file is found at + the standard Freedesktop location, this will be displayed + instead.

  • %K. Keywords (if + any)

  • %L. Precooked Preview, + Edit, and possibly Snippets links

  • %M. MIME + type

  • %N. result Number inside + the result page

  • %P. Parent folder + Url. In the case of an embedded document, this is the parent folder + for the top level container file.

  • %R. Relevance + percentage

  • %S. Size + information

  • %T. Title or Filename if + not set.

  • %t. Title or Filename if + not set.

  • %U. Url

+ + The format of the Preview, Edit, and Snippets links is + <a href="P%N">, + <a href="E%N"> + and + <a href="A%N"> + where docnum (%N) expands to the document + number inside the result page).

A link target defined as "F%N" will open + the document corresponding to the %P parent + folder expansion, usually creating a file manager window on the + folder where the container file resides. E.g.: +

<a href="F%N">%P</a>

+

A link target defined as + R%N|scriptname will + run the corresponding script on the result file (if the document is + embedded, the script will be started on the top-level parent). + See the section about + defining scripts.

In addition to the predefined values above, all strings + like %(fieldname) will be replaced by the + value of the field named fieldname for this + document. Only stored fields can be accessed in this way, the + value of indexed but not stored fields is not known at this + point in the search process + (see field + configuration). There are currently very few fields + stored by default, apart from the values above + (only author + and filename), so this feature will need + some custom local configuration to be useful. An example + candidate would be the recipient field + which is generated by the message input handlers.

The default value for the paragraph format string is: +

+    "<table class=\"respar\">\n"
+    "<tr>\n"
+    "<td><a href='%U'><img src='%I' width='64'></a></td>\n"
+    "<td>%L &nbsp;<i>%S</i> &nbsp;&nbsp;<b>%T</b><br>\n"
+    "<span style='white-space:nowrap'><i>%M</i>&nbsp;%D</span>&nbsp;&nbsp;&nbsp; <i>%U</i>&nbsp;%i<br>\n"
+    "%A %K</td>\n"
+    "</tr></table>\n"
+

+ + You may, for example, try the following for a more web-like + experience: + +

+<u><b><a href="P%N">%T</a></b></u><br>
+%A<font color=#008000>%U - %S</font> - %L
+

+ + Note that the P%N link in the above paragraph makes the title a + preview link. Or the clean looking: + +

+<img src="%I" align="left">%L <font color="#900000">%R</font>
+&nbsp;&nbsp;<b>%T&</b><br>%S&nbsp;
+<font color="#808080"><i>%U</i></font>
+<table bgcolor="#e0e0e0">
+<tr><td><div>%A</div></td></tr>
+</table>%K
+

+

These samples, and some others are + on the web + site, with pictures to show how they look.

It is also possible to + + define the value of the snippet separator inside the abstract + section.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.html new file mode 100644 index 00000000..c078c98a --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.CUSTOM.html @@ -0,0 +1,274 @@ + + + + +Customizing the search interface - - Recoll user manual

Customizing the search interface

You can customize some aspects of the search interface by using + the GUI configuration entry in the + Preferences menu.

There are several tabs in the dialog, dealing with the + interface itself, the parameters used for searching and + returning results, and what indexes are searched.

User interface parameters:  +

  • Highlight color for query + terms: Terms from the user query are highlighted in + the result list samples and the preview window. The color can + be chosen here. Any Qt color string should work (ie + red, #ff0000). The + default is blue.

  • Style sheet: + The name of a Qt style sheet + text file which is applied to the whole Recoll application + on startup. The default value is empty, but there is a + skeleton style sheet (recoll.qss) + inside the /usr/share/recoll/examples + directory. Using a style sheet, you can change most + recoll graphical parameters: + colors, fonts, etc. See the sample file for a few + simple examples.

    You should be aware that parameters (e.g.: the + background color) set inside the Recoll GUI style sheet + will override global system preferences, with possible + strange side effects: for example if you set the + foreground to a light color and the background to a + dark one in the desktop preferences, but only the + background is set inside the Recoll style sheet, and it + is light too, then text will appear light-on-light + inside the Recoll GUI.

  • Maximum text size highlighted for + preview Inserting highlights on search term inside + the text before inserting it in the preview window involves + quite a lot of processing, and can be disabled over the given + text size to speed up loading.

  • Prefer HTML to plain text for + preview if set, Recoll will display HTML as such + inside the preview window. If this causes problems with the Qt + HTML display, you can uncheck it to display the plain text + version instead.

  • Plain text to HTML line style: + when displaying plain text inside the preview window, Recoll + tries to preserve some of the original text line breaks and + indentation. It can either use PRE HTML tags, which will + well preserve the indentation but will force horizontal + scrolling for long lines, or use BR tags to break at the + original line breaks, which will let the editor introduce + other line breaks according to the window width, but will + lose some of the original indentation. The third option has + been available in recent releases and is probably now the best + one: use PRE tags with line wrapping.

  • Choose editor + applicationsr: this opens a dialog which allows you + to select the application to be used to open each MIME + type. The default is nornally to use the + xdg-open utility, but you can override it.

  • Exceptions: even wen + xdg-open is used by default for opening + documents, you can set exceptions for MIME types that will + still be opened according to Recoll preferences. This is useful + for passing parameters like page numbers or search strings to + applications that support them + (e.g. evince). This cannot be done + with xdg-open which only supports passing + one parameter.

  • Document filter choice + style: this will let you choose if the document + categories are displayed as a list or a set of buttons, or a + menu.

  • Start with simple search + mode: this lets you choose the value of the simple + search type on program startup. Either a fixed value + (e.g. Query Language, or the value in use + when the program last exited.

  • Auto-start simple search on white + space entry: if this is checked, a search will be + executed each time you enter a space in the simple search input + field. This lets you look at the result list as you enter new + terms. This is off by default, you may like it or not...

  • Start with advanced search dialog open + : If you use this dialog frequently, checking + the entries will get it to open when recoll starts.

  • Remember sort activation + state if set, Recoll will remember the sort tool + stat between invocations. It normally starts with sorting + disabled.

+

Result list parameters:  +

  • Number of results in a result + page

  • Result list font: There is + quite a lot of information shown in the result list, and you + may want to customize the font and/or font size. The rest of + the fonts used by Recoll are determined by your generic Qt + config (try the qtconfig command).

  • Edit result list paragraph format string: + allows you to change the presentation of each result list + entry. See the + result list customisation section.

  • Edit result page HTML header insert: + allows you to define text inserted at the end of the result + page HTML header. + More detail in the + result list customisation section.

  • Date format: allows specifying the + format used for displaying dates inside the result list. This + should be specified as an strftime() string (man strftime).

  • Abstract snippet separator: + for synthetic abstracts built from index data, which are + usually made of several snippets from different parts of the + document, this defines the snippet separator, an ellipsis by + default.

Search parameters:  +

  • Hide duplicate results: + decides if result list entries are shown for identical + documents found in different places.

  • Stemming language: + stemming obviously depends on the document's language. This + listbox will let you chose among the stemming databases which + were built during indexing (this is set in the main configuration + file), or later added with recollindex + -s (See the recollindex manual). Stemming languages + which are dynamically added will be deleted at the next + indexing pass unless they are also added in the configuration + file.

  • Automatically add phrase to simple + searches: a phrase will be automatically built and + added to simple searches when looking for Any + terms. This will give a relevance boost to the + results where the search terms appear as a phrase (consecutive + and in order).

  • Autophrase term frequency threshold + percentage: very frequent terms should not be included + in automatic phrase searches for performance reasons. The + parameter defines the cutoff percentage (percentage of the + documents where the term appears).

  • Replace abstracts from + documents: this decides if we should synthesize and + display an abstract in place of an explicit abstract found + within the document itself.

  • Dynamically build + abstracts: this decides if Recoll tries to build + document abstracts (lists of snippets) + when displaying the result list. Abstracts are constructed by + taking context from the document information, around the search + terms.

  • Synthetic abstract size: + adjust to taste...

  • Synthetic abstract context + words: how many words should be displayed around + each term occurrence.

  • Query language magic file name + suffixes: a list of words which automatically get + turned into ext:xxx file name suffix clauses + when starting a query language query (ie: doc xls + xlsx...). This will save some typing for people who + use file types a lot when querying.

+

External indexes: This panel will let you browse for additional indexes + that you may want to search. External indexes are designated by + their database directory (ie: + /home/someothergui/.recoll/xapiandb, + /usr/local/recollglobal/xapiandb).

Once entered, the indexes will appear in the + External indexes list, and you can + chose which ones you want to use at any moment by checking or + unchecking their entries.

Your main database (the one the current configuration + indexes to), is always implicitly active. If this is not + desirable, you can set up your configuration so that it indexes, + for example, an empty directory. An alternative indexer may also + need to implement a way of purging the index from stale data, +

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.FRAGBUTS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.FRAGBUTS.html new file mode 100644 index 00000000..d975b4fa --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.FRAGBUTS.html @@ -0,0 +1,193 @@ + + + + +The Query Fragments window - - Recoll user manual

The Query Fragments window

Selecting the Tools → Query Fragments menu + entry will open a window with radio- and check-buttons which + can be used to activate query language fragments for + filtering the current query. This can be useful if you have + frequent reusable selectors, for example, filtering on + alternate directories, or searching just one category of + files, not covered by the standard category + selectors.

The contents of the window are entirely customizable, and + defined by the contents of the fragbuts.xml + file inside the configuration directory. The sample file + distributed with Recoll (which you should be able to find under + /usr/share/recoll/examples/fragbuts.xml), + contains an example which filters the results from the WEB + history.

Here follows an example: +

+<?xml version="1.0" encoding="UTF-8"?>
+
+<fragbuts version="1.0">
+
+  <radiobuttons>
+
+    <fragbut>
+      <label>Include Web Results</label>
+      <frag></frag>
+    </fragbut>
+
+    <fragbut>
+      <label>Exclude Web Results</label>
+      <frag>-rclbes:BGL</frag>
+    </fragbut>
+
+    <fragbut>
+      <label>Only Web Results</label>
+      <frag>rclbes:BGL</frag>
+    </fragbut>
+
+  </radiobuttons>
+
+  <buttons>
+
+    <fragbut>
+      <label>Year 2010</label>
+      <frag>date:2010-01-01/2010-12-31</frag>
+    </fragbut>
+
+    <fragbut>
+      <label>My Great Directory Only</label>
+      <frag>dir:/my/great/directory</frag>
+    </fragbut>
+
+  </buttons>
+</fragbuts>
+

+

Each radiobuttons or + buttons section defines a line of + checkbuttons or radiobuttons inside the window. Any number of + buttons can be selected, but the radiobuttons in a line are + exclusive.

Each fragbut section defines the label + for a button, and the Query Language fragment which will be + added (as an AND filter) before performing the query if the + button is active.

This feature is new in Recoll 1.20, and will probably be + refined depending on user feedback.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.HISTORY.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.HISTORY.html new file mode 100644 index 00000000..90917fa4 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.HISTORY.html @@ -0,0 +1,138 @@ + + + + +Document history - - Recoll user manual

Document history

Documents that you actually view (with the internal preview + or an external tool) are entered into the document history, + which is remembered.

You can display the history list by using + the Tools/Doc History menu + entry.

You can erase the document history by using the + Erase document history entry in the + File menu.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.MULTIDB.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.MULTIDB.html new file mode 100644 index 00000000..a9553d74 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.MULTIDB.html @@ -0,0 +1,172 @@ + + + + +Multiple indexes - - Recoll user manual

Multiple indexes

See the section + describing the use of multiple indexes for + generalities. Only the aspects concerning + the recoll GUI are described here.

A recoll program instance is always + associated with a specific index, which is the one to be updated + when requested from the File menu, but it can + use any number of Recoll indexes for searching. The external + indexes can be selected through the external + indexes tab in the preferences dialog.

Index selection is performed in two phases. A set of all + usable indexes must first be defined, and then the subset of + indexes to be used for searching. These parameters + are retained across program executions (there are kept + separately for each Recoll configuration). The set of all indexes + is usually quite stable, while the active ones might typically + be adjusted quite frequently.

The main index (defined by + RECOLL_CONFDIR) is always active. If this is + undesirable, you can set up your base configuration to index + an empty directory.

When adding a new index to the set, you can select either + a Recoll configuration directory, or directly a Xapian index + directory. In the first case, the Xapian index directory will + be obtained from the selected configuration.

As building the set of all indexes can be a little tedious + when done through the user interface, you can use the + RECOLL_EXTRA_DBS environment + variable to provide an initial set. This might typically be + set up by a system administrator so that every user does not + have to do it. The variable should define a colon-separated list + of index directories, ie: +

export RECOLL_EXTRA_DBS=/some/place/xapiandb:/some/other/db

Another environment variable, + RECOLL_ACTIVE_EXTRA_DBS allows adding to the active + list of indexes. This variable was suggested and implemented by a + Recoll user. It is mostly useful if you use scripts to mount + external volumes with Recoll indexes. By using + RECOLL_EXTRA_DBS and + RECOLL_ACTIVE_EXTRA_DBS, you can add and activate + the index for the mounted volume when starting + recoll. +

RECOLL_ACTIVE_EXTRA_DBS is available for + Recoll versions 1.17.2 and later. A change was made in the same + update so that recoll will + automatically deactivate unreachable indexes when starting + up.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.SEARCH.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.SEARCH.html new file mode 100644 index 00000000..c6c260c0 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.SEARCH.html @@ -0,0 +1,162 @@ + + + + +Searching inside the preview - - Recoll user manual

Searching inside the preview

The preview window has an internal search capability, + mostly controlled by the panel at the bottom of the window, + which works in two modes: as a classical editor incremental + search, where we look for the text entered in the entry + zone, or as a way to walk the matches between the document + and the Recoll query that found it.

Incremental text search

The preview tabs have an internal incremental search + function. You initiate the search either by typing a + / (slash) or CTL-F + inside the text area or by clicking into + the Search for: text field and + entering the search string. You can then use the + Next + and Previous buttons + to find the next/previous occurrence. You can also type + F3 inside the text area to get to the next + occurrence.

If you have a search string entered and you use + Ctrl-Up/Ctrl-Down to browse the results, the search is + initiated for each successive document. If the string is + found, the cursor will be positioned at the first + occurrence of the search string.

Walking the match lists

If the entry area is empty when you click + the Next + or Previous buttons, the editor will + be scrolled to show the next match to any search term + (the next highlighted zone). If you select a search group + from the dropdown list and click Next + or Previous, the match list for this + group will be walked. This is not the same as a text + search, because the occurences will include non-exact + matches (as caused by stemming or wildcards). The search + will revert to the text mode as soon as you edit the + entry area.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.html new file mode 100644 index 00000000..1e4127db --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.PREVIEW.html @@ -0,0 +1,156 @@ + + + + +The preview window - - Recoll user manual

The preview window

The preview window opens when you first click a + Preview link inside the result list.

Subsequent preview requests for a given search open new + tabs in the existing window (except if you hold the + Shift key while clicking which will open a new + window for side by side viewing).

Starting another search and requesting a preview will + create a new preview window. The old one stays open until you + close it.

You can close a preview tab by typing Ctrl-W + (Ctrl + W) in the + window. Closing the last tab for a window will also close the + window.

Of course you can also close a preview window by using the + window manager button in the top of the frame.

You can display successive or previous documents from the + result list inside a preview tab by typing + Shift+Down or + Shift+Up (Down + and Up are the arrow keys).

A right-click menu in the text area allows switching + between displaying the main text or the contents of fields + associated to the document (ie: author, abtract, etc.). This is + especially useful in cases where the term match did not occur in + the main text but in one of the fields. In the case of + images, you can switch between three displays: the image + itself, the image metadata as extracted + by exiftool and the fields, which is the + metadata stored in the index.

You can print the current preview window contents by typing + Ctrl-P (Ctrl + + P) in the window text.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.SUGGS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.SUGGS.html new file mode 100644 index 00000000..b953252d --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.SUGGS.html @@ -0,0 +1,139 @@ + + + + +No results: the spelling suggestions - - Recoll user manual

No results: the spelling suggestions

When a search yields no result, and if the + aspell dictionary is configured, Recoll + will try to check for misspellings among the query terms, and + will propose lists of replacements. Clicking on one of the + suggestions will replace the word and restart the search. You can + hold any of the modifier keys (Ctrl, Shift, etc.) while clicking + if you would rather stay on the suggestion screen because several + terms need replacement.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.html new file mode 100644 index 00000000..1e6ffded --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESLIST.html @@ -0,0 +1,187 @@ + + + + +The default result list - - Recoll user manual

The default result list

After starting a search, a list of results will instantly + be displayed in the main list window.

By default, the document list is presented in order of + relevance (how well the system estimates that the document + matches the query). You can sort the result by ascending or + descending date by using the vertical arrows in the toolbar.

Clicking on the + Preview link for an entry will open an + internal preview window for the document. Further + Preview clicks for the same search will open + tabs in the existing preview window. You can use + Shift+Click to force the creation of another + preview window, which may be useful to view the documents side + by side. (You can also browse successive results in a single + preview window by typing + Shift+ArrowUp/Down in the + window).

Clicking the Open link will + start an external viewer for the document. By default, Recoll lets + the desktop choose the appropriate application for most document + types (there is a short list of exceptions, see further). If you + prefer to completely customize the choice of applications, you can + uncheck the Use desktop preferences option in + the GUI preferences dialog, and click the Choose editor + applications button to adjust the predefined Recoll + choices. The tool accepts multiple selections of MIME types (e.g. to + set up the editor for the dozens of office file types).

Even when Use desktop preferences is + checked, there is a small list of exceptions, for MIME types where + the Recoll choice should override the desktop one. These are + applications which are well integrated with Recoll, especially + evince for viewing PDF and Postscript + files because of its support for opening the document at a specific + page and passing a search string as an argument. Of course, you can + edit the list (in the GUI preferences) if you would prefer to lose + the functionality and use the standard desktop tool.

You may also change the choice of applications by editing the + + mimeview configuration file if you find + this more convenient.

Each result entry also has a right-click menu with an + Open With entry. This lets you choose an + application from the list of those which registered with the desktop + for the document MIME type.

The Preview and Open + edit links may not be present for all entries, meaning that + Recoll has no configured way to preview a given file type (which + was indexed by name only), or no configured external editor for + the file type. This can sometimes be adjusted simply by tweaking + the + mimemap and + + mimeview configuration files (the latter + can be modified with the user preferences dialog).

The format of the result list entries is entirely + configurable by using the preference dialog to + edit an HTML + fragment.

You can click on the Query details link + at the top of the results page to see the query actually + performed, after stem expansion and other processing.

Double-clicking on any word inside the result list or a + preview window will insert it into the simple search text.

The result list is divided into pages (the size of which + you can change in the preferences). Use the arrow buttons in the + toolbar or the links at the bottom of the page to browse the + results.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESTABLE.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESTABLE.html new file mode 100644 index 00000000..5de5ded2 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESTABLE.html @@ -0,0 +1,151 @@ + + + + +The result table - - Recoll user manual

The result table

In Recoll 1.15 and newer, the results can be displayed in + spreadsheet-like fashion. You can switch to this presentation by + clicking the table-like icon in the toolbar (this is a toggle, + click again to restore the list).

Clicking on the column headers will allow sorting by the + values in the column. You can click again to invert the order, and + use the header right-click menu to reset sorting to the default + relevance order (you can also use the sort-by-date arrows to do + this).

Both the list and the table display the same underlying + results. The sort order set from the table is still active if you + switch back to the list mode. You can click twice on a date sort + arrow to reset it from there.

The header right-click menu allows adding or deleting + columns. The columns can be resized, and their order can be changed + (by dragging). All the changes are recorded when you quit + recoll

Hovering over a table row will update the detail area at the + bottom of the window with the corresponding values. You can click + the row to freeze the display. The bottom area is equivalent to a + result list paragraph, with links for starting a preview or a + native application, and an equivalent right-click menu. Typing + Esc (the Escape key) will unfreeze the + display.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESULTLIST.MENU.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESULTLIST.MENU.html new file mode 100644 index 00000000..8094c59e --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RESULTLIST.MENU.html @@ -0,0 +1,174 @@ + + + + +The result list right-click menu - - Recoll user manual

The result list right-click menu

Apart from the preview and edit links, you can display a + pop-up menu by right-clicking over a paragraph in the result + list. This menu has the following entries:

  • Preview

  • Open

  • Open With

  • Run Script

  • Copy File Name

  • Copy Url

  • Save to File

  • Find similar

  • Preview Parent + document

  • Open Parent + document

  • Open Snippets + Window

The Preview and + Open entries do the same thing as the + corresponding links.

Open With lets you open the document + with one of the applications claiming to be able to handle its MIME + type (the information comes from the .desktop + files in + /usr/share/applications).

Run Script allows starting an arbitrary + command on the result file. It will only appear for results which + are top-level files. See further for a more + detailed description.

The Copy File Name and + Copy Url copy the relevant data to the + clipboard, for later pasting.

Save to File allows saving the + contents of a result document to a chosen file. This entry + will only appear if the document does not correspond to an + existing file, but is a subdocument inside such a file (ie: an + email attachment). It is especially useful to extract attachments + with no associated editor.

The Open/Preview Parent document entries + allow working with the higher level document (e.g. the email + message an attachment comes from). Recoll is sometimes not totally + accurate as to what it can or can't do in this area. For example + the Parent entry will also appear for an + email which is part of an mbox folder file, but you can't actually + visualize the mbox (there will be an error dialog if you + try).

If the document is a top-level file, Open + Parent will start the default file manager on the + enclosing filesystem directory.

The Find similar entry will select + a number of relevant term from the current document and enter + them into the simple search field. You can then start a simple + search, with a good chance of finding documents related to the + current result. I can't remember a single instance where this + function was actually useful to me...

The Open Snippets Window entry will only + appear for documents which support page breaks (typically + PDF, Postscript, DVI). The snippets window lists extracts from + the document, taken around search terms occurrences, along with the + corresponding page number, as links which can be used to start + the native viewer on the appropriate page. If the viewer supports + it, its search function will also be primed with one of the + search terms.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RUNSCRIPT.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RUNSCRIPT.html new file mode 100644 index 00000000..23133af0 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.RUNSCRIPT.html @@ -0,0 +1,161 @@ + + + + +Running arbitrary commands on result files (1.20 and later) - - Recoll user manual

Running arbitrary commands on result files (1.20 and later)

Apart from the Open and Open + With operations, which allow starting an application on a + result document (or a temporary copy), based on its MIME type, it is + also possible to run arbitrary commands on results which are + top-level files, using the Run Script entry in + the results pop-up menu.

The commands which will appear in the Run + Script submenu must be defined by + .desktop files inside the + scripts subdirectory of the current + configuration directory.

Here follows an example of a .desktop file, + which could be named for example, + ~/.recoll/scripts/myscript.desktop (the exact + file name inside the directory is irrelevant): +

+[Desktop Entry]
+Type=Application
+Name=MyFirstScript
+Exec=/home/me/bin/tryscript %F
+MimeType=*/*
+      

+ The Name attribute defines the label which will + appear inside the Run Script menu. The + Exec attribute defines the program to be run, + which does not need to actually be a script, of course. The + MimeType attribute is not used, but needs to exist. +

The commands defined this way can also be used from links + inside the + result paragraph.

As an example, it might make sense to write a script which + would move the document to the trash and purge it from the Recoll + index.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SIMPLE.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SIMPLE.html new file mode 100644 index 00000000..c48dff9c --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SIMPLE.html @@ -0,0 +1,191 @@ + + + + +Simple search - - Recoll user manual

Simple search

  1. Start the recoll program.

  2. Possibly choose a search mode: Any + term, All terms, + File name or + Query language.

  3. Enter search term(s) in the text field at the top of the + window.

  4. Click the Search button or + hit the Enter key to start the search.

The initial default search mode is Query + language. Without special directives, this will look for + documents containing all of the search terms (the ones with more + terms will get better scores), just like the All + terms mode which will ignore such + directives. Any term will search for documents + where at least one of the terms appear.

The Query Language features are + described in a separate + section.

All search modes allow wildcards inside terms + (*, ?, + []). You may want to have a look at the + section about wildcards + for more information about this.

File name will specifically look for file + names. The point of having a separate file name + search is that wild card expansion can be performed more + efficiently on a small subset of the index (allowing + wild cards on the left of terms without excessive penality). + Things to know: +

  • White space in the entry should match white + space in the file name, and is not treated specially.

  • The search is insensitive to character case and + accents, independantly of the type of index.

  • An entry without any wild card + character and not capitalized will be prepended and appended + with '*' (ie: etc -> + *etc*, but + Etc -> + etc).

  • If you have a big index (many files), + excessively generic fragments may result in inefficient + searches.

+

You can search for exact phrases (adjacent words in a + given order) by enclosing the input inside double quotes. Ex: + "virtual reality".

When using a stripped index, character case has no influence on + search, except that you can disable stem expansion for any term by + capitalizing it. Ie: a search for floor will also + normally look for flooring, + floored, etc., but a search for + Floor will only look for floor, + in any character case. Stemming can also be disabled globally in the + preferences. When using a raw index, the rules are a bit more + complicated.

Recoll remembers the last few searches that you + performed. You can use the simple search text entry widget (a + combobox) to recall them (click on the thing at the right of the + text field). Please note, however, that only the search texts + are remembered, not the mode (all/any/file name).

Typing Esc Space while + entering a word in the simple search entry will open a window + with possible completions for the word. The completions are + extracted from the database.

Double-clicking on a word in the result list or a preview + window will insert it into the simple search entry field.

You can cut and paste any text into an All + terms or Any term search field, + punctuation, newlines and all - except for wildcard characters + (single ? characters are ok). Recoll will process + it and produce a meaningful search. This is what most differentiates + this mode from the Query Language mode, where + you have to care about the syntax.

You can use the + Tools → Advanced search + dialog for more complex searches.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SORT.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SORT.html new file mode 100644 index 00000000..b177c456 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.SORT.html @@ -0,0 +1,155 @@ + + + + +Sorting search results and collapsing duplicates - - Recoll user manual

Sorting search results and collapsing duplicates

The documents in a result list are normally sorted in + order of relevance. It is possible to specify a different sort + order, either by using the vertical arrows in the GUI toolbox to + sort by date, or switching to the result table display and clicking + on any header. The sort order chosen inside the result table + remains active if you switch back to the result list, until you + click one of the vertical arrows, until both are unchecked (you are + back to sort by relevance).

Sort parameters are remembered between program + invocations, but result sorting is normally always inactive + when the program starts. It is possible to keep the sorting + activation state between program invocations by checking the + Remember sort activation state option in + the preferences.

It is also possible to hide duplicate entries inside + the result list (documents with the exact same contents as the + displayed one). The test of identity is based on an MD5 hash + of the document container, not only of the text contents (so + that ie, a text document with an image added will not be a + duplicate of the text only). Duplicates hiding is controlled + by an entry in the GUI configuration + dialog, and is off by default.

As of release 1.19, when a result document does have + undisplayed duplicates, a Dups + link will be shown with the result list entry. Clicking the + link will display the paths (URLs + ipaths) for the duplicate + entries.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TERMEXPLORER.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TERMEXPLORER.html new file mode 100644 index 00000000..56c597f5 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TERMEXPLORER.html @@ -0,0 +1,179 @@ + + + + +The term explorer tool - - Recoll user manual

The term explorer tool

Recoll automatically manages the expansion of search terms + to their derivatives (ie: plural/singular, verb + inflections). But there are other cases where the exact search + term is not known. For example, you may not remember the exact + spelling, or only know the beginning of the name.

The search will only propose replacement terms with + spelling variations when no matching document were found. In some + cases, both proper spellings and mispellings are present in the + index, and it may be interesting to look for them explicitely.

The term explorer tool (started from the toolbar icon or + from the Term explorer entry of the + Tools menu) can be used to search the full index + terms list. It has three modes of operations:

Wildcard

In this mode of operation, you can enter a + search string with shell-like wildcards (*, ?, []). ie: + xapi* would display all index terms + beginning with xapi. (More + about wildcards here).

Regular expression

This mode will accept a regular expression + as input. Example: + word[0-9]+. The expression is + implicitely anchored at the beginning. Ie: + press will match + pression but not + expression. You can use + .*press to match the latter, + but be aware that this will cause a full index term list + scan, which can be quite long.

Stem expansion

This mode will perform the usual stem expansion + normally done as part user input processing. As such it is + probably mostly useful to demonstrate the process. +

Spelling/Phonetic

In this + mode, you enter the term as you think it is spelled, and + Recoll will do its best to find index terms that sound like + your entry. This mode uses the + Aspell spelling application, + which must be installed on your system for things to work + (if your documents contain non-ascii characters, Recoll + needs an aspell version newer than 0.60 for UTF-8 + support). The language which is used to build the + dictionary out of the index terms (which is done at the + end of an indexing pass) is the one defined by your NLS + environment. Weird things will probably happen if + languages are mixed up.

Note that in cases where Recoll does not know the beginning + of the string to search for (ie a wildcard expression like + *coll), the expansion can take quite + a long time because the full index term list will have to be + processed. The expansion is currently limited at 10000 results for + wildcards and regular expressions. It is possible to change the + limit in the configuration file.

Double-clicking on a term in the result list will insert + it into the simple search entry field. You can also cut/paste + between the result list and any entry field (the end of lines + will be taken care of).

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.THUMBNAILS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.THUMBNAILS.html new file mode 100644 index 00000000..2a52d760 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.THUMBNAILS.html @@ -0,0 +1,146 @@ + + + + +Displaying thumbnails - - Recoll user manual

Displaying thumbnails

The default format for the result list entries and the + detail area of the result table display an icon for each result + document. The icon is either a generic one determined from the + MIME type, or a thumbnail of the document appearance. Thumbnails + are only displayed if found in the standard + freedesktop location, where they would + typically have been created by a file manager.

Recoll has no capability to create thumbnails. A relatively + simple trick is to use the Open parent + document/folder entry in the result list popup + menu. This should open a file manager window on the containing + directory, which should in turn create the thumbnails (depending on + your settings). Restarting the search should then display the + thumbnails.

There are also some + pointers about thumbnail generation on the Recoll wiki. +

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.MISC.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.MISC.html new file mode 100644 index 00000000..0822f13a --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.MISC.html @@ -0,0 +1,177 @@ + + + + +Others - - Recoll user manual

Others

Using fields. You can use the query + language and field specifications + to only search certain parts of documents. This can be + especially helpful with email, for example only searching + emails from a specific originator: + search tips from:helpfulgui +

Ajusting the result table columns. When displaying results in table mode, you can use a + right click on the table headers to activate a pop-up menu + which will let you adjust what columns are displayed. You can + drag the column headers to adjust their order. You can click + them to sort by the field displayed in the column. You can + also save the result list in CSV format.

Changing the GUI geometry. It is possible to configure the GUI in wide form + factor by dragging the toolbars to one of the sides (their + location is remembered between sessions), and moving the + category filters to a menu (can be set in the + Preferences → GUI configuration → User interface panel).

Query explanation. You can get an exact description of what the query + looked for, including stem expansion, and Boolean operators + used, by clicking on the result list header.

Advanced search history. As of Recoll 1.18, you can display any of the last 100 complex + searches performed by using the up and down arrow keys while the + advanced search panel is active.

Browsing the result list inside a preview + window. Entering Shift-Down or Shift-Up + (Shift + an arrow key) in a preview window will + display the next or the previous document from the result + list. Any secondary search currently active will be executed on + the new document.

Scrolling the result list from the keyboard. You can use PageUp and PageDown + to scroll the result list, Shift+Home to go back + to the first page. These work even while the focus is in the + search entry.

Result table: moving the focus to the table. You can use Ctrl-r to move the focus + from the search entry to the table, and then use the arrow keys + to change the current row. Ctrl-Shift-s returns to + the search.

Result table: open / preview. With the focus in the result table, you can use + Ctrl-o to open the document from the current + row, Ctrl-Shift-o to open the document and close + recoll, Ctrl-d to preview + the document.

Editing a new search while the focus is not + in the search entry. You can use the Ctrl-Shift-S shortcut to + return the cursor to the search entry (and select the current + search text), while the focus is anywhere in the main + window.

Forced opening of a preview window. You can use Shift+Click on a result list + Preview link to force the creation of a + preview window instead of a new tab in the existing one.

Closing previews. Entering Ctrl-W in a tab will + close it (and, for the last tab, close the preview + window). Entering Esc will close the preview + window and all its tabs.

Printing previews. Entering Ctrl-P in a preview window will print + the currently displayed text.

Quitting. Entering Ctrl-Q almost anywhere will + close the application.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.PHRASES.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.PHRASES.html new file mode 100644 index 00000000..2a15c6de --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.PHRASES.html @@ -0,0 +1,162 @@ + + + + +Working with phrases and proximity - - Recoll user manual

Working with phrases and proximity

Phrases and Proximity searches. A phrase can be looked for by enclosing it in double + quotes. Example: "user manual" will look + only for occurrences of user immediately + followed by manual. You can use the + This phrase field of the advanced + search dialog to the same effect. Phrases can be entered along + simple terms in all simple or advanced search entry fields + (except This exact phrase).

AutoPhrases. This option can be set in the preferences dialog. If it is + set, a phrase will be automatically built and added to simple + searches when looking for Any terms. This + will not change radically the results, but will give a relevance + boost to the results where the search terms appear as a + phrase. Ie: searching for virtual reality + will still find all documents where either + virtual or reality or + both appear, but those which contain virtual + reality should appear sooner in the list.

Phrase searches can strongly slow down a query if most of the + terms in the phrase are common. This is why the + autophrase option is off by default for Recoll + versions before 1.17. As of version 1.17, + autophrase is on by default, but very common + terms will be removed from the constructed phrase. The removal + threshold can be adjusted from the search preferences.

Phrases and abbreviations. As of + Recoll version 1.17, dotted abbreviations like + I.B.M. are also automatically indexed as a word + without the dots: IBM. Searching for the word + inside a phrase (ie: "the IBM company") will only + match the dotted abrreviation if you increase the phrase slack (using the + advanced search panel control, or the o query + language modifier). Literal occurences of the word will be matched + normally.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.TERMS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.TERMS.html new file mode 100644 index 00000000..0d1f9db8 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.TERMS.html @@ -0,0 +1,163 @@ + + + + +Terms and search expansion - - Recoll user manual

Terms and search expansion

Term completion. Typing Esc Space in + the simple search entry field while entering a word will + either complete the current word if its beginning matches a + unique term in the index, or open a window to propose a list + of completions.

Picking up new terms from result or preview + text. Double-clicking on a word in the result list or in a + preview window will copy it to the simple search entry field.

Wildcards. Wildcards can be used inside search terms in all forms + of searches. + More about wildcards. +

Automatic suffixes. Words like odt or ods + can be automatically turned into query language + ext:xxx clauses. This can be enabled in the + Search preferences panel in the GUI. +

Disabling stem expansion. Entering a capitalized word in any search field will prevent + stem expansion (no search for + gardening if you enter + Garden instead of + garden). This is the only case where + character case should make a difference for a Recoll + search. You can also disable stem expansion or change the + stemming language in the preferences.

Finding related documents. Selecting the Find similar documents entry + in the result list paragraph right-click menu will select a + set of "interesting" terms from the current result, and insert + them into the simple search entry field. You can then possibly + edit the list and start a search to find documents which may + be apparented to the current result.

File names. File names are added as terms during indexing, and you can + specify them as ordinary terms in normal search fields (Recoll used + to index all directories in the file path as terms. This has been + abandoned as it did not seem really useful). Alternatively, you + can use the specific file name search which will + only look for file names, and may be + faster than the generic search especially when using wildcards.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.html new file mode 100644 index 00000000..5dcdc772 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.TIPS.html @@ -0,0 +1,132 @@ + + + + +Search tips, shortcuts - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.html b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.html new file mode 100644 index 00000000..3763736c --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.GUI.html @@ -0,0 +1,153 @@ + + + + +Searching with the Qt graphical user interface - - Recoll user manual

Searching with the Qt graphical user interface

The recoll program provides the main user + interface for searching. It is based on the + Qt library.

recoll has two search modes:

  • Simple search (the default, on the main screen) has + a single entry field where you can enter multiple words.

  • Advanced search (a panel accessed through the + Tools menu or the toolbox bar icon) has + multiple entry fields, which you may use to build a logical + condition, with additional filtering on file type, location + in the file system, modification date, and size.

In most cases, you can enter the terms as you + think them, even if they contain embedded punctuation or other + non-textual characters. For + example, Recoll can handle things like email addresses, or + arbitrary cut and paste from another text window, punctation + and all.

The main case where you should enter text differently from + how it is printed is for east-asian languages (Chinese, + Japanese, Korean). Words composed of single or multiple + characters should be entered separated by white space in this + case (they would typically be printed without white + space).

Some searches can be quite complex, and you may want to + re-use them later, perhaps with some tweaking. Recoll versions + 1.21 and later can save and restore searches, using XML files. See + Saving and restoring + queries.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.INTRO.html b/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.INTRO.html new file mode 100644 index 00000000..1d352a31 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.INTRO.html @@ -0,0 +1,151 @@ + + + + +What's this - - Recoll user manual

What's this

The Recoll KIO slave allows performing a Recoll search + by entering an appropriate URL in a KDE open dialog, or with an + HTML-based interface displayed in + Konqueror.

The HTML-based interface is similar to the Qt-based + interface, but slightly less powerful for now. Its advantage is + that you can perform your search while staying fully within the + KDE framework: drag and drop from the result list works normally + and you have your normal choice of applications for opening + files.

The alternative interface uses a directory view of search + results. Due to limitations in the current KIO slave interface, + it is currently not obviously useful (to me).

The interface is described in more detail inside a help + file which you can access by entering + recoll:/ inside the + konqueror URL line (this works only if the + recoll KIO slave has been previously installed).

The instructions for building this module are located in the + source tree. See: + kde/kio/recoll/00README.txt. Some Linux + distributions do package the kio-recoll module, so check before + diving into the build process, maybe it's already out there ready for + one-click installation.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.SEARCHABLEDOCS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.SEARCHABLEDOCS.html new file mode 100644 index 00000000..14bebc14 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.SEARCHABLEDOCS.html @@ -0,0 +1,150 @@ + + + + +Searchable documents - - Recoll user manual

Searchable documents

As a sample application, the Recoll KIO slave could allow + preparing a set of HTML documents (for example a manual) so that + they become their own search interface inside + konqueror.

This can be done by either explicitly inserting + <a href="recoll://..."> links + around some document areas, or automatically by adding a + very small javascript program to the + documents, like the following example, which would initiate a search by + double-clicking any term:

<script language="JavaScript">
+    function recollsearch() {
+        var t = document.getSelection();
+        window.location.href = 'recoll://search/query?qtp=a&p=0&q=' +
+            encodeURIComponent(t);
+    }
+</script>
+ ....
+<body ondblclick="recollsearch()">
+
+
diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.html b/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.html new file mode 100644 index 00000000..4f44c157 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.KIO.html @@ -0,0 +1,132 @@ + + + + +Searching with the KDE KIO slave - - Recoll user manual

Searching with the KDE KIO slave

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.LANG.MODIFIERS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.LANG.MODIFIERS.html new file mode 100644 index 00000000..73717a71 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.LANG.MODIFIERS.html @@ -0,0 +1,152 @@ + + + + +Modifiers - - Recoll user manual

Modifiers

Some characters are recognized as search modifiers when found + immediately after the closing double quote of a phrase, as in + "some term"modifierchars. The actual "phrase" + can be a single term of course. Supported modifiers: + +

  • l can be used to turn off + stemming (mostly makes sense with p because + stemming is off by default for phrases).

  • s can be used to turn off + synonym expansion, if a synonyms file is in place (only for + Recoll 1.22 and later).

  • o can be used to specify a + "slack" for phrase and proximity searches: the number of + additional terms that may be found between the specified + ones. If o is followed by an integer number, + this is the slack, else the default is 10.

  • p can be used to turn the + default phrase search into a proximity one + (unordered). Example: "order any in"p

  • C will turn on case + sensitivity (if the index supports it).

  • D will turn on diacritics + sensitivity (if the index supports it).

  • A weight can be specified for a query element + by specifying a decimal value at the start of the + modifiers. Example: "Important"2.5.

+

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.LANG.html b/src/doc/user/webhelp/docs/RCL.SEARCH.LANG.html new file mode 100644 index 00000000..16fd960a --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.LANG.html @@ -0,0 +1,323 @@ + + + + +The query language - - Recoll user manual

The query language

The query language processor is activated in the GUI + simple search entry when the search mode selector is set to + Query Language. It can also be used with the KIO + slave or the command line search. It broadly has the same + capabilities as the complex search interface in the + GUI.

The language is based on the (seemingly defunct) + + Xesam user search language specification.

If the results of a query language search puzzle you and you + doubt what has been actually searched for, you can use the GUI + Show Query link at the top of the result list to + check the exact query which was finally executed by Xapian.

Here follows a sample request that we are going to + explain:

+          author:"john doe" Beatles OR Lennon Live OR Unplugged -potatoes
+      

This would search for all documents with + John Doe + appearing as a phrase in the author field (exactly what this is + would depend on the document type, ie: the + From: header, for an email message), + and containing either beatles or + lennon and either + live or + unplugged but not + potatoes (in any part of the document).

An element is composed of an optional field specification, + and a value, separated by a colon (the field separator is the last + colon in the element). Examples: + Eugenie, + author:balzac, + dc:title:grandet + dc:title:"eugenie grandet" +

The colon, if present, means "contains". Xesam defines other + relations, which are mostly unsupported for now (except in special + cases, described further down).

All elements in the search entry are normally combined + with an implicit AND. It is possible to specify that elements be + OR'ed instead, as in Beatles + OR Lennon. The + OR must be entered literally (capitals), and + it has priority over the AND associations: + word1 + word2 OR + word3 + means + word1 AND + (word2 OR + word3) + not + (word1 AND + word2) OR + word3. Explicit + parenthesis are not supported.

As of Recoll 1.21, you can use parentheses to group + elements, which will sometimes make things clearer, and may + allow expressing combinations which would have been difficult + otherwise.

An element preceded by a - specifies a + term that should not appear.

As usual, words inside quotes define a phrase + (the order of words is significant), so that + title:"prejudice pride" is not the same as + title:prejudice title:pride, and is + unlikely to find a result.

Words inside phrases and capitalized words are not + stem-expanded. Wildcards may be used anywhere inside a term. + Specifying a wild-card on the left of a term can produce a very + slow search (or even an incorrect one if the expansion is + truncated because of excessive size). Also see + + More about wildcards.

To save you some typing, recent Recoll versions (1.20 and later) + interpret a comma-separated list of terms as an AND list inside the + field. Use slash characters ('/') for an OR list. No white space + is allowed. So +

author:john,lennon

will search for + documents with john and lennon + inside the author field (in any order), and +

author:john/ringo

would search for + john or ringo.

Modifiers can be set on a double-quote value, for example to specify + a proximity search (unordered). See + the modifier + section. No space must separate the final + double-quote and the modifiers value, e.g. "two + one"po10

Recoll currently manages the following default fields:

  • title, + subject or caption are + synonyms which specify data to be searched for in the + document title or subject.

  • author or + from for searching the documents + originators.

  • recipient or + to for searching the documents + recipients.

  • keyword for searching the + document-specified keywords (few documents actually have + any).

  • filename for the document's + file name. This is not necessarily set for all documents: + internal documents contained inside a compound one (for example + an EPUB section) do not inherit the container file name any more, + this was replaced by an explicit field (see next). Sub-documents + can still have a specific filename, if it is + implied by the document format, for example the attachment file + name for an email attachment.

  • containerfilename. This is + set for all documents, both top-level and contained + sub-documents, and is always the name of the filesystem directory + entry which contains the data. The terms from this field can + only be matched by an explicit field specification (as opposed + to terms from filename which are also indexed + as general document content). This avoids getting matches for + all the sub-documents when searching for the container file + name.

  • ext specifies the file + name extension (Ex: ext:html)

Recoll 1.20 and later have a way to specify aliases for the + field names, which will save typing, for example by aliasing + filename to fn or + containerfilename to + cfn. See the section about the + fields file

The field syntax also supports a few field-like, but + special, criteria:

  • dir for filtering the + results on file location + (Ex: dir:/home/me/somedir). + -dir + also works to find results not in the specified directory + (release >= 1.15.8). Tilde expansion will be performed as + usual (except for a bug in versions 1.19 to + 1.19.11p1). Wildcards will be expanded, but + please have a + look at an important limitation of wildcards in + path filters.

    Relative paths also make sense, for example, + dir:share/doc would match either + /usr/share/doc or + /usr/local/share/doc

    Several dir clauses can be specified, + both positive and negative. For example the following makes sense: +

    +dir:recoll dir:src -dir:utils -dir:common
    +            

    This would select results which have both + recoll and src in the + path (in any order), and which have not either + utils or + common.

    You can also use OR conjunctions + with dir: clauses.

    A special aspect of dir clauses is + that the values in the index are not transcoded to UTF-8, and + never lower-cased or unaccented, but stored as binary. This means + that you need to enter the values in the exact lower or upper + case, and that searches for names with diacritics may sometimes + be impossible because of character set conversion + issues. Non-ASCII UNIX file paths are an unending source of + trouble and are best avoided.

    You need to use double-quotes around the path value if it + contains space characters.

  • size for filtering the + results on file size. Example: + size<10000. You can use + <, > or + = as operators. You can specify a range like the + following: size>100 size<1000. The usual + k/K, m/M, g/G, t/T can be used as (decimal) + multipliers. Ex: size>1k to search for files + bigger than 1000 bytes.

  • date for searching or filtering + on dates. The syntax for the argument is based on the ISO8601 + standard for dates and time intervals. Only dates are supported, no + times. The general syntax is 2 elements separated by a + / character. Each element can be a date or a + period of time. Periods are specified as + PnYnMnD. + The n numbers are the respective numbers + of years, months or days, any of which may be missing. Dates are + specified as + YYYY-MM-DD. + The days and months parts may be missing. If the + / is present but an element is missing, the + missing element is interpreted as the lowest or highest date in the + index. Examples:

    • 2001-03-01/2002-05-01 the + basic syntax for an interval of dates.

    • 2001-03-01/P1Y2M the + same specified with a period.

    • 2001/ from the beginning of + 2001 to the latest date in the index.

    • 2001 the whole year of + 2001

    • P2D/ means 2 days ago up to + now if there are no documents with dates in the future.

    • /2003 all documents from + 2003 or older.

    Periods can also be specified with small letters (ie: + p2y).

  • mime or + format for specifying the + MIME type. These clauses are processed besides the normal + Boolean logic of the search. Multiple values will be OR'ed + (instead of the normal AND). You can specify types to be + excluded, with the usual -, and use + wildcards. Example: mime:text/* + -mime:text/plain + Specifying an explicit boolean + operator before a mime specification is not + supported and will produce strange results.

  • type or + rclcat for specifying the category (as in + text/media/presentation/etc.). The classification of MIME + types in categories is defined in the Recoll configuration + (mimeconf), and can be modified or + extended. The default category names are those which permit + filtering results in the main GUI screen. Categories are OR'ed + like MIME types above, and can be negated with + -.

Note

+ mime is the only field with an + OR default. You do need to use + OR with ext terms for + example.

The document input handlers used while indexing have the + possibility to create other fields with arbitrary names, and + aliases may be defined in the configuration, so that the exact + field search possibilities may be different for you if someone + took care of the customisation.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.PTRANS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.PTRANS.html new file mode 100644 index 00000000..2fd416a4 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.PTRANS.html @@ -0,0 +1,167 @@ + + + + +Path translations - - Recoll user manual

Path translations

In some cases, the document paths stored inside the index do + not match the actual ones, so that document + previews and accesses will fail. This can occur in a number of + circumstances:

  • When using multiple indexes it is a relatively common + occurrence that some will actually reside on a remote volume, for + exemple mounted via NFS. In this case, the paths used to access + the documents on the local machine are not necessarily the same + than the ones used while indexing on the remote machine. For + example, /home/me may have been used as + a topdirs elements while indexing, but the + directory might be mounted + as /net/server/home/me on the local + machine.

  • The case may also occur with removable + disks. It is perfectly possible to configure an index to + live with the documents on the removable disk, but it may + happen that the disk is not mounted at the same place so + that the documents paths from the index are + invalid.

  • As a last exemple, one could imagine that a big + directory has been moved, but that it is currently + inconvenient to run the indexer.

Recoll has a facility for rewriting access paths when + extracting the data from the index. The translations can be + defined for the main index and for any additional query + index.

The path translation facility will be useful + whenever the documents paths seen by the indexer are not the same + as the ones which should be used at query time.

In the above NFS example, Recoll could be instructed to + rewrite any file:///home/me URL from the + index to file:///net/server/home/me, + allowing accesses from the client.

The translations are defined in the + + ptrans configuration file, which + can be edited by hand or from the GUI external indexes + configuration dialog: Preferences → External index dialog, then click the Paths + translations button on the right below the index + list.

Note

Due to a current bug, the GUI must be restarted + after changing the ptrans values (even when they + were changed from the GUI).

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.SAVING.html b/src/doc/user/webhelp/docs/RCL.SEARCH.SAVING.html new file mode 100644 index 00000000..7fe4c78f --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.SAVING.html @@ -0,0 +1,145 @@ + + + + +Saving and restoring queries (1.21 and later) - - Recoll user manual

Saving and restoring queries (1.21 and later)

Both simple and advanced query dialogs save recent + history, but the amount is limited: old queries will eventually + be forgotten. Also, important queries may be difficult to find + among others. This is why both types of queries can also be + explicitely saved to files, from the GUI menus: + File → Save last query / Load last query +

The default location for saved queries is a subdirectory + of the current configuration directory, but saved queries are + ordinary files and can be written or moved anywhere.

Some of the saved query parameters are part of the + preferences (e.g. autophrase or the active + external indexes), and may differ when the query is + loaded from the time it was saved. In this case, Recoll will warn + of the differences, but will not change the user + preferences.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.SHORTCUT.html b/src/doc/user/webhelp/docs/RCL.SEARCH.SHORTCUT.html new file mode 100644 index 00000000..a975acbb --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.SHORTCUT.html @@ -0,0 +1,137 @@ + + + + +Hotkeying recoll - - Recoll user manual

Hotkeying recoll

It is surprisingly convenient to be able to show or hide the + Recoll GUI with a single keystroke. Recoll comes with a small + Python script, based on the libwnck window + manager interface library, which will allow you to do just + this. The detailed instructions are on + this wiki page.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.SYNONYMS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.SYNONYMS.html new file mode 100644 index 00000000..4ac961ac --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.SYNONYMS.html @@ -0,0 +1,164 @@ + + + + +Using Synonyms (Recoll 1.22 and later) - - Recoll user manual

Using Synonyms (Recoll 1.22 and later)

There are a number of different uses for synonyms in text + search. They can be used at index time (either to increase or decrease + the number of indexed terms), or at query time, to reduce user terms to + a set of canonical ones, or to expand queries to match texts containing + synonyms of the user terms.

Only the last approach is used in Recoll. Synonym groups can be + defined so that a user query term which is found to be part of a + synonym group will be optionally expanded into an OR query for all + synonyms.

What is it good for ? The synonyms function is probably not going + to help you find your letters to Mr. Smith. It is best used for + domain-specific searches. For example, it was initially suggested by a + user performing searches among historical documents: the synonyms file + would contains nicknames and aliases for each of the persons of + interest.

In practise, synonym groups are defined inside ordinary text + files. Each line in the file defines a group. Example: +

+hi hello "good morning"
+
+# not sure about "au revoir" though. Is this english ?
+bye goodbye "see you" \
+  "au revoir" 
+    

+ As usual lines beginning with a # are comments, + empty lines are ignored, and lines can be continued by ending them with + a backslash. +

The synonyms are searched for matches with user terms after these + are stem-expanded, but the contents of the synonyms file itself is not + subjected to stem expansion (1.22). This means that a match + will not be found if the form present in the synonyms file is not + present anywhere in the document set.

Multi-word synonyms are supported, but be aware that these will + generate phrase queries, which may degrade performance (and also, no + stemming).

A synonyms file can be specified in the GUI preferences, or as an + option to recollq.

This feature is new in Recoll 1.22 and will probably need to be + refined after some user feedback.

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.PATH.html b/src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.PATH.html new file mode 100644 index 00000000..da069263 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.PATH.html @@ -0,0 +1,148 @@ + + + + +Wildcards and path filtering - - Recoll user manual

Wildcards and path filtering

Due to the way that Recoll processes wildcards + inside dir path filtering clauses, they + will have a multiplicative effect on the query size. A clause + containg wildcards in several paths elements, like, for + example, + dir:/home/me/*/*/docdir, + will almost certainly fail if your indexed tree is of any realistic + size.

Depending on the case, you may be able to work around + the issue by specifying the paths elements more narrowly, with + a constant prefix, or by using 2 + separate dir: clauses instead of multiple + wildcards, as + in dir:/home/me dir:docdir. The + latter query is not equivalent to the initial one because it + does not specify a number of directory levels, but that's + the best we can do (and it may be actually more useful in + some cases).

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.html b/src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.html new file mode 100644 index 00000000..db5f4806 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.WILDCARDS.html @@ -0,0 +1,163 @@ + + + + +More about wildcards - - Recoll user manual

More about wildcards

All words entered in Recoll search fields will be processed + for wildcard expansion before the request is finally + executed.

The wildcard characters are:

  • * which matches 0 or more + characters.

  • ? which matches + a single character.

  • [] which allow + defining sets of characters to be matched (ex: + [abc] + matches a single character which may be 'a' or 'b' or 'c', + [0-9] + matches any number.

You should be aware of a few things when using + wildcards.

  • Using a wildcard character at the beginning of + a word can make for a slow search because Recoll will have to + scan the whole index term list to find the + matches. However, this is much less a problem for field + searches, and queries + like author:*@domain.com can + sometimes be very useful.

  • For Recoll version 18 only, when working with a + raw index (preserving character case and diacritics), the + literal part of a wildcard expression will be matched + exactly for case and diacritics. This is not true any + more for versions 19 and later.

  • Using a * at the end of a + word can produce more matches than you would think, and + strange search results. You can use the + term + explorer tool to check what completions exist for + a given term. You can also see exactly what search was + performed by clicking on the link at the top of the result + list. In general, for natural language terms, stem + expansion will produce better results than an + ending * (stem expansion is turned off + when any wildcard character appears in the + term).

diff --git a/src/doc/user/webhelp/docs/RCL.SEARCH.html b/src/doc/user/webhelp/docs/RCL.SEARCH.html new file mode 100644 index 00000000..054daba0 --- /dev/null +++ b/src/doc/user/webhelp/docs/RCL.SEARCH.html @@ -0,0 +1,130 @@ + + + + +Searching - - Recoll user manual diff --git a/src/doc/user/webhelp/docs/ch02s01s03.html b/src/doc/user/webhelp/docs/ch02s01s03.html new file mode 100644 index 00000000..d530522f --- /dev/null +++ b/src/doc/user/webhelp/docs/ch02s01s03.html @@ -0,0 +1,180 @@ + + + + +Document types - - Recoll user manual

Document types

Recoll knows about quite a few different document + types. The parameters for document types recognition and + processing are set in + configuration files.

Most file types, like HTML or word processing files, only hold + one document. Some file types, like email folders or zip + archives, can hold many individually indexed documents, which may + themselves be compound ones. Such hierarchies can go quite + deep, and Recoll can process, for example, a + LibreOffice + document stored as an attachment to an email message inside an + email folder archived in a zip file...

Recoll indexing processes plain text, HTML, OpenDocument + (Open/LibreOffice), email formats, and a few others internally.

Other file types (ie: postscript, pdf, ms-word, rtf ...) + need external applications for preprocessing. The list is in the + installation + section. After every indexing operation, Recoll updates a list of + commands that would be needed for indexing existing files + types. This list can be displayed by selecting the menu option + File → Show Missing Helpers + in the recoll GUI. It is stored in the + missing text file inside the configuration + directory.

By default, Recoll will try to index any file type that + it has a way to read. This is sometimes not desirable, and + there are ways to either exclude some types, or on the + contrary to define a positive list of types to be + indexed. In the latter case, any type not in the list will + be ignored.

Excluding types can be done by adding wildcard name + patterns to the skippedNames list, which + can be done from the GUI Index configuration menu. For + versions 1.20 and later, you can alternatively set the + excludedmimetypes list in the + configuration file. This can be redefined for + subdirectories.

You can also define an exclusive list of MIME types to be indexed (no others will be indexed), by settting + the indexedmimetypes configuration + variable. Example:

+indexedmimetypes = text/html application/pdf
+          

+ It is possible to redefine this parameter for + subdirectories. Example:

+[/path/to/my/dir]
+indexedmimetypes = application/pdf
+          

+ (When using sections like this, don't forget that they remain + in effect until the end of the file or another section + indicator).

excludedmimetypes or + indexedmimetypes, can be set either by + editing the + main configuration file + (recoll.conf), or from the GUI + index configuration tool.

diff --git a/src/doc/user/webhelp/docs/ch02s01s04.html b/src/doc/user/webhelp/docs/ch02s01s04.html new file mode 100644 index 00000000..6adc253c --- /dev/null +++ b/src/doc/user/webhelp/docs/ch02s01s04.html @@ -0,0 +1,150 @@ + + + + +Indexing failures - - Recoll user manual

Indexing failures

Indexing may fail for some documents, for a number of + reasons: a helper program may be missing, the document may be + corrupt, we may fail to uncompress a file because no file + system space is available, etc.

Recoll versions prior to 1.21 always retried to index + files which had previously caused an error. This guaranteed + that anything that may have become indexable (for example + because a helper had been installed) would be indexed. However + this was bad for performance because some indexing failures + may be quite costly (for example failing to uncompress a big + file because of insufficient disk space).

The indexer in Recoll versions 1.21 and later does not + retry failed file by default. Retrying will only occur if an + explicit option (-k) is set on the + recollindex command line, or if a script + executed when recollindex starts up says + so. The script is defined by a configuration variable + (checkneedretryindexscript), and makes a + rather lame attempt at deciding if a helper command may have + been installed, by checking if any of the common + bin directories have changed.

diff --git a/src/doc/user/webhelp/docs/ch02s01s05.html b/src/doc/user/webhelp/docs/ch02s01s05.html new file mode 100644 index 00000000..40ade338 --- /dev/null +++ b/src/doc/user/webhelp/docs/ch02s01s05.html @@ -0,0 +1,139 @@ + + + + +Recovery - - Recoll user manual

Recovery

In the rare case where the index becomes corrupted (which can + signal itself by weird search results or crashes), the index files + need to be erased before restarting a clean indexing pass. Just delete + the xapiandb directory (see + next section), or, + alternatively, start the next recollindex with the + -z option, which will reset the database before + indexing.

diff --git a/src/doc/user/webhelp/docs/common/browserDetect.js b/src/doc/user/webhelp/docs/common/browserDetect.js new file mode 100644 index 00000000..c6a2c73a --- /dev/null +++ b/src/doc/user/webhelp/docs/common/browserDetect.js @@ -0,0 +1,116 @@ +var BrowserDetect = { + init: function () { + this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; + this.version = this.searchVersion(navigator.userAgent) + || this.searchVersion(navigator.appVersion) + || "an unknown version"; + this.OS = this.searchString(this.dataOS) || "an unknown OS"; + }, + searchString: function (data) { + for (var i=0;ip{ font-weight: bold; } + +p.breadcrumbs { + display: inline; + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; +} + +p.breadcrumbs a:first-child {background: url(../images/breadcrumb-arrow-white.png) no-repeat right center;} + +p.breadcrumbs a:hover {text-decoration: underline;} + +#star ul.star { + LIST-STYLE: none; + MARGIN: 0; + PADDING: 0; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + LEFT: 1px; + TOP: -5px; + POSITION: relative; + FLOAT: right; + BACKGROUND: url('../images/starsSmall.png') repeat-x 0 -25px; +} +#star li { + PADDING: 0; + MARGIN: 0; + FLOAT: right; + DISPLAY: block; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + TEXT-DECORATION: none; + text-indent: -9000px; + Z-INDEX: 20; + POSITION: absolute; + PADDING: 0; +} +#star li.curr { + BACKGROUND: url('../images/starsSmall.png') left 25px; + FONT-SIZE: 1px; +} + +table.navLinks {margin-right: 20px;} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.filetree li span a { color: #777; } + +#treediv { -webkit-box-shadow: #CCC 0px 1px 2px 0px inset; } + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal { color : #0000CC;} + +.writeronly {color : red;} + +.remark, .remark .added, .remark .changed, .remark .deleted{ background: yellow;} + +tr th, tr th .internal, tr th .added, tr th .changed { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; +} + +.statustext{ + position:fixed; + top:105px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + margin-top: 30px; +} + +#toolbar { + width: 100%; + height: 33px; + position: fixed; + top: 93px; + z-index: 99; + left: 280px; + color: #333; + line-height: 28px; + padding-left: 10px; +} + +#toolbar-left { + position: relative; + left: 0px; +} + +body p.breadcrumbs { + margin: 0px; + padding: 0px; + line-height: 28px; +} + +/*body #content { + position: static; + margin-top: 126px; + top: 0px; +}*/ + +body.sidebar #toolbar{left: 0px;} + +body.sidebar #toolbar-left{left: 0px;} + +div#toolbar-left img {vertical-align: text-top;} + +div.note *, div.caution *, div.important *, div.tip *, div.warning * { + background: inherit !important; + color: inherit !important; + border: inherit !important; +} + +#content table thead, #content table th{ + background: gray; + color: white; + font-weight: bold; +} + +#content table caption{font-weight: bold;} + +#content table td, #content table {border: 1px solid black;} + +#content table td, #content table th { padding: 5px;} + +#content table {margin-bottom: 20px;} + +*[align = 'center']{ text-align: center;} + +#content .qandaset>table, #content .qandaset>table td, #content .calloutlist table, #content .calloutlist table td, #content .navfooter table, #content .navfooter table td { + border: 0px solid; +} + +#sidebar { display: none } + +@media print { + + body * { + visibility: hidden; + } + + #content, #content * { + visibility: visible; + } + + #sidebar, .navfooter { + display: none; + } + + #content { + margin: 0 0 0 0; + } + +} + diff --git a/src/doc/user/webhelp/docs/common/images/admon/caution.png b/src/doc/user/webhelp/docs/common/images/admon/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&U%V<=|it5MYpyU{F+K zFf?Rva$<;zVn|MA$j)XcE@r5%W@u>vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/admon/important.png b/src/doc/user/webhelp/docs/common/images/admon/important.png new file mode 100644 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/admon/note.png b/src/doc/user/webhelp/docs/common/images/admon/note.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/admon/warning.png b/src/doc/user/webhelp/docs/common/images/admon/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/1.png b/src/doc/user/webhelp/docs/common/images/callouts/1.png new file mode 100755 index 0000000000000000000000000000000000000000..de682c628feee885b97fd19e77b016518d833711 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=92~rKK68R45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%<(RmX6r@{8<}R!o-G--zwYdTlP5b5@8;1{=w*AcsQTNRLe=)iUl{`QE`z75pUXO@geCx4;f9R> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/10.png b/src/doc/user/webhelp/docs/common/images/callouts/10.png new file mode 100755 index 0000000000000000000000000000000000000000..96c6ce45275c754c86964f523e57bb2ca5507877 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%nMc45_%)J87f$VF!_8`x4j_g4RWzt>|@iO6xonCpLUuhigLc3Jb+U%Op*^%iLyO4_(X;pN6- z=a#Hm^`=rTB~q_P5)HwY|d8XT*w^=@u zSiV--p1!#&MsKHy@TcQO>_47BbD2s2LA=92~rKJj#M45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWC>mIVh^7_bp?vVw0Ac8FkGr=O>_47BbD2s2LA=930$iScxC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWu;5ShzZF-HKw%&(Ci= zKi__F#+A#LnX{Q1Wv$B$B&4JcEs1e3ld7n!Y^>a~XOD#~N71)ON4pbaWYyS|806*U zoij5voeK*MV|bQ)WU}+UbmrcJAECGvBVZi8DU2$xScp!J|iq49efdw9T3& z6_BCi{Wh_2S%*lDpnd(nngWmgRbRREj-5Ec;l&{=c~OYLP(f@;Re~n_6uEq+jm!eY z4?T-!I_%-FU3*BV(lAJgz49qrkWxKEFbBgty{H#GlO<(=fzROS>gTe~DWM4fIlZ{! literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/13.png b/src/doc/user/webhelp/docs/common/images/callouts/13.png new file mode 100755 index 0000000000000000000000000000000000000000..b4878f1a451337e8e34562ba148f4b8669dbbafc GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$iT8AI45_%)J87f$;Q)bS`?pED9L)6<@taey*G&cvlxG%uf$~RZ!px!#yrs(!{N|KWn3Uov-5ZqPv zLGQ`bEpBhw_dhHwe}C`pZ?79y1Pi_A2up2ruQ;N8QQgipNi)2})8dF>*H_m&0{%5C zo^;LYWd5V~uFmmHXTR6CJ>sr`PZT&FSe&y8zHH*7Cd|XeyybRo#k_WnEVZdxqa~r7vo!eLJ*%Rovco*|#lmM%k0+X>Kp3Z{yj} zom19d!1vow!LQ@5y-vBWOO>_47BbD2s2LA=930$G4ynC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWBqMPL8CfP}<}4avv(*kWU2Q#57OY#I+56h3lkd-N!&t^WVN#45%PeTI#kX1)LZ z{Y&6s{{R1fdO`}z@du(}8Bda~a)h?5<7D|};23;_o9z*!hN4f3i#NlOhKPVyjZ0+$ zs`hXm;d40CdVHCWLR`zdu*A+i5}Fg64?SQDQmSVN=3p>A>#6*xIoSgkq70s{elF{r G5}E)R1*_Zu literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/15.png b/src/doc/user/webhelp/docs/common/images/callouts/15.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a76d51667ed2ea608facddd705cb079d9150e0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%VAa45_%)JIT=daDc$^|DBCd8xsyR zsGbb6N-H?~OhI+a?8&k|8apgJ*x8rYFtG>AaLKxI#O^8)d?mF@lv8$#g2j>)(NC;< z#D9AQCA~b@|NY(F*mqCw#XH>V>(omWWZUR}rZaqzyNgZW36WT#{v(`SZ`*gM#?9C~ zUGr0?^Pl`Rzga)Jwp@Bu#ox6k!ECnU^{=JNbWTU;P1l%y`n9p6z`Tsg-OYLxSf&G|7V^1m;Mc0w&Kr6dteMOc)I$z JtaD0e0ssM<)1m+X literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/16.png b/src/doc/user/webhelp/docs/common/images/callouts/16.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ef6359aff17dae242a9f9b5b07d37492c5e2d5 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$De`o245_%)JIOx#P=LtM{*BGkqO3z+ zOz0O-$=()Z)u9(O-ASYA#RbKZ7XdCut~zpb&9>MgVwGB;JwyM2zyzg*l3KD>B|27I z3%|3;`?@S;uY0)nPWiq2!paXWHgYr-cnqizE%Fd8zieDgW5l ze=>zBG}QIwrv|$$yZQW8D?_xBQk;!u9!W4bkhS$tfkn$>ittqpVD zf1h7XAn9?*^ohRPa@ljQmoC)k(m1>1>*KtssgV~-Z8Oq0M{e|;rn^@7O>_47BbD2s2LA=930$G4gbA45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gW?*}&7>JKP8>LQjxULeq0mxTLm?|WTXN6dy^?nI|9YG?f)^5jUtj}M6@4{d!ehO>_47BbD2s2LA=930$DfM)545_%)JIOx#P=LtM{`$6{S(g?% zwR`Myn9#*2I6cTZBz8;iw47M0DSWb4PmNg$3#LpnRlq>o})cD8xLPn<2RG#*B^`C5M#GZHV1}#5QrW zt5#B#YTt(FHNSa3`dX|k*t6Y7t@ur)oX+W}_d3&0OYpE|Y`>jhHoHKEec$`|pqG|s z&xL4Bed4#AIdWRE?ytXgCccMDtXdaoNbt3vNZYI)QsuR&+rU@&Yn5#GQKhsw=bv*l zHPo*U)7F{p9k?q=_I&nMsd௱J?yghEpb|-VpoRA}>5tWxeXQuIvD5d;Gpf0>c9xIYoipjdSHJpu$iFlY+O>_47BbD2s2LA=930$De`o245_%)JIOHPkb^|){7z@httA~7 z6gN8yth{mbWRR7}+&2oYE4pJBP2rQZvb17XH&@*nAiFEPpqy9H*+|6d%F&}u-gkce zf8?pO^2abg($Weo=AX(PI$`CEgN8G#7n!wh>srX9Dv= z^G6)@-TwO(?Kq?F#k{wj=_6M?kNvR0HfvMg!xc7eOM@C0X%xhY?|UCVDfL+8vKqVf zWxHcntdg=?bpQS0n>k5VbCo8aTyQsU@x_ce6Ta$vblwuBJH<;?XZq;?gV|@-IqTfs z7PvO7we;x0%}EAV?|Z#xu(oO>_47BbD2s2LA=930$G4gbA45_%)I?2$xH9+QQ|1|-{i2^qS z{QMqWc&5@~vSqi)jg)R@l`jf{`jM4 z@AGdp@pTq)^|)MeD(~sXLh~mUe4BI*Cv7}nz!Q9M``wL#*B>3;y!v{n?7Zh|)m1%( zx;M004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004_ zNkl3-r5QX2JA`%WOg@};C`jCi~jij)ModkqKNNHgqLBt~eKv9U2T9g=b zod`A->8!-&I4lepOcCT7AzE5UW)@CPNkRrbc9xmhncaO7j?GWp5!ZxDc!?P?BAUdf zohUhqG~$6c$Itdf6o_ZuxEw_~q2PDp?l;6cVY+#|L?Y2_G#XG<74!KVxm*sD$po=j z482|t;cytHX`)yxVmux{Qq3!OydMsSDNfGk^H?sIs8lLwwOXjx>u9&z$Ye62WjdY4 zU@+j$ZkZn<5{Y0sor>USG(t2Q6@Ds}5*^t(oeq-8q&;?$3oo4)iO1vUcDuq?6b1YJ zUiiD+4uL?xPE%!Pk$C4yT ze21><;yV_L1vE{AVHhlgsB|KL|JW_7$L_*O>_47BbD2s2LA=930$iScxC45_%)J87fW;Q*1g|4U?Dd_qr__Nog*S`iY2k5iL=zix>?%}Kg^qDT9ql*xg$<*x~|zy6W{WDR>vFSEu8_J2kJ|XUJ6!g ze`=_BuH*2m6L$spudbPO>_47BbD2s2LA=930$@$+0wo zD*JBcv>EUS9ygRKd3Wda2c@>dieam-=FL;_T=4qWyWPIaH{GaEvTHdWtvB6XF5>dm zzKR>~zZ=fzopr06Xx?WB>pF literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/23.png b/src/doc/user/webhelp/docs/common/images/callouts/23.png new file mode 100755 index 0000000000000000000000000000000000000000..3909b9cd8fd0720f5672bbdaa4ae37ba82c4b72a GIT binary patch literal 589 zcmV-T0004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004` zNkl@;rh&}uquSANt<%`2sbVuys_h9v7;)!@rdAvv@QY;h-&@>IEX(AqvV>ld& zd!x~S-|vTE7)Yg3==b~ARMTa}i*~zx#L0<70^{)*xm*s_Y892&PDh+wE*F-|r5roTqwd>3gp;|m3{_RJSS&D~ z&xP`PXgumA!OCztoyh0&NG6k5uh$}Dv)Le<&5DUCl?uw`vUtt~_k8ery`qR0uv)FY zt#mLLz~}SHtHFhOG#VAlNT<`7OeP=6ykXufM>rftuh)~Wx@-XVbUJA>#!_KDAsB<%w{t-LO}Uqfd9lPyGN?9A0LSWV&@ObC5W4^UX><4x0#%OmuWM( bB@^EOG7*lLyH^aK00000NkvXXu0mjfdrk4= literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/24.png b/src/doc/user/webhelp/docs/common/images/callouts/24.png new file mode 100755 index 0000000000000000000000000000000000000000..963a9e770cca4a2c7c7d0628a131848672c9bc83 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$DfM)545_%)JIT=hP=LVk^%oAVP~8MvZ@g~%#R=Z-}gYXd}BmtEHUQf2FPej@wC zcP0`%ebH;heAI+5nDEA2Z;e`e%w>_rp#lpQ&qN`py_WozqO0O(Ne_%0(Y9 z++(O&#b@<6b7KU{@xleS->zfd9JSVrm8trmW$pWr(7n0aZzo8w=}bSpHs8^;&P7De z_v+```+6c=H;*PwT({>m$Gizf2kH+gd{;TAXunS}{lq`{xq5>3Z?7JCqLyB?>y&o- dr~Z`3=0&eE`Pvp`?*_&SgQu&X%Q~loCIDgE)%5@X literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/25.png b/src/doc/user/webhelp/docs/common/images/callouts/25.png new file mode 100755 index 0000000000000000000000000000000000000000..458a91990be481a831161da501d993f1fb4fb9ac GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$>GpJS45_%)J86IRAqSD;`#Tx4HG>?z zj{3?pn^^4hXjhnNU8Nr? z=UeBJ?Y;klV)@Q$`*$BhH>|Y?RMl}(=j*V1DByc&y7*Lw3#x_gbCUMkam=oG;;SL> z#YN^}dEr;?M^g(-^YrJRH<#{ZD~WA?Ub!MfYlh$Qj-yEtdeb{xl` z+{xPWSpOF+ja#pNZPh9z8NO~l6JO`uciUd?s#)?m#GccyA;Y9AZ+myr#*VXTn?sc* zdL&rLbXj&RIby6o>7>f5uU0v?{|O$6T7TVR`Q;+(=MKkBd`qlkuVk4Tx~@E$)EJ`0 zIeg3KG*D!B_%t{6OB{an^LB{Ts5T43Ks literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/26.png b/src/doc/user/webhelp/docs/common/images/callouts/26.png new file mode 100755 index 0000000000000000000000000000000000000000..74b2507390edc1d45140ac991b9e73a26657cbea GIT binary patch literal 596 zcmV-a0;~OrP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00052 zNklNP|PIxdf6<4i1k7aR_vB5gbx<5JZFw znjFOC4euWi5h6rP2pgW#7_NeJ&dnDusp!BD&g0(i-tV6GN%&qq;+i-kWWqsA35}=| zhPhF)h%Sj+!jGTpoluE;{;*j@55x(6FTVYPcp;wbY%d;<*K4&JWLd_1K1Vj2#b`8w z!{IkZQAeB;ehPxLHs zI-O{@+t_Zm!o_4V;U)RVDss78C=?3F=kuS_Ae(NtTfDj1Y>ETSV&Nku2$-$yEy5m2KJ`<O>_47BbD2s2LA=930$sq%Dj45_%)J85I~AqSE6`il)qMV9l4 z9z1wb(L+`yW{F4JnYph50*)+nejy;E#n|50zxUoUKHxt{h#t zqq}y!>Ll*mm(Bd|^xmJ2)wAbJnk%%u#ZBXg;6^2zLu&U9yJ;%L3i2P3tXs$Lq#iR* zMfs9&VblHY^8G4tobk^dhprC2y-7!-t4V?5Lf&@6`R6y@f6rRH{kG$@r|wdIKURF- z_kQ-;Fz)W7OtY3Py#9J&&`OS=%{N`NrXDJ=c(QWpgKiD6?s%c;&nq>idNoZs|NLTx ziBqR{>PMSfN345~Cp*gUu)QeTeNk0aaPHE}nI%@T5^aSM+9F&ho)*nGn|A1QM9nit zv)Qiu@3*geeIsvsdt23BzU!rr&G#f-3=S1te34^WX42j`ZrQC-yq8~^==uF9ztQ*j zPO8z&Cuy54Z6+>xpEKojs?PM&6#_Y$Vh#VVm@ZfM;d}nEb%#RV|BgGn507k?YP-|X jGRI!Eqvelo&L5VVV;QTDz7*I7j2Z?{S3j3^P6004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNkl3-r5QX1Gix7g9MMP_>Ln0O;f&{gQoumpvz{WyEQUr^DKR~chu@)hU z`2iMQVXvZMI4mwgFh!K>43;92nZ=WfBq0MI?B32}-pq}J?_nqIiEBb8PKha@5EbIX zNR&*XTcSi<;OF=xvP6?F7L(|iILGh7)o+M5LbbBJP$*O>m&=f48Jeacl}ceS7$6u7 zqFSwr@6+iNnM?+~Uav};E?0bPx7#sJPN&nD&*vx<3aHg;7>z~j|aoyQ25~luh%QitJMm--A_-hu`lPZ*2924^F2O#bOcJ zY!>VFT0C+KEaDiC$A=d9-?C7NMx$aF`FtLW#p2*#GMNam@V1}qKDxXB_T_S^I~)#+ z*|sD}aJ$`TwOT@~swxtR1ZJ}tFM?M(T7dt=9k*{(VGpmw6>;{*%B6{?<6SkD{K2&3 gJax^q004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNklcV7wL%}Lx4=Y&EW5C)+W55&6} zC|Q!Oh7ZJzvj0dqUG8|-YPBvnIF(9aGMS)QETUX4qup*Jolc`rC}6c(A)C!| z0q$(K@gjUa9|nVgm`B%jsH!S_{`Pu3;g3cm#9}dX>O>_47BbD2s2LA=930$3G{Sv45_%)I%%VKOM=9)`Noz?N>Wl% zvt;_6qxv5!EK=NYb>Yzm2UHcMm~PAD?b2oX&*+-Tb!6qjr)-vU^j@$PXJuIBdCY0O z=Wk-?x{ke0!S4Ow%a5pDR4?lk{pe*Qct13;J$sjuTxar@*X=u0WA;rn zwG9{D8^_=G*kM|#&UEh;tGZM?wW3qcT0gDOKjQe5#gXB#!GcUFv)R1ME@u`7tSmkx zcFKD02V-6~<}=SfKf3w7w#QBRo}G%^kx%YhyaZTY?BYBBdDb=7Y@6KdS7o~+)?fFy zEYh{eR2u<_B>$VGB9|$`njxgN@xNAoG!y< literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/30.png b/src/doc/user/webhelp/docs/common/images/callouts/30.png new file mode 100755 index 0000000000000000000000000000000000000000..c4dc404bc1cfeadb3f6e80671196d292e8eda1ed GIT binary patch literal 597 zcmV-b0;>IqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00053 zNkl+FR z${bd!72EAr==FLHhr=NgHASk;W&@kehFC0yLZKkm6h+zTj=V(d5l_a=Uatq2%O&(| zHiOx07MjQ9aw(7LoY)+VM$j}(toZ$Y?wru=b{o-XRA?S~{uQFD&x66>qEe|?LZOiO zR_^d>wZeEjMlP2_Hk%a}r&1|QCKEQox#^n${u5{H9_bwR;|p;_SpKlwB~khARcZ2T jgUR`KjSMD#lLtQmtF?>&>wXE800000NkvXXu0mjfFy-;> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/4.png b/src/doc/user/webhelp/docs/common/images/callouts/4.png new file mode 100755 index 0000000000000000000000000000000000000000..1e42fb376bf0da3014c1b71496a3027daf578487 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$VeoWu45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%^r=YnIgE*Vor4#xN?x z@fMyo<2RAke=SI$GU0f98M_# zi3LlSwkn#MPJMWGw)u@Eu?|wa8*Uyubm&mQ>ub7ff`WoMQl&ErZiWR09&F%mSoGLL zV73DHzyJT`gB6vF&KSlpew@{~gKhdr1?LMUjR#oNGP)`bI@mC%wsiJna5hK?aC_OF zF)(NT=&Ml1kfdj0mdf-|>B|-_?0!c)I$z JtaD0e0s!H`mGl4r literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/5.png b/src/doc/user/webhelp/docs/common/images/callouts/5.png new file mode 100755 index 0000000000000000000000000000000000000000..635e7f816277da13e909e96b832ac8bb5e7d50d5 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$arAU?45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWL$+hvz+Zh-b8y_w; zG&=OQgEcd)(Q3W)%?x&S_O{a3*9==)TN5`|8VS5lZ2INN7U>orKmXyQqumxUXA~HY zJXP3U!njdnQ_t+#(uXIj`%5fZyjZfSxmohueEahsetu3*QMFN!=DpC%!_S{?QTa*5 z+0&ELxxC!`@SUB-7pK11kWkz`YnIfU+UMtFH_X4tc;Xm056gk|@%t~dt}}2{7H7S) ztF+tE)s^*;nyhTwRPFFZ+BccG=A3qrVgF>{^X1CQU>@)3dZ{12e@{Q&N@ ze}AouoIH-qV&GsXU}{k14XE0~*;TFZ?9k*VMvWDMRZ*>~pOTii@Ns>W_UQb>=%dK+ Y`mKN0%RTQafg#M`>FVdQ&MBb@0Dv*H*8l(j literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/6.png b/src/doc/user/webhelp/docs/common/images/callouts/6.png new file mode 100755 index 0000000000000000000000000000000000000000..521aedde2c46c55421e87a355b77c7d77238a929 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%eGb45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWij&rZ~=9KvP@ikAGBI4}o%6fQ-=VXbhs;UV~)th5j zH*FN^sGX2%Wo<2~<}>5Khfhzv+m`#!H##%JkU3H+#h9DhL?NJI#R?5(YisMncXk#_ z?yLLDWybO%Bt=zEVY$?T>_4BM^EY>OaXA+i867?~Rr}yMS7s}p8%_S+-rb2`UtLZ3 zc5$)0i$MIZr^U^ zjoh9myJ=Et&xIE|dSpJz$jI&f73kPzVZvfVI+ z*{k2Y@djhZ&JQX(eH7wa=7lA8?vc=(*!<`xTaZ#cLof$}O?6yAW0@5rFcug*UHx3v IIVCg!0PJ|aQUCw| literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/7.png b/src/doc/user/webhelp/docs/common/images/callouts/7.png new file mode 100755 index 0000000000000000000000000000000000000000..0d4b876a8cc1905944042956cc2c8e47b060fe3d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$;qi2F45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWS+VuTo*!!8G5L6qV+#E-vTdV&hF`XZZx!Ctg+2(K!+*LG zyf}n6sxdGz%wd?3n8)^Lw!<5SBQX_|V$=lmo%~mCaEa@ga>DWD8@3>&dWK*QhNZV1 VXB~Ynd=MB|44$rjF6*2UngBtSpxyug literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/8.png b/src/doc/user/webhelp/docs/common/images/callouts/8.png new file mode 100755 index 0000000000000000000000000000000000000000..50fa94d16db8ef19ab376affc9da83e57521ee03 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$3GsAs45_%)I?2%caDYgwe=>Wa0DC)+ zpJEBu(uGs_VqJK4q!+Gmc2|7#;K6x;<2tNIT{L!h7jP?;z{$vZO$J~+Srg9=`o3ATW<2sm`|TLKPrTl zTM4C0@wMNcJmZkTkrX4r)9gpqhUhL*y#IZBnwr_Ws=ayJ=WMe6Cs6xw^&$<9CWcKq zi*>xuq!~Y{yjSpT_qF3<$r5arOpaFAv^}<%;kUe3&g@n7?GwjR)Rt*v>2>?+&$9RHs^=a@+U0rJ3Szh4dsk!UJ}os#;LACNKZ~sxR($&5C?i~5 v@A7U^MNazE_CIbMmba_aTK-Hn|Hl-#D=GDt)vx2gKxgoD^>bP0l+XkKdAG}3 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/callouts/9.png b/src/doc/user/webhelp/docs/common/images/callouts/9.png new file mode 100755 index 0000000000000000000000000000000000000000..7190d5a9aaeccb11ce5c500d5eeadfb1299c78e8 GIT binary patch literal 537 zcmV+!0_OdRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004S zNklHU+e8LN@ zwH$?bBM#-oFbrXu=5n0N<&eo_l66xSH+My|*$kFtfiZ?cp@2?jE#;NB;59 zCh$BDj^iK*0=TY=`Ft)L;VP9dz<+eX-6NdC{rEu~5!-)Q?wWW^dR3VGPBJ-vyg)Mf bmq`2tvJ+juyP*^?00000NkvXXu0mjfx%}Vp literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/header-bg.gif b/src/doc/user/webhelp/docs/common/images/header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9efa280225828f2ccfc6c051ffcb6d668967dc6 GIT binary patch literal 619 zcmZ?wbhEHb6k$kVxXQrr_wV2D-@pI*_51thH{ZT}d;j6X&tJdZzI*rO%a`B3e}Dh+ z?_@ZZ0GpFe+j^Y-nB4GQky?|**%@Z-z7FI5Wv|Nm#8B~bjy0ybU;M1uU}!1n(@e}RXNnDU7wMLU;R z%)gK^#d&Si`s=-Ar{9+8KG;xUvu?)u7bR8)^LF3QpHSns{yO`QJ$3uP|M=g~*eKi5 z+ScAK)z#h8+v_%A0^{TRT6o;hpwoH;@B=L;=bykzOp=_^*StzNTs-8zPin>KIR z!n=LP&Rx4C_U_w%;6TUW!;;62pE!AP;+eDOoR}_Nx_srzvg_C9-nzwp_ul;n4_F^R zdHU=b_sdtW-@J)?|DNO1=PzHsvi$h@>-TT2fBzYn*+QHrBy4SF*Vl+Su_4h}O+fM5 zEQ^VaN4q7A(|C?eT)d!P!MRJtZPSEJlhx%{#GKre>g{fjXgAw)^RlyPe8tanPJHH> z*)iY#A?Mwur5P7%=6t{_Ev$x8UUy{IJ*D< literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/header-bg.png b/src/doc/user/webhelp/docs/common/images/header-bg.png new file mode 100755 index 0000000000000000000000000000000000000000..75202f9b37af36592e8f5bcb5badd5ac3f71d0d3 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^B0!wN!3HGTRtuZ~QWHE~978H@y*;y#_Yebv%f;Dk zjs`RM4lwB)U|@-!VA^p@iBqE~yUEE!RD!3;L@}q3=OVXb&Br&v8zZefTOJ>-47Kv? z-c>Ydn(tecwS3j;nbmeyp1Z$2QZe1WdUDCGa=)P8H5Q(Ce?L|EI{%<&3ofvqPkr;s d$^Y#CFcq0@`TrwZ))?qE22WQ%mvv4FO#lp^PX7P^ literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/highlight-blue.gif b/src/doc/user/webhelp/docs/common/images/highlight-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fdabde69252ba43e8b658c74a72775caaf304f4 GIT binary patch literal 471 zcmZ?wbhEHb)L_tNI3mh0b>*rn_bz?>^5NvQ+|z#z(?15yRD zlY#Yrf@+_NCr7*Rnu7}!QgzNx-55}@F4$S|f`i~ggBz0NjqwI*2{Q9{vnE;=IjrB+ zDCD7$u;0?zfI%<#i1GTJdsHRM1Uh5*=AKsEeQ?SYjaMqdjg0|KjY4kRs^-=Wtu3wX zZqXd>y-od16RmlavwB*EXSDg-v-nSI_Fpi|n$>jqfB1PxT?^`t?fQfg*PWROT z?4=7Bj-NPj$bb8e1?SIiu}ay0;o4&VD^suExnz0EZN;6_?hnqjm6bhlW2}3)ao5bl z&nzEpx@W<5 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/highlight-yellow.gif b/src/doc/user/webhelp/docs/common/images/highlight-yellow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e847e7e01623b08e9a7e7d823fcb97104e76194 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VJrYF0HOc@`{bSf|Nr^cZTH48_|8oJ^wtd=`2yXqN@dAW)FA{*9 z0^lo>f-$0TSwVV~Os3NTjY>HMo^?sUEofV-pivzGA!zUjgNA5FQ#EN!ZcP>Pwa!Lg z*&TUsLwr0%X>V dfG2i6;P)aBqN^Dbjd|Rq0Yr!k5L_hy06YHIk5T{t literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/loading.gif b/src/doc/user/webhelp/docs/common/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/logo.png b/src/doc/user/webhelp/docs/common/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..42e7848309f8d4f9c23ad2aff78b47b8bcf27835 GIT binary patch literal 457 zcmV;)0XF`LP)6jNii`DGC+xg7zdey{{J6rAvD;cjBzx|hFS>G2C(2MzPP^rdM(C_ zC(7{X{mRY8fLkvfjf^jva2A@c#dr@os^OB=y82w}$}?QD2OZV$cqU}!*^!X#M+?T$ zf^js;hGvv8?py1FOYYNu(W}4hp-r*>3}_4)rfagy*Qj50T+_kXF8=vk_Tx5doLY?- zKkI*>Yn%H2Xf7k*AjZL#%LZMP4Z08-bZKZb$`}|J7#J_laKI(^j!W>2oDnWroaS<}W#odCRH!lU<^wj`c5wJ7dEmC=6LXjghP%0{DX zpaCQK!@}B7*cU7>Bs;7_RJjWDk>HR4;U0G)l~k~EqL_RVNHXt zp|F%aL&tk&QFDfk40f#s0sKdvH+BhgXtFR)5Pp>CcW~(kW&w4*hz$n>JLDT!A~tAb uu{`2*V3nW1I#D!_;gQn}&KC>{2N>!FRd(cyzWN5Vl)=;0&t;ucLK6V+=s$P> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/previous-arrow.png b/src/doc/user/webhelp/docs/common/images/previous-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..347bc53474ce6f9246e45a2784623ac3c55203fa GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dF8<0HkD{mW+k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^(7*cU7>Bs;7_RM+{CQNw1Fo``;OomIOA;eyQoxxDq zqleYEkzs-s!=tK_vpODKLJPP=Hrzbak`ij8=UULpEv8e!aHP*6O-Z2sz)AtOhAwdi tO;?4yBLSV-6%OYZAAQ~MfRV$1!EulJ!>J6GyMcBxc)I$ztaD0e0sv`WKHvZV literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/search-icon.png b/src/doc/user/webhelp/docs/common/images/search-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..715f62d08b07f857b5866aadab38c9275c1c7513 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6L!3HE_wj8emQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf9Y#@6Www1Qyw!k0S3F%DLp+YZ zy<+I?6ez>`Aztf}Sn4}APCv){3l|=>Yl)V3lbRE=XyLww>=g=mre-ad1o$;s=E~eD z+1Y%=dExh#rt)dr&+9GQtIt35Z{zvT^t|GLxm`j3W0RKkh6mMWWjy3Aj!_ZROK!09 ztNWn5M@?|QQ%lvEHI1z2$~vEH`%o!!e`u6{1-oD!M<4CsTk literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/showHideTreeIcons.png b/src/doc/user/webhelp/docs/common/images/showHideTreeIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ec1f96a4c519610064feea6de06358e9f6e38a GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY> z6BZ`#&b%i800LG?L_t(Y$L-b2ZW2)($MNr6N{|8D3Y1Hs4@EXeks5%$)hVFkKicx7iruNhXt=oZtVGoO9+s+TNG1A|i+gzW?(r z;&VCo>%25YWQu^ooPi>ZYKsMQ;c$770xZ9<{Y za&RV{W_@jq+J2p0|9r0P^L-zuT0<$HaIF053r`_&Cm&Q{H+i}n| zol>cYVHoql>ual|Qz?#HE!v&VQa5(ux>Ov8(8>zsVgXIlX2aP`n!#Ym;n8uR&t)_k zQLER9MlBNY8?)il(=L`3A(==7fXLs^cFj7>-y*CeEhVB^3=@cQL(EGFNSj+i#gA^xvn=?v5V2@-~JyT1jz=0 z-v`KkSQhRWhVf$AEbx3$xCy)l?!;ozMYp;QyaDb$+P#1H11-^gON17#t^fc407*qo IM6N<$g5CR900000 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/sidebar.png b/src/doc/user/webhelp/docs/common/images/sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..5492671871c1fdb7c149bf233e34ebddd074c777 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1SHcW3~hmwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8U{4pvkcwMLbBxo^O;mQ5C}5VBp8e!WN?S`y%iQnt-qwGU z>u7lMf5n5>*VhX;sx9C%(%2aC{q^zkm`nHf)ixVQbn@6YFfcQ; Xxf$LLJ^5Y}Xgq_btDnm{r-UW|fBilp literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/images/starsSmall.png b/src/doc/user/webhelp/docs/common/images/starsSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..490a27b9255075c8ce355aa3e36f89c82038b794 GIT binary patch literal 1032 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").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
"+""+"
",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
t
",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/src/doc/user/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js b/src/doc/user/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100644 index 00000000..fec53e8e --- /dev/null +++ b/src/doc/user/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
  • #{label}
  • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this); +this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY= +a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped= +!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0=== +this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c= +!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]|| +0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0], +this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), +height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document: +window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"), +10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]; +this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition? +0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent, +g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.leftf[2]&&(h=f[2]+this.offset.click.left), +a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.topf[3])?e:!(e-this.offset.click.topf[2])?h:!(h-this.offset.click.left< +f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"); +this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"}); +b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver? +(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs= +d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a, +!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&& +(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options; +a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable", +"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY=k&&e<=l||f>=k&&f<=l||el)&&(g>=i&&g<=j||h>=i&&h<=j||gj);default:return!1}}; +b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize", +"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"== +this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]= +b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy(); +var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a= +!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy(); +var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()- +e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a= +e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing= +!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h})); +this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity}; +if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),hb.width,j=c(b.height)&&a.minHeight&&a.minHeight> +b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c= +this.helper||this.element,a=0;a');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top- +h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this, +[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement, +element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})}; +"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={}, +e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options, +h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName), +i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10), +top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0}, +c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)? +g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper? +e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left); +h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&& +b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost: +"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width- +e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b, +10))}})(jQuery); +(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"), +unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d= +this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d= +b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g> +e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.rightf||i.bottomg&&i.righth&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh(); +this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]= +c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this== +a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition= +this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder(); +c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()); +this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageYb[this.floating?"width":"height"]?g+k>i&&g+ke&&c+lthis.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.topthis.containment[3])?e:!(e-this.offset.click.top< +this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.leftthis.containment[2])?h:!(h-this.offset.click.left li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers= +a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a= +this.options;a.icons&&(b("").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(), +c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h? +(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow", +"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget|| +c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), +j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight|| +f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14", +animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/); +h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery); +(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d= +b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&& +(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("
      ").addClass("ui-autocomplete").appendTo(b(this.options.appendTo|| +"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"), +i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source? +(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length").data("item.autocomplete",d).append(b("").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&& +/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery); +(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&& +(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d, +b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10a&&-10").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend(""),d.secondary&&a.append(""),this.options.text||(e.push(h?"ui-button-icons-only": +"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction"); +this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c= +b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||" ",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d), +l=b('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("").addClass("ui-dialog-title").attr("id", +i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!== +c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+= +1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1), +!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("
      ").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&& +null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition, +originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize", +b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "): +[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in +c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"): +f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||" "))}b.Widget.prototype._setOption.apply(this,arguments)}, +_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height- +c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "), +create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight), +c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e"); +this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle", +a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g): +h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c, +g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c= +this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus(); +c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b, +this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset? +this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b, +c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d=this._valueMax())return this._valueMax();var c=0=c&&(alignValue+=0",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a): +(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a= +b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]|| +(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"), +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"), +0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs", +function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal", +function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")}; +this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected= +-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a= +b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c, +d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)): +(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(), +f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!= +a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+ +".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup(); +d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup(); +return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"); +a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&& +c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g= +a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('
      '))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker", +c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b(''+d+""),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("").addClass(this._triggerClass).attr({src:g, +alt:d,title:d}):b('').addClass(this._triggerClass).html(""==g?d:b("").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a= +0,c=0,f=0;fa&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b, +a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b(''),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1), +a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+ +"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown", +this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"), +c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass), +c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;ae||!d||-1n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c= +this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c); +this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"): +0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear= +!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay= +b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d): +(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort, +n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b= +"",c=!1,d=function(b){(b=e+1n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&vv;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)), +v=this._canAdjustMonth(a,-1,s,n)?''+v+"":g?"":''+v+"",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s, +n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?''+z+"":g?"":''+z+"",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&& +a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'":"",e=e?'
      '+(d?m:"")+(this._isInRange(a,z)?'":"")+(d?"":m)+"
      ":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H'+(/all|left/.test(A)&& +0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0
      '),D=q?'":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("'+B[x]+"");y+=D+"";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay, +D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R",M=!q?"":'",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&xu,M=M+('");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+""}n++;11
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(x)+""+(F&&!K? +" ":N?''+x.getDate()+"":''+x.getDate()+"")+"
      "+(o?""+(0':""):"");L+=y}G+=L}G+=e+(b.browser.msie&& +7>parseInt(b.browser.version,10)&&!a.inline?'':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='
      ',u="";if(g||!q)u+=''+p[b]+"";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('"}w||(r+=u+(g||!q||!o?" ":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+=''+c+"";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a= +a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?" ":"")+u);return r+"
      "},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c|| +"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&bd?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a, +b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<= +d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d, +c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"== +a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery); +(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
      ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); +jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2], +16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"=== +typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d? +d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e= +e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139], +darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255], +maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")|| +" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this, +[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c, +remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})): +(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}, +easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/ +e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)* +b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);gb?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e, +f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a, +c,d,e,f){return c").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+ +i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1], +10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&×--;for(d=0;d').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +/* + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. + */ +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if (!$E) return {}; + if (!$E.jquery) $E = $($E); + var CSS = { + display: $E.css('display') + , visibility: $E.css('visibility') + }; + if (force || CSS.display === "none") { // only if not *already hidden* + $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured + return CSS; + } + else return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.support.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight") + ; + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.support.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom") + ; + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.curCSS($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debutOpts={}] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
    • '+ info.replace(/\/g,">") +'
    • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
      ' + + '
      ' + + 'XLayout console.log
      ' + + '
        ' + + '
        ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +var lang = $.layout.language; // alias used in defaults... + +// DEFAULT OPTIONS - CHANGE IF DESIRED +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerTip_open: lang.Close // Toggler tool-tip (title) + , togglerTip_closed: lang.Open // ditto + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // TIPS & MESSAGES - also see lang object + , noRoomToOpenTip: lang.noRoomToOpenTip + , resizerTip: lang.Resize // Resizer tool-tip (title) + , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // PANE CALLBACKS + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +} + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + } + /** + * @param {Object} opts + */ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ] + if (value !== undefined) { + newData = getBranch( map[itemPath], true ) + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + if (options.showErrorMessages) + _log( lang.errCenterPaneMissing, true ); + return false; + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (o.showErrorMessages && sC.innerHeight < 1) + _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), process it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function () { + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'manualSizePane' + , sizePane: 'manualSizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
        ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
        ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.resizerTip) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string} pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + //alert( '$P.length = '+ $P.length ); + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string} pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string} pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.togglerTip_closed) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.noRoomToOpenTip) + alert(o.noRoomToOpenTip); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.togglerTip_open); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string} pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/click|dblclick|mouseenter/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.sliderTip : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/click|mouseleave/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // if showDebugMessages, log attempts and alert the user of this *non-fatal error* + if (options.showDebugMessages) { + if ( tries.length === 1) { + _log(msg, false); + _log(lastTry, false); + } + _log(thisTry, false); + } + + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (options.showDebugMessages && tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + */ + if (pane === "center") { // finished processing midPanes + var b = $.layout.browser; + var fix = b.isIE6 || (b.msie && !$.support.boxModel); + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function () { + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible:") ) return; + $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string} pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string=} [panes=""] The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string=} [panes=""] The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string} pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank + .show(); + } + /** + * @param {string} pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string} pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (s.isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string} pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string} pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + } + /** + * @param {string} pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string} pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend({}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend({}, oPane.options, fx); + state[pane] = $.extend({}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/visible|auto/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/visible|auto/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + if (options.showErrorMessages) + _log( lang.errContainerMissing, true ); + return null; + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} opts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +var lang = $.layout.language; + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.showErrorMessages + ; + if (!$E.length) { // element not found + if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", lang.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", lang.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + pin = inst.options[pane].buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? lang.Unpin : lang.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); \ No newline at end of file diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif new file mode 100644 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..9d149b1c61fdee2de5cb342741c243abb9058bb3 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1u{Kd978O6pI&z4VlotPxp?2+ z_9ElQf7546?+BK3Q+%u|q&R!~TD`8c>Nm?7lq=+T^Fw3At=o;a{QQ?&v0rW43t78u zKLhT~Z`;~2oo9{ezlW>%eD?g@v!}03FhOcY)5-`I-U~CHGCzC3{y9?4*Y0Z~JJ3=F MPgg&ebxsLQ09`{nxc~qF literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100644 index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png b/src/doc/user/webhelp/docs/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c53cb11904843e176e4ce1f4e7247cd90b3590 GIT binary patch literal 5355 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 t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder-closed.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder-closed.gif new file mode 100644 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder-closed2.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder-closed2.gif new file mode 100644 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder2.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/folder2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-gray-line.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-gray.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-gray.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-red-line.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-red-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-red.gif b/src/doc/user/webhelp/docs/common/jquery/treeview/images/treeview-red.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/src/doc/user/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js b/src/doc/user/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js new file mode 100644 index 00000000..e693321d --- /dev/null +++ b/src/doc/user/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("

        ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/src/doc/user/webhelp/docs/common/main.js b/src/doc/user/webhelp/docs/common/main.js new file mode 100644 index 00000000..bcc116fb --- /dev/null +++ b/src/doc/user/webhelp/docs/common/main.js @@ -0,0 +1,276 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +//Turn ON and OFF the animations for Show/Hide Sidebar. Extend this to other anime as well if any. +var noAnimations=false; + +$(document).ready(function() { + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[id=' + this.hash.slice(1) +']'); + if (!(this.hash == "#searchDiv" || this.hash == "#treeDiv" || this.hash == "") && $target.length) { + var targetOffset = $target.offset().top - 120; + $('#content') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + expires: 2 // store cookie for 2 days. + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style", ""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style", "display:none;"); + // $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { + return false; + }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is active + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display", "block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 120 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 120; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } +}); + + +/** + * If an user moved to another page by clicking on a toc link, and then clicked on #searchDiv, + * search should be performed if the cookie textToSearch is not empty. + */ +function doSearch() { +//'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + } +} + +/** + * Synchronize with the tableOfContents + */ +function syncToc() { + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + //Expanding the child sections of the selected node. + var nodeClass = a.getAttribute("class"); + if (nodeClass != null && !nodeClass.match(/collapsable/)) { + a.setAttribute("class", "collapsable"); + //remove display:none; css style from
          block in the selected node. + var ulNode = a.getElementsByTagName("ul")[0]; + if (ulNode != undefined) { + if (ulNode.hasAttribute("style")) { + ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); + } else { + var ulStyle = document.createAttribute("style"); + ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; + ulNode.setAttributeNode(ulStyle); + } } + //adjust tree's + sign to - + var divNode = a.getElementsByTagName("div")[0]; + if (divNode != undefined) { + if (divNode.hasAttribute("class")) { + divNode.setAttribute("class", "hitarea collapsable-hitarea"); + } else { + var divClass = document.createAttribute("class"); + divClass.nodeValue = "hitarea collapsable-hitarea"; + divNode.setAttributeNode(divClass); + } } + //set persistence cookie when a node is auto expanded + // setCookieForExpandedNode("webhelp-currentid"); + } + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; +} } } +/* + function setCookieForExpandedNode(nodeName) { + var tocDiv = document.getElementById("tree"); //get table of contents Div + var divs = tocDiv.getElementsByTagName("div"); + var matchedDivNumber; + var i; + for (i = 0; i < divs.length; i++) { //1101001 + var div = divs[i]; + var liNode = div.parentNode; + } +//create a new cookie if a treeview does not exist + if ($.cookie(treeCookieId) == null || $.cookie(treeCookieId) == "") { + var branches = $("#tree").find("li");//.prepareBranches(treesettings); + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(treeCookieId, data.join("")); + + } + + if (i < divs.length) { + var treeviewCookie = $.cookie(treeCookieId); + var tvCookie1 = treeviewCookie.substring(0, i); + var tvCookie2 = treeviewCookie.substring(i + 1); + var newTVCookie = tvCookie1 + "1" + tvCookie2; + $.cookie(treeCookieId, newTVCookie); + } + } */ + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#sidebar"); //hide the parent div of leftnavigation, ie sidebar + var content = $("#content"); + var animeTime=75 + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + + if(noAnimations) { + leftNavigation.css("display", "none"); + content.css("margin", "125px 0 0 0"); + } else { + leftNavigation.hide(animeTime); + content.animate( { "margin-left": 0 }, animeTime); + } + showHideButton.attr("title", "Show Sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + if(noAnimations) { + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display", "block"); + } else { + content.animate( { "margin-left": '280px' }, animeTime); + leftNavigation.show(animeTime); + } + showHideButton.attr("title", "Hide Sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "5ChRb3=&ZQVnzlQAj!bc045;>L^T7$?XofkpSAlK%2q98 z@L9Ky!54_rZcbrXu)LLF;fhuU + + + +Recoll user manual -

          Recoll user manual

          Jean-Francois Dockes


          diff --git a/src/doc/user/webhelp/docs/search/l10n.js b/src/doc/user/webhelp/docs/search/l10n.js new file mode 100644 index 00000000..f25bb8f6 --- /dev/null +++ b/src/doc/user/webhelp/docs/search/l10n.js @@ -0,0 +1,5 @@ + + //Resource strings for localization + var localeresource = new Object; + localeresource["search_no_results"]="Your search returned no results."; + \ No newline at end of file diff --git a/src/doc/user/webhelp/template/common/browserDetect.js b/src/doc/user/webhelp/template/common/browserDetect.js new file mode 100644 index 00000000..c6a2c73a --- /dev/null +++ b/src/doc/user/webhelp/template/common/browserDetect.js @@ -0,0 +1,116 @@ +var BrowserDetect = { + init: function () { + this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; + this.version = this.searchVersion(navigator.userAgent) + || this.searchVersion(navigator.appVersion) + || "an unknown version"; + this.OS = this.searchString(this.dataOS) || "an unknown OS"; + }, + searchString: function (data) { + for (var i=0;ip{ font-weight: bold; } + +p.breadcrumbs { + display: inline; + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; +} + +p.breadcrumbs a:first-child {background: url(../images/breadcrumb-arrow-white.png) no-repeat right center;} + +p.breadcrumbs a:hover {text-decoration: underline;} + +#star ul.star { + LIST-STYLE: none; + MARGIN: 0; + PADDING: 0; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + LEFT: 1px; + TOP: -5px; + POSITION: relative; + FLOAT: right; + BACKGROUND: url('../images/starsSmall.png') repeat-x 0 -25px; +} +#star li { + PADDING: 0; + MARGIN: 0; + FLOAT: right; + DISPLAY: block; + WIDTH: 85px; + /* was 100 */ + HEIGHT: 20px; + TEXT-DECORATION: none; + text-indent: -9000px; + Z-INDEX: 20; + POSITION: absolute; + PADDING: 0; +} +#star li.curr { + BACKGROUND: url('../images/starsSmall.png') left 25px; + FONT-SIZE: 1px; +} + +table.navLinks {margin-right: 20px;} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.filetree li span a { color: #777; } + +#treediv { -webkit-box-shadow: #CCC 0px 1px 2px 0px inset; } + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal { color : #0000CC;} + +.writeronly {color : red;} + +.remark, .remark .added, .remark .changed, .remark .deleted{ background: yellow;} + +tr th, tr th .internal, tr th .added, tr th .changed { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; +} + +.statustext{ + position:fixed; + top:105px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + margin-top: 30px; +} + +#toolbar { + width: 100%; + height: 33px; + position: fixed; + top: 93px; + z-index: 99; + left: 280px; + color: #333; + line-height: 28px; + padding-left: 10px; +} + +#toolbar-left { + position: relative; + left: 0px; +} + +body p.breadcrumbs { + margin: 0px; + padding: 0px; + line-height: 28px; +} + +/*body #content { + position: static; + margin-top: 126px; + top: 0px; +}*/ + +body.sidebar #toolbar{left: 0px;} + +body.sidebar #toolbar-left{left: 0px;} + +div#toolbar-left img {vertical-align: text-top;} + +div.note *, div.caution *, div.important *, div.tip *, div.warning * { + background: inherit !important; + color: inherit !important; + border: inherit !important; +} + +#content table thead, #content table th{ + background: gray; + color: white; + font-weight: bold; +} + +#content table caption{font-weight: bold;} + +#content table td, #content table {border: 1px solid black;} + +#content table td, #content table th { padding: 5px;} + +#content table {margin-bottom: 20px;} + +*[align = 'center']{ text-align: center;} + +#content .qandaset>table, #content .qandaset>table td, #content .calloutlist table, #content .calloutlist table td, #content .navfooter table, #content .navfooter table td { + border: 0px solid; +} + +#sidebar { display: none } + +@media print { + + body * { + visibility: hidden; + } + + #content, #content * { + visibility: visible; + } + + #sidebar, .navfooter { + display: none; + } + + #content { + margin: 0 0 0 0; + } + +} + diff --git a/src/doc/user/webhelp/template/common/images/admon/caution.png b/src/doc/user/webhelp/template/common/images/admon/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7809ca4a9c8d778087522e5ce04b6e90099595 GIT binary patch literal 1250 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|Pftew|C&U%V<=|it5MYpyU{F+K zFf?Rva$<;zVn|MA$j)XcE@r5%W@u>vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/admon/important.png b/src/doc/user/webhelp/template/common/images/admon/important.png new file mode 100644 index 0000000000000000000000000000000000000000..12c90f607a1b27ddde0a7d922ae255e8c90e883e GIT binary patch literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/admon/note.png b/src/doc/user/webhelp/template/common/images/admon/note.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c3c645ab9af6318035b026dd86944b9ddc9114 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/admon/warning.png b/src/doc/user/webhelp/template/common/images/admon/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1c33db8f34a8b42b373179b46a2d8d8a10e061a9 GIT binary patch literal 1241 zcmeHH+e?!H6#vDtmgHCxG{Q}12(7`~)|MMe^RnTlY0JD#q1sIwW1DTCqzzwWg@Q=t zBC2Iceu@w4LHM97Gb5%*E%9MN*%m}jvs!{N@Pd8$H}vS?TsRzlzr#5kPPe|YG%fXL zDu6VdR$WC$&Oc)^X#ZjK-7LU>{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/1.png b/src/doc/user/webhelp/template/common/images/callouts/1.png new file mode 100755 index 0000000000000000000000000000000000000000..de682c628feee885b97fd19e77b016518d833711 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=92~rKK68R45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%<(RmX6r@{8<}R!o-G--zwYdTlP5b5@8;1{=w*AcsQTNRLe=)iUl{`QE`z75pUXO@geCx4;f9R> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/10.png b/src/doc/user/webhelp/template/common/images/callouts/10.png new file mode 100755 index 0000000000000000000000000000000000000000..96c6ce45275c754c86964f523e57bb2ca5507877 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%nMc45_%)J87f$VF!_8`x4j_g4RWzt>|@iO6xonCpLUuhigLc3Jb+U%Op*^%iLyO4_(X;pN6- z=a#Hm^`=rTB~q_P5)HwY|d8XT*w^=@u zSiV--p1!#&MsKHy@TcQO>_47BbD2s2LA=92~rKJj#M45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWC>mIVh^7_bp?vVw0Ac8FkGr=O>_47BbD2s2LA=930$iScxC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWu;5ShzZF-HKw%&(Ci= zKi__F#+A#LnX{Q1Wv$B$B&4JcEs1e3ld7n!Y^>a~XOD#~N71)ON4pbaWYyS|806*U zoij5voeK*MV|bQ)WU}+UbmrcJAECGvBVZi8DU2$xScp!J|iq49efdw9T3& z6_BCi{Wh_2S%*lDpnd(nngWmgRbRREj-5Ec;l&{=c~OYLP(f@;Re~n_6uEq+jm!eY z4?T-!I_%-FU3*BV(lAJgz49qrkWxKEFbBgty{H#GlO<(=fzROS>gTe~DWM4fIlZ{! literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/13.png b/src/doc/user/webhelp/template/common/images/callouts/13.png new file mode 100755 index 0000000000000000000000000000000000000000..b4878f1a451337e8e34562ba148f4b8669dbbafc GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$iT8AI45_%)J87f$;Q)bS`?pED9L)6<@taey*G&cvlxG%uf$~RZ!px!#yrs(!{N|KWn3Uov-5ZqPv zLGQ`bEpBhw_dhHwe}C`pZ?79y1Pi_A2up2ruQ;N8QQgipNi)2})8dF>*H_m&0{%5C zo^;LYWd5V~uFmmHXTR6CJ>sr`PZT&FSe&y8zHH*7Cd|XeyybRo#k_WnEVZdxqa~r7vo!eLJ*%Rovco*|#lmM%k0+X>Kp3Z{yj} zom19d!1vow!LQ@5y-vBWOO>_47BbD2s2LA=930$G4ynC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWBqMPL8CfP}<}4avv(*kWU2Q#57OY#I+56h3lkd-N!&t^WVN#45%PeTI#kX1)LZ z{Y&6s{{R1fdO`}z@du(}8Bda~a)h?5<7D|};23;_o9z*!hN4f3i#NlOhKPVyjZ0+$ zs`hXm;d40CdVHCWLR`zdu*A+i5}Fg64?SQDQmSVN=3p>A>#6*xIoSgkq70s{elF{r G5}E)R1*_Zu literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/15.png b/src/doc/user/webhelp/template/common/images/callouts/15.png new file mode 100755 index 0000000000000000000000000000000000000000..f6a76d51667ed2ea608facddd705cb079d9150e0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%VAa45_%)JIT=daDc$^|DBCd8xsyR zsGbb6N-H?~OhI+a?8&k|8apgJ*x8rYFtG>AaLKxI#O^8)d?mF@lv8$#g2j>)(NC;< z#D9AQCA~b@|NY(F*mqCw#XH>V>(omWWZUR}rZaqzyNgZW36WT#{v(`SZ`*gM#?9C~ zUGr0?^Pl`Rzga)Jwp@Bu#ox6k!ECnU^{=JNbWTU;P1l%y`n9p6z`Tsg-OYLxSf&G|7V^1m;Mc0w&Kr6dteMOc)I$z JtaD0e0ssM<)1m+X literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/16.png b/src/doc/user/webhelp/template/common/images/callouts/16.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ef6359aff17dae242a9f9b5b07d37492c5e2d5 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$De`o245_%)JIOx#P=LtM{*BGkqO3z+ zOz0O-$=()Z)u9(O-ASYA#RbKZ7XdCut~zpb&9>MgVwGB;JwyM2zyzg*l3KD>B|27I z3%|3;`?@S;uY0)nPWiq2!paXWHgYr-cnqizE%Fd8zieDgW5l ze=>zBG}QIwrv|$$yZQW8D?_xBQk;!u9!W4bkhS$tfkn$>ittqpVD zf1h7XAn9?*^ohRPa@ljQmoC)k(m1>1>*KtssgV~-Z8Oq0M{e|;rn^@7O>_47BbD2s2LA=930$G4gbA45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gW?*}&7>JKP8>LQjxULeq0mxTLm?|WTXN6dy^?nI|9YG?f)^5jUtj}M6@4{d!ehO>_47BbD2s2LA=930$DfM)545_%)JIOx#P=LtM{`$6{S(g?% zwR`Myn9#*2I6cTZBz8;iw47M0DSWb4PmNg$3#LpnRlq>o})cD8xLPn<2RG#*B^`C5M#GZHV1}#5QrW zt5#B#YTt(FHNSa3`dX|k*t6Y7t@ur)oX+W}_d3&0OYpE|Y`>jhHoHKEec$`|pqG|s z&xL4Bed4#AIdWRE?ytXgCccMDtXdaoNbt3vNZYI)QsuR&+rU@&Yn5#GQKhsw=bv*l zHPo*U)7F{p9k?q=_I&nMsd௱J?yghEpb|-VpoRA}>5tWxeXQuIvD5d;Gpf0>c9xIYoipjdSHJpu$iFlY+O>_47BbD2s2LA=930$De`o245_%)JIOHPkb^|){7z@httA~7 z6gN8yth{mbWRR7}+&2oYE4pJBP2rQZvb17XH&@*nAiFEPpqy9H*+|6d%F&}u-gkce zf8?pO^2abg($Weo=AX(PI$`CEgN8G#7n!wh>srX9Dv= z^G6)@-TwO(?Kq?F#k{wj=_6M?kNvR0HfvMg!xc7eOM@C0X%xhY?|UCVDfL+8vKqVf zWxHcntdg=?bpQS0n>k5VbCo8aTyQsU@x_ce6Ta$vblwuBJH<;?XZq;?gV|@-IqTfs z7PvO7we;x0%}EAV?|Z#xu(oO>_47BbD2s2LA=930$G4gbA45_%)I?2$xH9+QQ|1|-{i2^qS z{QMqWc&5@~vSqi)jg)R@l`jf{`jM4 z@AGdp@pTq)^|)MeD(~sXLh~mUe4BI*Cv7}nz!Q9M``wL#*B>3;y!v{n?7Zh|)m1%( zx;M004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004_ zNkl3-r5QX2JA`%WOg@};C`jCi~jij)ModkqKNNHgqLBt~eKv9U2T9g=b zod`A->8!-&I4lepOcCT7AzE5UW)@CPNkRrbc9xmhncaO7j?GWp5!ZxDc!?P?BAUdf zohUhqG~$6c$Itdf6o_ZuxEw_~q2PDp?l;6cVY+#|L?Y2_G#XG<74!KVxm*sD$po=j z482|t;cytHX`)yxVmux{Qq3!OydMsSDNfGk^H?sIs8lLwwOXjx>u9&z$Ye62WjdY4 zU@+j$ZkZn<5{Y0sor>USG(t2Q6@Ds}5*^t(oeq-8q&;?$3oo4)iO1vUcDuq?6b1YJ zUiiD+4uL?xPE%!Pk$C4yT ze21><;yV_L1vE{AVHhlgsB|KL|JW_7$L_*O>_47BbD2s2LA=930$iScxC45_%)J87fW;Q*1g|4U?Dd_qr__Nog*S`iY2k5iL=zix>?%}Kg^qDT9ql*xg$<*x~|zy6W{WDR>vFSEu8_J2kJ|XUJ6!g ze`=_BuH*2m6L$spudbPO>_47BbD2s2LA=930$@$+0wo zD*JBcv>EUS9ygRKd3Wda2c@>dieam-=FL;_T=4qWyWPIaH{GaEvTHdWtvB6XF5>dm zzKR>~zZ=fzopr06Xx?WB>pF literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/23.png b/src/doc/user/webhelp/template/common/images/callouts/23.png new file mode 100755 index 0000000000000000000000000000000000000000..3909b9cd8fd0720f5672bbdaa4ae37ba82c4b72a GIT binary patch literal 589 zcmV-T0004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004` zNkl@;rh&}uquSANt<%`2sbVuys_h9v7;)!@rdAvv@QY;h-&@>IEX(AqvV>ld& zd!x~S-|vTE7)Yg3==b~ARMTa}i*~zx#L0<70^{)*xm*s_Y892&PDh+wE*F-|r5roTqwd>3gp;|m3{_RJSS&D~ z&xP`PXgumA!OCztoyh0&NG6k5uh$}Dv)Le<&5DUCl?uw`vUtt~_k8ery`qR0uv)FY zt#mLLz~}SHtHFhOG#VAlNT<`7OeP=6ykXufM>rftuh)~Wx@-XVbUJA>#!_KDAsB<%w{t-LO}Uqfd9lPyGN?9A0LSWV&@ObC5W4^UX><4x0#%OmuWM( bB@^EOG7*lLyH^aK00000NkvXXu0mjfdrk4= literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/24.png b/src/doc/user/webhelp/template/common/images/callouts/24.png new file mode 100755 index 0000000000000000000000000000000000000000..963a9e770cca4a2c7c7d0628a131848672c9bc83 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$DfM)545_%)JIT=hP=LVk^%oAVP~8MvZ@g~%#R=Z-}gYXd}BmtEHUQf2FPej@wC zcP0`%ebH;heAI+5nDEA2Z;e`e%w>_rp#lpQ&qN`py_WozqO0O(Ne_%0(Y9 z++(O&#b@<6b7KU{@xleS->zfd9JSVrm8trmW$pWr(7n0aZzo8w=}bSpHs8^;&P7De z_v+```+6c=H;*PwT({>m$Gizf2kH+gd{;TAXunS}{lq`{xq5>3Z?7JCqLyB?>y&o- dr~Z`3=0&eE`Pvp`?*_&SgQu&X%Q~loCIDgE)%5@X literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/25.png b/src/doc/user/webhelp/template/common/images/callouts/25.png new file mode 100755 index 0000000000000000000000000000000000000000..458a91990be481a831161da501d993f1fb4fb9ac GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$>GpJS45_%)J86IRAqSD;`#Tx4HG>?z zj{3?pn^^4hXjhnNU8Nr? z=UeBJ?Y;klV)@Q$`*$BhH>|Y?RMl}(=j*V1DByc&y7*Lw3#x_gbCUMkam=oG;;SL> z#YN^}dEr;?M^g(-^YrJRH<#{ZD~WA?Ub!MfYlh$Qj-yEtdeb{xl` z+{xPWSpOF+ja#pNZPh9z8NO~l6JO`uciUd?s#)?m#GccyA;Y9AZ+myr#*VXTn?sc* zdL&rLbXj&RIby6o>7>f5uU0v?{|O$6T7TVR`Q;+(=MKkBd`qlkuVk4Tx~@E$)EJ`0 zIeg3KG*D!B_%t{6OB{an^LB{Ts5T43Ks literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/26.png b/src/doc/user/webhelp/template/common/images/callouts/26.png new file mode 100755 index 0000000000000000000000000000000000000000..74b2507390edc1d45140ac991b9e73a26657cbea GIT binary patch literal 596 zcmV-a0;~OrP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00052 zNklNP|PIxdf6<4i1k7aR_vB5gbx<5JZFw znjFOC4euWi5h6rP2pgW#7_NeJ&dnDusp!BD&g0(i-tV6GN%&qq;+i-kWWqsA35}=| zhPhF)h%Sj+!jGTpoluE;{;*j@55x(6FTVYPcp;wbY%d;<*K4&JWLd_1K1Vj2#b`8w z!{IkZQAeB;ehPxLHs zI-O{@+t_Zm!o_4V;U)RVDss78C=?3F=kuS_Ae(NtTfDj1Y>ETSV&Nku2$-$yEy5m2KJ`<O>_47BbD2s2LA=930$sq%Dj45_%)J85I~AqSE6`il)qMV9l4 z9z1wb(L+`yW{F4JnYph50*)+nejy;E#n|50zxUoUKHxt{h#t zqq}y!>Ll*mm(Bd|^xmJ2)wAbJnk%%u#ZBXg;6^2zLu&U9yJ;%L3i2P3tXs$Lq#iR* zMfs9&VblHY^8G4tobk^dhprC2y-7!-t4V?5Lf&@6`R6y@f6rRH{kG$@r|wdIKURF- z_kQ-;Fz)W7OtY3Py#9J&&`OS=%{N`NrXDJ=c(QWpgKiD6?s%c;&nq>idNoZs|NLTx ziBqR{>PMSfN345~Cp*gUu)QeTeNk0aaPHE}nI%@T5^aSM+9F&ho)*nGn|A1QM9nit zv)Qiu@3*geeIsvsdt23BzU!rr&G#f-3=S1te34^WX42j`ZrQC-yq8~^==uF9ztQ*j zPO8z&Cuy54Z6+>xpEKojs?PM&6#_Y$Vh#VVm@ZfM;d}nEb%#RV|BgGn507k?YP-|X jGRI!Eqvelo&L5VVV;QTDz7*I7j2Z?{S3j3^P6004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNkl3-r5QX1Gix7g9MMP_>Ln0O;f&{gQoumpvz{WyEQUr^DKR~chu@)hU z`2iMQVXvZMI4mwgFh!K>43;92nZ=WfBq0MI?B32}-pq}J?_nqIiEBb8PKha@5EbIX zNR&*XTcSi<;OF=xvP6?F7L(|iILGh7)o+M5LbbBJP$*O>m&=f48Jeacl}ceS7$6u7 zqFSwr@6+iNnM?+~Uav};E?0bPx7#sJPN&nD&*vx<3aHg;7>z~j|aoyQ25~luh%QitJMm--A_-hu`lPZ*2924^F2O#bOcJ zY!>VFT0C+KEaDiC$A=d9-?C7NMx$aF`FtLW#p2*#GMNam@V1}qKDxXB_T_S^I~)#+ z*|sD}aJ$`TwOT@~swxtR1ZJ}tFM?M(T7dt=9k*{(VGpmw6>;{*%B6{?<6SkD{K2&3 gJax^q004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNklcV7wL%}Lx4=Y&EW5C)+W55&6} zC|Q!Oh7ZJzvj0dqUG8|-YPBvnIF(9aGMS)QETUX4qup*Jolc`rC}6c(A)C!| z0q$(K@gjUa9|nVgm`B%jsH!S_{`Pu3;g3cm#9}dX>O>_47BbD2s2LA=930$3G{Sv45_%)I%%VKOM=9)`Noz?N>Wl% zvt;_6qxv5!EK=NYb>Yzm2UHcMm~PAD?b2oX&*+-Tb!6qjr)-vU^j@$PXJuIBdCY0O z=Wk-?x{ke0!S4Ow%a5pDR4?lk{pe*Qct13;J$sjuTxar@*X=u0WA;rn zwG9{D8^_=G*kM|#&UEh;tGZM?wW3qcT0gDOKjQe5#gXB#!GcUFv)R1ME@u`7tSmkx zcFKD02V-6~<}=SfKf3w7w#QBRo}G%^kx%YhyaZTY?BYBBdDb=7Y@6KdS7o~+)?fFy zEYh{eR2u<_B>$VGB9|$`njxgN@xNAoG!y< literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/30.png b/src/doc/user/webhelp/template/common/images/callouts/30.png new file mode 100755 index 0000000000000000000000000000000000000000..c4dc404bc1cfeadb3f6e80671196d292e8eda1ed GIT binary patch literal 597 zcmV-b0;>IqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00053 zNkl+FR z${bd!72EAr==FLHhr=NgHASk;W&@kehFC0yLZKkm6h+zTj=V(d5l_a=Uatq2%O&(| zHiOx07MjQ9aw(7LoY)+VM$j}(toZ$Y?wru=b{o-XRA?S~{uQFD&x66>qEe|?LZOiO zR_^d>wZeEjMlP2_Hk%a}r&1|QCKEQox#^n${u5{H9_bwR;|p;_SpKlwB~khARcZ2T jgUR`KjSMD#lLtQmtF?>&>wXE800000NkvXXu0mjfFy-;> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/4.png b/src/doc/user/webhelp/template/common/images/callouts/4.png new file mode 100755 index 0000000000000000000000000000000000000000..1e42fb376bf0da3014c1b71496a3027daf578487 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$VeoWu45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%^r=YnIgE*Vor4#xN?x z@fMyo<2RAke=SI$GU0f98M_# zi3LlSwkn#MPJMWGw)u@Eu?|wa8*Uyubm&mQ>ub7ff`WoMQl&ErZiWR09&F%mSoGLL zV73DHzyJT`gB6vF&KSlpew@{~gKhdr1?LMUjR#oNGP)`bI@mC%wsiJna5hK?aC_OF zF)(NT=&Ml1kfdj0mdf-|>B|-_?0!c)I$z JtaD0e0s!H`mGl4r literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/5.png b/src/doc/user/webhelp/template/common/images/callouts/5.png new file mode 100755 index 0000000000000000000000000000000000000000..635e7f816277da13e909e96b832ac8bb5e7d50d5 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$arAU?45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWL$+hvz+Zh-b8y_w; zG&=OQgEcd)(Q3W)%?x&S_O{a3*9==)TN5`|8VS5lZ2INN7U>orKmXyQqumxUXA~HY zJXP3U!njdnQ_t+#(uXIj`%5fZyjZfSxmohueEahsetu3*QMFN!=DpC%!_S{?QTa*5 z+0&ELxxC!`@SUB-7pK11kWkz`YnIfU+UMtFH_X4tc;Xm056gk|@%t~dt}}2{7H7S) ztF+tE)s^*;nyhTwRPFFZ+BccG=A3qrVgF>{^X1CQU>@)3dZ{12e@{Q&N@ ze}AouoIH-qV&GsXU}{k14XE0~*;TFZ?9k*VMvWDMRZ*>~pOTii@Ns>W_UQb>=%dK+ Y`mKN0%RTQafg#M`>FVdQ&MBb@0Dv*H*8l(j literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/6.png b/src/doc/user/webhelp/template/common/images/callouts/6.png new file mode 100755 index 0000000000000000000000000000000000000000..521aedde2c46c55421e87a355b77c7d77238a929 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%eGb45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWij&rZ~=9KvP@ikAGBI4}o%6fQ-=VXbhs;UV~)th5j zH*FN^sGX2%Wo<2~<}>5Khfhzv+m`#!H##%JkU3H+#h9DhL?NJI#R?5(YisMncXk#_ z?yLLDWybO%Bt=zEVY$?T>_4BM^EY>OaXA+i867?~Rr}yMS7s}p8%_S+-rb2`UtLZ3 zc5$)0i$MIZr^U^ zjoh9myJ=Et&xIE|dSpJz$jI&f73kPzVZvfVI+ z*{k2Y@djhZ&JQX(eH7wa=7lA8?vc=(*!<`xTaZ#cLof$}O?6yAW0@5rFcug*UHx3v IIVCg!0PJ|aQUCw| literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/7.png b/src/doc/user/webhelp/template/common/images/callouts/7.png new file mode 100755 index 0000000000000000000000000000000000000000..0d4b876a8cc1905944042956cc2c8e47b060fe3d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$;qi2F45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWS+VuTo*!!8G5L6qV+#E-vTdV&hF`XZZx!Ctg+2(K!+*LG zyf}n6sxdGz%wd?3n8)^Lw!<5SBQX_|V$=lmo%~mCaEa@ga>DWD8@3>&dWK*QhNZV1 VXB~Ynd=MB|44$rjF6*2UngBtSpxyug literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/8.png b/src/doc/user/webhelp/template/common/images/callouts/8.png new file mode 100755 index 0000000000000000000000000000000000000000..50fa94d16db8ef19ab376affc9da83e57521ee03 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$3GsAs45_%)I?2%caDYgwe=>Wa0DC)+ zpJEBu(uGs_VqJK4q!+Gmc2|7#;K6x;<2tNIT{L!h7jP?;z{$vZO$J~+Srg9=`o3ATW<2sm`|TLKPrTl zTM4C0@wMNcJmZkTkrX4r)9gpqhUhL*y#IZBnwr_Ws=ayJ=WMe6Cs6xw^&$<9CWcKq zi*>xuq!~Y{yjSpT_qF3<$r5arOpaFAv^}<%;kUe3&g@n7?GwjR)Rt*v>2>?+&$9RHs^=a@+U0rJ3Szh4dsk!UJ}os#;LACNKZ~sxR($&5C?i~5 v@A7U^MNazE_CIbMmba_aTK-Hn|Hl-#D=GDt)vx2gKxgoD^>bP0l+XkKdAG}3 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/callouts/9.png b/src/doc/user/webhelp/template/common/images/callouts/9.png new file mode 100755 index 0000000000000000000000000000000000000000..7190d5a9aaeccb11ce5c500d5eeadfb1299c78e8 GIT binary patch literal 537 zcmV+!0_OdRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004S zNklHU+e8LN@ zwH$?bBM#-oFbrXu=5n0N<&eo_l66xSH+My|*$kFtfiZ?cp@2?jE#;NB;59 zCh$BDj^iK*0=TY=`Ft)L;VP9dz<+eX-6NdC{rEu~5!-)Q?wWW^dR3VGPBJ-vyg)Mf bmq`2tvJ+juyP*^?00000NkvXXu0mjfx%}Vp literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/header-bg.gif b/src/doc/user/webhelp/template/common/images/header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9efa280225828f2ccfc6c051ffcb6d668967dc6 GIT binary patch literal 619 zcmZ?wbhEHb6k$kVxXQrr_wV2D-@pI*_51thH{ZT}d;j6X&tJdZzI*rO%a`B3e}Dh+ z?_@ZZ0GpFe+j^Y-nB4GQky?|**%@Z-z7FI5Wv|Nm#8B~bjy0ybU;M1uU}!1n(@e}RXNnDU7wMLU;R z%)gK^#d&Si`s=-Ar{9+8KG;xUvu?)u7bR8)^LF3QpHSns{yO`QJ$3uP|M=g~*eKi5 z+ScAK)z#h8+v_%A0^{TRT6o;hpwoH;@B=L;=bykzOp=_^*StzNTs-8zPin>KIR z!n=LP&Rx4C_U_w%;6TUW!;;62pE!AP;+eDOoR}_Nx_srzvg_C9-nzwp_ul;n4_F^R zdHU=b_sdtW-@J)?|DNO1=PzHsvi$h@>-TT2fBzYn*+QHrBy4SF*Vl+Su_4h}O+fM5 zEQ^VaN4q7A(|C?eT)d!P!MRJtZPSEJlhx%{#GKre>g{fjXgAw)^RlyPe8tanPJHH> z*)iY#A?Mwur5P7%=6t{_Ev$x8UUy{IJ*D< literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/header-bg.png b/src/doc/user/webhelp/template/common/images/header-bg.png new file mode 100755 index 0000000000000000000000000000000000000000..75202f9b37af36592e8f5bcb5badd5ac3f71d0d3 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^B0!wN!3HGTRtuZ~QWHE~978H@y*;y#_Yebv%f;Dk zjs`RM4lwB)U|@-!VA^p@iBqE~yUEE!RD!3;L@}q3=OVXb&Br&v8zZefTOJ>-47Kv? z-c>Ydn(tecwS3j;nbmeyp1Z$2QZe1WdUDCGa=)P8H5Q(Ce?L|EI{%<&3ofvqPkr;s d$^Y#CFcq0@`TrwZ))?qE22WQ%mvv4FO#lp^PX7P^ literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/highlight-blue.gif b/src/doc/user/webhelp/template/common/images/highlight-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fdabde69252ba43e8b658c74a72775caaf304f4 GIT binary patch literal 471 zcmZ?wbhEHb)L_tNI3mh0b>*rn_bz?>^5NvQ+|z#z(?15yRD zlY#Yrf@+_NCr7*Rnu7}!QgzNx-55}@F4$S|f`i~ggBz0NjqwI*2{Q9{vnE;=IjrB+ zDCD7$u;0?zfI%<#i1GTJdsHRM1Uh5*=AKsEeQ?SYjaMqdjg0|KjY4kRs^-=Wtu3wX zZqXd>y-od16RmlavwB*EXSDg-v-nSI_Fpi|n$>jqfB1PxT?^`t?fQfg*PWROT z?4=7Bj-NPj$bb8e1?SIiu}ay0;o4&VD^suExnz0EZN;6_?hnqjm6bhlW2}3)ao5bl z&nzEpx@W<5 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/highlight-yellow.gif b/src/doc/user/webhelp/template/common/images/highlight-yellow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e847e7e01623b08e9a7e7d823fcb97104e76194 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VJrYF0HOc@`{bSf|Nr^cZTH48_|8oJ^wtd=`2yXqN@dAW)FA{*9 z0^lo>f-$0TSwVV~Os3NTjY>HMo^?sUEofV-pivzGA!zUjgNA5FQ#EN!ZcP>Pwa!Lg z*&TUsLwr0%X>V dfG2i6;P)aBqN^Dbjd|Rq0Yr!k5L_hy06YHIk5T{t literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/loading.gif b/src/doc/user/webhelp/template/common/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/logo.png b/src/doc/user/webhelp/template/common/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..42e7848309f8d4f9c23ad2aff78b47b8bcf27835 GIT binary patch literal 457 zcmV;)0XF`LP)6jNii`DGC+xg7zdey{{J6rAvD;cjBzx|hFS>G2C(2MzPP^rdM(C_ zC(7{X{mRY8fLkvfjf^jva2A@c#dr@os^OB=y82w}$}?QD2OZV$cqU}!*^!X#M+?T$ zf^js;hGvv8?py1FOYYNu(W}4hp-r*>3}_4)rfagy*Qj50T+_kXF8=vk_Tx5doLY?- zKkI*>Yn%H2Xf7k*AjZL#%LZMP4Z08-bZKZb$`}|J7#J_laKI(^j!W>2oDnWroaS<}W#odCRH!lU<^wj`c5wJ7dEmC=6LXjghP%0{DX zpaCQK!@}B7*cU7>Bs;7_RJjWDk>HR4;U0G)l~k~EqL_RVNHXt zp|F%aL&tk&QFDfk40f#s0sKdvH+BhgXtFR)5Pp>CcW~(kW&w4*hz$n>JLDT!A~tAb uu{`2*V3nW1I#D!_;gQn}&KC>{2N>!FRd(cyzWN5Vl)=;0&t;ucLK6V+=s$P> literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/previous-arrow.png b/src/doc/user/webhelp/template/common/images/previous-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..347bc53474ce6f9246e45a2784623ac3c55203fa GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dF8<0HkD{mW+k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^(7*cU7>Bs;7_RM+{CQNw1Fo``;OomIOA;eyQoxxDq zqleYEkzs-s!=tK_vpODKLJPP=Hrzbak`ij8=UULpEv8e!aHP*6O-Z2sz)AtOhAwdi tO;?4yBLSV-6%OYZAAQ~MfRV$1!EulJ!>J6GyMcBxc)I$ztaD0e0sv`WKHvZV literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/search-icon.png b/src/doc/user/webhelp/template/common/images/search-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..715f62d08b07f857b5866aadab38c9275c1c7513 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6L!3HE_wj8emQjEnx?oJHr&dIz4a@dl*-CY>| zgW!U_%O?XxI14-?iy0WWg+Z8+Vb&Z8pdfpRr>`sf9Y#@6Www1Qyw!k0S3F%DLp+YZ zy<+I?6ez>`Aztf}Sn4}APCv){3l|=>Yl)V3lbRE=XyLww>=g=mre-ad1o$;s=E~eD z+1Y%=dExh#rt)dr&+9GQtIt35Z{zvT^t|GLxm`j3W0RKkh6mMWWjy3Aj!_ZROK!09 ztNWn5M@?|QQ%lvEHI1z2$~vEH`%o!!e`u6{1-oD!M<4CsTk literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/showHideTreeIcons.png b/src/doc/user/webhelp/template/common/images/showHideTreeIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ec1f96a4c519610064feea6de06358e9f6e38a GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY> z6BZ`#&b%i800LG?L_t(Y$L-b2ZW2)($MNr6N{|8D3Y1Hs4@EXeks5%$)hVFkKicx7iruNhXt=oZtVGoO9+s+TNG1A|i+gzW?(r z;&VCo>%25YWQu^ooPi>ZYKsMQ;c$770xZ9<{Y za&RV{W_@jq+J2p0|9r0P^L-zuT0<$HaIF053r`_&Cm&Q{H+i}n| zol>cYVHoql>ual|Qz?#HE!v&VQa5(ux>Ov8(8>zsVgXIlX2aP`n!#Ym;n8uR&t)_k zQLER9MlBNY8?)il(=L`3A(==7fXLs^cFj7>-y*CeEhVB^3=@cQL(EGFNSj+i#gA^xvn=?v5V2@-~JyT1jz=0 z-v`KkSQhRWhVf$AEbx3$xCy)l?!;ozMYp;QyaDb$+P#1H11-^gON17#t^fc407*qo IM6N<$g5CR900000 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/sidebar.png b/src/doc/user/webhelp/template/common/images/sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..5492671871c1fdb7c149bf233e34ebddd074c777 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1SHcW3~hmwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8U{4pvkcwMLbBxo^O;mQ5C}5VBp8e!WN?S`y%iQnt-qwGU z>u7lMf5n5>*VhX;sx9C%(%2aC{q^zkm`nHf)ixVQbn@6YFfcQ; Xxf$LLJ^5Y}Xgq_btDnm{r-UW|fBilp literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/images/starsSmall.png b/src/doc/user/webhelp/template/common/images/starsSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..490a27b9255075c8ce355aa3e36f89c82038b794 GIT binary patch literal 1032 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").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+""),cl.close();d=cl.createElement(a),cl.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ck)}cj[a]=e}return cj[a]}function ct(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function cs(){cq=b}function cr(){setTimeout(cs,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;e=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?+d:j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){if(typeof c!="string"||!c)return null;var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
          a",d=p.getElementsByTagName("*"),e=p.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=p.getElementsByTagName("input")[0],b={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:p.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},f.boxModel=b.boxModel=c.compatMode==="CSS1Compat",i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete p.test}catch(r){b.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){b.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),i.setAttribute("name","t"),p.appendChild(i),j=c.createDocumentFragment(),j.appendChild(p.lastChild),b.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,j.removeChild(i),j.appendChild(p);if(p.attachEvent)for(n in{submit:1,change:1,focusin:1})m="on"+n,o=m in p,o||(p.setAttribute(m,"return;"),o=typeof p[m]=="function"),b[n+"Bubbles"]=o;j.removeChild(p),j=g=h=p=i=null,f(function(){var d,e,g,h,i,j,l,m,n,q,r,s,t,u=c.getElementsByTagName("body")[0];!u||(m=1,t="padding:0;margin:0;border:",r="position:absolute;top:0;left:0;width:1px;height:1px;",s=t+"0;visibility:hidden;",n="style='"+r+t+"5px solid #000;",q="
          "+""+"
          ",d=c.createElement("div"),d.style.cssText=s+"width:0;height:0;position:static;top:0;margin-top:"+m+"px",u.insertBefore(d,u.firstChild),p=c.createElement("div"),d.appendChild(p),p.innerHTML="
          t
          ",k=p.getElementsByTagName("td"),o=k[0].offsetHeight===0,k[0].style.display="",k[1].style.display="none",b.reliableHiddenOffsets=o&&k[0].offsetHeight===0,a.getComputedStyle&&(p.innerHTML="",l=c.createElement("div"),l.style.width="0",l.style.marginRight="0",p.style.width="2px",p.appendChild(l),b.reliableMarginRight=(parseInt((a.getComputedStyle(l,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,b.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="
          ",b.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=r+s,p.innerHTML=q,e=p.firstChild,g=e.firstChild,i=e.nextSibling.firstChild.firstChild,j={doesNotAddBorder:g.offsetTop!==5,doesAddBorderForTableAndCells:i.offsetTop===5},g.style.position="fixed",g.style.top="20px",j.fixedPosition=g.offsetTop===20||g.offsetTop===15,g.style.position=g.style.top="",e.style.overflow="hidden",e.style.position="relative",j.subtractsBorderForOverflowNotVisible=g.offsetTop===-5,j.doesNotIncludeMarginInBodyOffset=u.offsetTop!==m,a.getComputedStyle&&(p.style.marginTop="1%",b.pixelMargin=(a.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof d.style.zoom!="undefined"&&(d.style.zoom=1),u.removeChild(d),l=p=d=null,f.extend(b,j))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e1,null,!1)},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){var d=2;typeof a!="string"&&(c=a,a="fx",d--);if(arguments.length1)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,f.prop,a,b,arguments.length>1)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.type]||f.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h,i=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;i=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/(?:^|\s)hover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function( +a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler,g=p.selector),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));o.match.globalPOS=p;var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

          ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
          ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/]","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*",""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
          ","
          "]),f.fn.extend({text:function(a){return f.access(this,function(a){return a===b?f.text(this):this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f +.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){return f.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(;d1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||f.isXMLDoc(a)||!bc.test("<"+a.nodeName+">")?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g,h,i,j=[];b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);for(var k=0,l;(l=a[k])!=null;k++){typeof l=="number"&&(l+="");if(!l)continue;if(typeof l=="string")if(!_.test(l))l=b.createTextNode(l);else{l=l.replace(Y,"<$1>");var m=(Z.exec(l)||["",""])[1].toLowerCase(),n=bg[m]||bg._default,o=n[0],p=b.createElement("div"),q=bh.childNodes,r;b===c?bh.appendChild(p):U(b).appendChild(p),p.innerHTML=n[1]+l+n[2];while(o--)p=p.lastChild;if(!f.support.tbody){var s=$.test(l),t=m==="table"&&!s?p.firstChild&&p.firstChild.childNodes:n[1]===""&&!s?p.childNodes:[];for(i=t.length-1;i>=0;--i)f.nodeName(t[i],"tbody")&&!t[i].childNodes.length&&t[i].parentNode.removeChild(t[i])}!f.support.leadingWhitespace&&X.test(l)&&p.insertBefore(b.createTextNode(X.exec(l)[0]),p.firstChild),l=p.childNodes,p&&(p.parentNode.removeChild(p),q.length>0&&(r=q[q.length-1],r&&r.parentNode&&r.parentNode.removeChild(r)))}var u;if(!f.support.appendChecked)if(l[0]&&typeof (u=l.length)=="number")for(i=0;i1)},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=by(a,"opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bu.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(by)return by(a,c)},swap:function(a,b,c){var d={},e,f;for(f in b)d[f]=a.style[f],a.style[f]=b[f];e=c.call(a);for(f in b)a.style[f]=d[f];return e}}),f.curCSS=f.css,c.defaultView&&c.defaultView.getComputedStyle&&(bz=function(a,b){var c,d,e,g,h=a.style;b=b.replace(br,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b))),!f.support.pixelMargin&&e&&bv.test(b)&&bt.test(c)&&(g=h.width,h.width=c,c=e.width,h.width=g);return c}),c.documentElement.currentStyle&&(bA=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f==null&&g&&(e=g[b])&&(f=e),bt.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),by=bz||bA,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0?bB(a,b,d):f.swap(a,bw,function(){return bB(a,b,d)})},set:function(a,b){return bs.test(b)?b+"px":b}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bq.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bp,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bp.test(g)?g.replace(bp,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){return f.swap(a,{display:"inline-block"},function(){return b?by(a,"margin-right"):a.style.marginRight})}})}),f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)}),f.each({margin:"",padding:"",border:"Width"},function(a,b){f.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bx[d]+b]=e[d]||e[d-2]||e[0];return f}}});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV,bW=["*/"]+["*"];try{bU=e.href}catch(bX){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
          ").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b$(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b$(a,b);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bW},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bY(bS),ajaxTransport:bY(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?ca(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cb(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bZ(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bW+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bZ(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=typeof b.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(b.contentType);if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n);try{m.text=h.responseText}catch(a){}try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(ct("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);f.fn[a]=function(e){return f.access(this,function(a,e,g){var h=cy(a);if(g===b)return h?c in h?h[c]:f.support.boxModel&&h.document.documentElement[e]||h.document.body[e]:a[e];h?h.scrollTo(d?f(h).scrollLeft():g,d?g:f(h).scrollTop()):a[e]=g},a,e,arguments.length,null)}}),f.each({Height:"height",Width:"width"},function(a,c){var d="client"+a,e="scroll"+a,g="offset"+a;f.fn["inner"+a]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,c,"padding")):this[c]():null},f.fn["outer"+a]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,c,a?"margin":"border")):this[c]():null},f.fn[c]=function(a){return f.access(this,function(a,c,h){var i,j,k,l;if(f.isWindow(a)){i=a.document,j=i.documentElement[d];return f.support.boxModel&&j||i.body&&i.body[d]||j}if(a.nodeType===9){i=a.documentElement;if(i[d]>=i[e])return i[d];return Math.max(a.body[e],i[e],a.body[g],i[g])}if(h===b){k=f.css(a,c),l=parseFloat(k);return f.isNumeric(l)?l:k}f(a).css(c,h)},c,a,arguments.length,null)}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/src/doc/user/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js b/src/doc/user/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100644 index 00000000..fec53e8e --- /dev/null +++ b/src/doc/user/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
          ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
          ');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
          ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
          ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
          ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
          ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
          ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
        • #{label}
        • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(b(this).offset()).appendTo("body")});return!0},_mouseStart:function(a){var c=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();b.ui.ddmanager&&(b.ui.ddmanager.current=this); +this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY= +a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);c.containment&&this._setContainment();if(!1===this._trigger("start",a))return this._clear(),!1;this._cacheHelperProportions();b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,!0);b.ui.ddmanager&&b.ui.ddmanager.dragStart(this,a);return!0},_mouseDrag:function(a,c){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!c){var d=this._uiHash();if(!1===this._trigger("drag",a,d))return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||"y"!=this.options.axis)this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||"x"!=this.options.axis)this.helper[0].style.top=this.position.top+"px";b.ui.ddmanager&&b.ui.ddmanager.drag(this,a);return!1},_mouseStop:function(a){var c=!1;b.ui.ddmanager&&!this.options.dropBehaviour&&(c=b.ui.ddmanager.drop(this,a));this.dropped&&(c=this.dropped,this.dropped= +!1);if((!this.element[0]||!this.element[0].parentNode)&&"original"==this.options.helper)return!1;if("invalid"==this.options.revert&&!c||"valid"==this.options.revert&&c||!0===this.options.revert||b.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;b(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",a)!==false&&d._clear()})}else!1!==this._trigger("stop",a)&&this._clear();return!1},_mouseUp:function(a){!0=== +this.options.iframeFix&&b("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});b.ui.ddmanager&&b.ui.ddmanager.dragStop(this,a);return b.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var c=!this.options.handle||!b(this.options.handle,this.element).length?!0:!1;b(this.options.handle,this.element).find("*").andSelf().each(function(){this==a.target&&(c= +!0)});return c},_createHelper:function(a){var c=this.options,a=b.isFunction(c.helper)?b(c.helper.apply(this.element[0],[a])):"clone"==c.helper?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo("parent"==c.appendTo?this.element[0].parentNode:c.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){"string"==typeof a&&(a=a.split(" "));b.isArray(a)&&(a={left:+a[0],top:+a[1]|| +0});"left"in a&&(this.offset.click.left=a.left+this.margins.left);"right"in a&&(this.offset.click.left=this.helperProportions.width-a.right+this.margins.left);"top"in a&&(this.offset.click.top=a.top+this.margins.top);"bottom"in a&&(this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();"absolute"==this.cssPosition&&(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0], +this.offsetParent[0]))&&(a.left+=this.scrollParent.scrollLeft(),a.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&b.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var b=this.element.position();return{top:b.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(), +height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;"parent"==a.containment&&(a.containment=this.helper[0].parentNode);if("document"==a.containment||"window"==a.containment)this.containment=["document"==a.containment?0:b(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==a.containment?0:b(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==a.containment?0:b(window).scrollLeft())+b("document"==a.containment?document: +window).width()-this.helperProportions.width-this.margins.left,("document"==a.containment?0:b(window).scrollTop())+(b("document"==a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var a=b(a.containment),c=a[0];if(c){a.offset();var d="hidden"!=b(c).css("overflow");this.containment=[(parseInt(b(c).css("borderLeftWidth"),10)||0)+(parseInt(b(c).css("paddingLeft"), +10)||0),(parseInt(b(c).css("borderTopWidth"),10)||0)+(parseInt(b(c).css("paddingTop"),10)||0),(d?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(b(c).css("borderLeftWidth"),10)||0)-(parseInt(b(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(d?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(b(c).css("borderTopWidth"),10)||0)-(parseInt(b(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom]; +this.relative_container=a}}else a.containment.constructor==Array&&(this.containment=a.containment)},_convertPositionTo:function(a,c){c||(c=this.position);var d="absolute"==a?1:-1,g="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,h=/(html|body)/i.test(g[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition? +0:("fixed"==this.cssPosition?-this.scrollParent.scrollTop():h?0:g.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():h?0:g.scrollLeft())*d)}},_generatePosition:function(a){var c=this.options,d="absolute"==this.cssPosition&&!(this.scrollParent[0]!=document&&b.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent, +g=/(html|body)/i.test(d[0].tagName),h=a.pageX,e=a.pageY;if(this.originalPosition){var f;this.containment&&(this.relative_container?(f=this.relative_container.offset(),f=[this.containment[0]+f.left,this.containment[1]+f.top,this.containment[2]+f.left,this.containment[3]+f.top]):f=this.containment,a.pageX-this.offset.click.leftf[2]&&(h=f[2]+this.offset.click.left), +a.pageY-this.offset.click.top>f[3]&&(e=f[3]+this.offset.click.top));c.grid&&(e=c.grid[1]?this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY,e=f?!(e-this.offset.click.topf[3])?e:!(e-this.offset.click.topf[2])?h:!(h-this.offset.click.left< +f[0])?h-c.grid[0]:h+c.grid[0]:h)}return{top:e-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollTop():g?0:d.scrollTop()),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(b.browser.safari&&526>b.browser.version&&"fixed"==this.cssPosition?0:"fixed"==this.cssPosition?-this.scrollParent.scrollLeft():g?0:d.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"); +this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove();this.helper=null;this.cancelHelperRemoval=!1},_trigger:function(a,c,d){d=d||this._uiHash();b.ui.plugin.call(this,a,[c,d]);"drag"==a&&(this.positionAbs=this._convertPositionTo("absolute"));return b.Widget.prototype._trigger.call(this,a,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});b.extend(b.ui.draggable,{version:"1.8.14"}); +b.ui.plugin.add("draggable","connectToSortable",{start:function(a,c){var d=b(this).data("draggable"),g=d.options,h=b.extend({},c,{item:d.element});d.sortables=[];b(g.connectToSortable).each(function(){var c=b.data(this,"sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",a,h))})},stop:function(a,c){var d=b(this).data("draggable"),g=b.extend({},c,{item:d.element});b.each(d.sortables,function(){this.instance.isOver? +(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(a),this.instance.options.helper=this.instance.options._helper,"original"==d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",a,g))})},drag:function(a,c){var d=b(this).data("draggable"),g=this;b.each(d.sortables,function(){this.instance.positionAbs= +d.positionAbs;this.instance.helperProportions=d.helperProportions;this.instance.offset.click=d.offset.click;this.instance._intersectsWith(this.instance.containerCache)?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=b(g).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},a.target=this.instance.currentItem[0],this.instance._mouseCapture(a, +!0),this.instance._mouseStart(a,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",a),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(a)):this.instance.isOver&& +(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",a,this.instance._uiHash(this.instance)),this.instance._mouseStop(a,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",a),d.dropped=!1)})}});b.ui.plugin.add("draggable","cursor",{start:function(){var a=b("body"),c=b(this).data("draggable").options; +a.css("cursor")&&(c._cursor=a.css("cursor"));a.css("cursor",c.cursor)},stop:function(){var a=b(this).data("draggable").options;a._cursor&&b("body").css("cursor",a._cursor)}});b.ui.plugin.add("draggable","opacity",{start:function(a,c){var d=b(c.helper),g=b(this).data("draggable").options;d.css("opacity")&&(g._opacity=d.css("opacity"));d.css("opacity",g.opacity)},stop:function(a,c){var d=b(this).data("draggable").options;d._opacity&&b(c.helper).css("opacity",d._opacity)}});b.ui.plugin.add("draggable", +"scroll",{start:function(){var a=b(this).data("draggable");a.scrollParent[0]!=document&&"HTML"!=a.scrollParent[0].tagName&&(a.overflowOffset=a.scrollParent.offset())},drag:function(a){var c=b(this).data("draggable"),d=c.options,g=!1;if(c.scrollParent[0]!=document&&"HTML"!=c.scrollParent[0].tagName){if(!d.axis||"x"!=d.axis)c.overflowOffset.top+c.scrollParent[0].offsetHeight-a.pageY=k&&e<=l||f>=k&&f<=l||el)&&(g>=i&&g<=j||h>=i&&h<=j||gj);default:return!1}}; +b.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,c){var d=b.ui.ddmanager.droppables[a.options.scope]||[],g=c?c.type:null,h=(a.currentItem||a.element).find(":data(droppable)").andSelf(),e=0;a:for(;e').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize", +"none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize());this.handles=a.handles||(!b(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){"all"== +this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var h=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&i.css({zIndex:++a.zIndex});"se"==f&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(i)}}this._renderAxis=function(f){var f=f||this.element,c;for(c in this.handles){this.handles[c].constructor==String&&(this.handles[c]= +b(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var a=b(this.handles[c],this.element),d=0,d=/sw|ne|nw|se|n|s/.test(c)?a.outerHeight():a.outerWidth(),a=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");f.css(a,d);this._proportionallyResize()}b(this.handles[c])}};this._renderAxis(this.element);this._handles=b(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!c.resizing){if(this.className)var b=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);c.axis=b&&b[1]?b[1]:"se"}});a.autoHide&&(this._handles.hide(),b(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){b(this).removeClass("ui-resizable-autohide");c._handles.show()}},function(){if(!a.disabled&&!c.resizing){b(this).addClass("ui-resizable-autohide");c._handles.hide()}}));this._mouseInit()},destroy:function(){this._mouseDestroy(); +var c=function(c){b(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){c(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);c(this.originalElement);return this},_mouseCapture:function(c){var a= +!1,h;for(h in this.handles)b(this.handles[h])[0]==c.target&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(c){var g=this.options,h=this.element.position(),e=this.element;this.resizing=!0;this.documentScroll={top:b(document).scrollTop(),left:b(document).scrollLeft()};(e.is(".ui-draggable")||/absolute/.test(e.css("position")))&&e.css({position:"absolute",top:h.top,left:h.left});b.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy(); +var h=a(this.helper.css("left")),f=a(this.helper.css("top"));g.containment&&(h+=b(g.containment).scrollLeft()||0,f+=b(g.containment).scrollTop()||0);this.offset=this.helper.offset();this.position={left:h,top:f};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:h,top:f};this.sizeDiff={width:e.outerWidth()- +e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:c.pageX,top:c.pageY};this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1;g=b(".ui-resizable-"+this.axis).css("cursor");b("body").css("cursor","auto"==g?this.axis+"-resize":g);e.addClass("ui-resizable-resizing");this._propagate("start",c);return!0},_mouseDrag:function(b){var c=this.helper,a=this.originalMousePosition,e=this._change[this.axis];if(!e)return!1;a= +e.apply(this,[b,b.pageX-a.left||0,b.pageY-a.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)a=this._updateRatio(a,b);a=this._respectSize(a,b);this._propagate("resize",b);c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(a);this._trigger("resize",b,this.ui());return!1},_mouseStop:function(c){this.resizing= +!1;var a=this.options;if(this._helper){var h=this._proportionallyResizeElements,e=h.length&&/textarea/i.test(h[0].nodeName),h=e&&b.ui.hasScroll(h[0],"left")?0:this.sizeDiff.height,e=e?0:this.sizeDiff.width,e={width:this.helper.width()-e,height:this.helper.height()-h},h=parseInt(this.element.css("left"),10)+(this.position.left-this.originalPosition.left)||null,f=parseInt(this.element.css("top"),10)+(this.position.top-this.originalPosition.top)||null;a.animate||this.element.css(b.extend(e,{top:f,left:h})); +this.helper.height(this.size.height);this.helper.width(this.size.width);this._helper&&!a.animate&&this._proportionallyResize()}b("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",c);this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(b){var a=this.options,h,e,f,a={minWidth:c(a.minWidth)?a.minWidth:0,maxWidth:c(a.maxWidth)?a.maxWidth:Infinity,minHeight:c(a.minHeight)?a.minHeight:0,maxHeight:c(a.maxHeight)?a.maxHeight:Infinity}; +if(this._aspectRatio||b)if(b=a.minHeight*this.aspectRatio,e=a.minWidth/this.aspectRatio,h=a.maxHeight*this.aspectRatio,f=a.maxWidth/this.aspectRatio,b>a.minWidth&&(a.minWidth=b),e>a.minHeight&&(a.minHeight=e),hb.width,j=c(b.height)&&a.minHeight&&a.minHeight> +b.height;i&&(b.width=a.minWidth);j&&(b.height=a.minHeight);e&&(b.width=a.maxWidth);f&&(b.height=a.maxHeight);var k=this.originalPosition.left+this.originalSize.width,l=this.position.top+this.size.height,m=/sw|nw|w/.test(h),h=/nw|ne|n/.test(h);i&&m&&(b.left=k-a.minWidth);e&&m&&(b.left=k-a.maxWidth);j&&h&&(b.top=l-a.minHeight);f&&h&&(b.top=l-a.maxHeight);(a=!b.width&&!b.height)&&!b.left&&b.top?b.top=null:a&&(!b.top&&b.left)&&(b.left=null);return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var c= +this.helper||this.element,a=0;a');var a=b.browser.msie&&7>b.browser.version,h=a?1:0,a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-h+"px",top:this.elementOffset.top- +h+"px",zIndex:++c.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,c){return{width:this.originalSize.width+c}},w:function(b,c){return{left:this.originalPosition.left+c,width:this.originalSize.width-c}},n:function(b,c,a){return{top:this.originalPosition.top+a,height:this.originalSize.height-a}},s:function(b,c,a){return{height:this.originalSize.height+a}},se:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.e.apply(this, +[c,a,h]))},sw:function(c,a,h){return b.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[c,a,h]))},ne:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[c,a,h]))},nw:function(c,a,h){return b.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[c,a,h]))}},_propagate:function(c,a){b.ui.plugin.call(this,c,[a,this.ui()]);"resize"!=c&&this._trigger(c,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement, +element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});b.extend(b.ui.resizable,{version:"1.8.14"});b.ui.plugin.add("resizable","alsoResize",{start:function(){var c=b(this).data("resizable").options,a=function(c){b(c).each(function(){var c=b(this);c.data("resizable-alsoresize",{width:parseInt(c.width(),10),height:parseInt(c.height(),10),left:parseInt(c.css("left"),10),top:parseInt(c.css("top"),10),position:c.css("position")})})}; +"object"==typeof c.alsoResize&&!c.alsoResize.parentNode?c.alsoResize.length?(c.alsoResize=c.alsoResize[0],a(c.alsoResize)):b.each(c.alsoResize,function(b){a(b)}):a(c.alsoResize)},resize:function(c,a){var h=b(this).data("resizable"),e=h.options,f=h.originalSize,i=h.originalPosition,j={height:h.size.height-f.height||0,width:h.size.width-f.width||0,top:h.position.top-i.top||0,left:h.position.left-i.left||0},k=function(c,f){b(c).each(function(){var c=b(this),d=b(this).data("resizable-alsoresize"),i={}, +e=f&&f.length?f:c.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];b.each(e,function(b,c){var a=(d[c]||0)+(j[c]||0);a&&0<=a&&(i[c]=a||null)});b.browser.opera&&/relative/.test(c.css("position"))&&(h._revertToRelativePosition=!0,c.css({position:"absolute",top:"auto",left:"auto"}));c.css(i)})};"object"==typeof e.alsoResize&&!e.alsoResize.nodeType?b.each(e.alsoResize,function(b,c){k(b,c)}):k(e.alsoResize)},stop:function(){var c=b(this).data("resizable"),a=c.options, +h=function(c){b(c).each(function(){var c=b(this);c.css({position:c.data("resizable-alsoresize").position})})};c._revertToRelativePosition&&(c._revertToRelativePosition=!1,"object"==typeof a.alsoResize&&!a.alsoResize.nodeType?b.each(a.alsoResize,function(b){h(b)}):h(a.alsoResize));b(this).removeData("resizable-alsoresize")}});b.ui.plugin.add("resizable","animate",{stop:function(c){var a=b(this).data("resizable"),h=a.options,e=a._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName), +i=f&&b.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height,f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-i},i=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null,j=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(b.extend(f,j&&i?{top:j,left:i}:{}),{duration:h.animateDuration,easing:h.animateEasing,step:function(){var f={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10), +top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&b(e[0]).css({width:f.width,height:f.height});a._updateCache(f);a._propagate("resize",c)}})}});b.ui.plugin.add("resizable","containment",{start:function(){var c=b(this).data("resizable"),g=c.element,h=c.options.containment;if(g=h instanceof b?h.get(0):/parent/.test(h)?g.parent().get(0):h)if(c.containerElement=b(g),/document/.test(h)||h==document)c.containerOffset={left:0,top:0},c.containerPosition={left:0,top:0}, +c.parentData={element:b(document),left:0,top:0,width:b(document).width(),height:b(document).height()||document.body.parentNode.scrollHeight};else{var e=b(g),f=[];b(["Top","Right","Left","Bottom"]).each(function(b,c){f[b]=a(e.css("padding"+c))});c.containerOffset=e.offset();c.containerPosition=e.position();c.containerSize={height:e.innerHeight()-f[3],width:e.innerWidth()-f[1]};var h=c.containerOffset,i=c.containerSize.height,j=c.containerSize.width,j=b.ui.hasScroll(g,"left")?g.scrollWidth:j,i=b.ui.hasScroll(g)? +g.scrollHeight:i;c.parentData={element:g,left:h.left,top:h.top,width:j,height:i}}},resize:function(c){var a=b(this).data("resizable"),h=a.options,e=a.containerOffset,f=a.position,c=a._aspectRatio||c.shiftKey,i={top:0,left:0},j=a.containerElement;j[0]!=document&&/static/.test(j.css("position"))&&(i=e);if(f.left<(a._helper?e.left:0))a.size.width+=a._helper?a.position.left-e.left:a.position.left-i.left,c&&(a.size.height=a.size.width/h.aspectRatio),a.position.left=h.helper?e.left:0;if(f.top<(a._helper? +e.top:0))a.size.height+=a._helper?a.position.top-e.top:a.position.top,c&&(a.size.width=a.size.height*h.aspectRatio),a.position.top=a._helper?e.top:0;a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;h=Math.abs(a.offset.left-i.left+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-i.top:a.offset.top-e.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);i=/relative|absolute/.test(a.containerElement.css("position"));f&&i&&(h-=a.parentData.left); +h+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-h,c&&(a.size.height=a.size.width/a.aspectRatio));e+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-e,c&&(a.size.width=a.size.height*a.aspectRatio))},stop:function(){var a=b(this).data("resizable"),c=a.options,h=a.containerOffset,e=a.containerPosition,f=a.containerElement,i=b(a.helper),j=i.offset(),k=i.outerWidth()-a.sizeDiff.width,i=i.outerHeight()-a.sizeDiff.height;a._helper&&(!c.animate&&/relative/.test(f.css("position")))&& +b(this).css({left:j.left-e.left-h.left,width:k,height:i});a._helper&&(!c.animate&&/static/.test(f.css("position")))&&b(this).css({left:j.left-e.left-h.left,width:k,height:i})}});b.ui.plugin.add("resizable","ghost",{start:function(){var a=b(this).data("resizable"),c=a.options,h=a.size;a.ghost=a.originalElement.clone();a.ghost.css({opacity:0.25,display:"block",position:"relative",height:h.height,width:h.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost: +"");a.ghost.appendTo(a.helper)},resize:function(){var a=b(this).data("resizable");a.ghost&&a.ghost.css({position:"relative",height:a.size.height,width:a.size.width})},stop:function(){var a=b(this).data("resizable");a.ghost&&a.helper&&a.helper.get(0).removeChild(a.ghost.get(0))}});b.ui.plugin.add("resizable","grid",{resize:function(){var a=b(this).data("resizable"),c=a.options,h=a.size,e=a.originalSize,f=a.originalPosition,i=a.axis;c.grid="number"==typeof c.grid?[c.grid,c.grid]:c.grid;var j=Math.round((h.width- +e.width)/(c.grid[0]||1))*(c.grid[0]||1),c=Math.round((h.height-e.height)/(c.grid[1]||1))*(c.grid[1]||1);/^(se|s|e)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):/^(ne)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c):(/^(sw)$/.test(i)?(a.size.width=e.width+j,a.size.height=e.height+c):(a.size.width=e.width+j,a.size.height=e.height+c,a.position.top=f.top-c),a.position.left=f.left-j)}});var a=function(b){return parseInt(b,10)||0},c=function(b){return!isNaN(parseInt(b, +10))}})(jQuery); +(function(b){b.widget("ui.selectable",b.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var a=this;this.element.addClass("ui-selectable");this.dragged=!1;var c;this.refresh=function(){c=b(a.options.filter,a.element[0]);c.each(function(){var a=b(this),c=a.offset();b.data(this,"selectable-item",{element:this,$element:a,left:c.left,top:c.top,right:c.left+a.outerWidth(),bottom:c.top+a.outerHeight(),startselected:!1,selected:a.hasClass("ui-selected"),selecting:a.hasClass("ui-selecting"), +unselecting:a.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=b("
          ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(a){var c=this;this.opos=[a.pageX,a.pageY];if(!this.options.disabled){var d= +this.options;this.selectees=b(d.filter,this.element[0]);this._trigger("start",a);b(d.appendTo).append(this.helper);this.helper.css({left:a.clientX,top:a.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var d=b.data(this,"selectable-item");d.startselected=!0;a.metaKey||(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",a,{unselecting:d.element}))});b(a.target).parents().andSelf().each(function(){var d= +b.data(this,"selectable-item");if(d){var h=!a.metaKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(h?"ui-unselecting":"ui-selected").addClass(h?"ui-selecting":"ui-unselecting");d.unselecting=!h;d.selecting=h;(d.selected=h)?c._trigger("selecting",a,{selecting:d.element}):c._trigger("unselecting",a,{unselecting:d.element});return!1}})}},_mouseDrag:function(a){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,g=this.opos[0],h=this.opos[1],e=a.pageX,f=a.pageY;if(g> +e)var i=e,e=g,g=i;h>f&&(i=f,f=h,h=i);this.helper.css({left:g,top:h,width:e-g,height:f-h});this.selectees.each(function(){var i=b.data(this,"selectable-item");if(i&&i.element!=c.element[0]){var k=false;d.tolerance=="touch"?k=!(i.left>e||i.rightf||i.bottomg&&i.righth&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh(); +this.floating=this.items.length?"x"===b.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;0<=b;b--)this.items[b].item.removeData("sortable-item");return this},_setOption:function(a,c){"disabled"===a?(this.options[a]= +c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):b.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,c){if(this.reverting||this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(a);var d=null,g=this;b(a.target).parents().each(function(){if(b.data(this,"sortable-item")==g)return d=b(this),!1});b.data(a.target,"sortable-item")==g&&(d=b(a.target));if(!d)return!1;if(this.options.handle&&!c){var h=!1;b(this.options.handle,d).find("*").andSelf().each(function(){this== +a.target&&(h=!0)});if(!h)return!1}this.currentItem=d;this._removeCurrentsFromItems();return!0},_mouseStart:function(a,c,d){c=this.options;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition= +this.helper.css("position");b.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder(); +c.containment&&this._setContainment();c.cursor&&(b("body").css("cursor")&&(this._storedCursor=b("body").css("cursor")),b("body").css("cursor",c.cursor));c.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",c.opacity));c.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",c.zIndex));this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()); +this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(d=this.containers.length-1;0<=d;d--)this.containers[d]._trigger("activate",a,this._uiHash(this));b.ui.ddmanager&&(b.ui.ddmanager.current=this);b.ui.ddmanager&&!c.dropBehaviour&&b.ui.ddmanager.prepareOffsets(this,a);this.dragging=!0;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return!0},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageYb[this.floating?"width":"height"]?g+k>i&&g+ke&&c+lthis.containment[2]&&(h=this.containment[2]+this.offset.click.left),a.pageY-this.offset.click.top>this.containment[3]&&(e=this.containment[3]+this.offset.click.top)),c.grid))e=this.originalPageY+Math.round((e-this.originalPageY)/c.grid[1])*c.grid[1],e=this.containment?!(e-this.offset.click.topthis.containment[3])?e:!(e-this.offset.click.top< +this.containment[1])?e-c.grid[1]:e+c.grid[1]:e,h=this.originalPageX+Math.round((h-this.originalPageX)/c.grid[0])*c.grid[0],h=this.containment?!(h-this.offset.click.leftthis.containment[2])?h:!(h-this.offset.click.left li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,c=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");a.headers= +a.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){c.disabled||b(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){c.disabled||b(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){c.disabled||b(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){c.disabled||b(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(c.navigation){var d=a.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var g=d.closest(".ui-accordion-header");a.active=g.length?g:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(b){return a._keydown(b)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);b.browser.safari||a.headers.find("a").attr("tabIndex",-1);c.event&&a.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(b){a._clickHandler.call(a,b,this);b.preventDefault()})},_createIcons:function(){var a= +this.options;a.icons&&(b("").addClass("ui-icon "+a.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");(a.autoHeight||a.fillHeight)&&c.css("height","");return b.Widget.prototype.destroy.call(this)},_setOption:function(a,c){b.Widget.prototype._setOption.apply(this,arguments);"active"==a&&this.activate(c);"icons"==a&&(this._destroyIcons(), +c&&this._createIcons());if("disabled"==a)this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!this.options.disabled&&!a.altKey&&!a.ctrlKey){var c=b.ui.keyCode,d=this.headers.length,g=this.headers.index(a.target),h=!1;switch(a.keyCode){case c.RIGHT:case c.DOWN:h=this.headers[(g+1)%d];break;case c.LEFT:case c.UP:h=this.headers[(g-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:a.target},a.target),a.preventDefault()}return h? +(b(a.target).attr("tabIndex",-1),b(h).attr("tabIndex",0),h.focus(),!1):!0}},resize:function(){var a=this.options,c;if(a.fillSpace){if(b.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height();b.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){c-=b(this).outerHeight(!0)});this.headers.next().each(function(){b(this).height(Math.max(0,c-b(this).innerHeight()+b(this).height()))}).css("overflow", +"auto")}else a.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,b(this).height("").height())}).height(c));return this},activate:function(b){this.options.active=b;b=this._findActive(b)[0];this._clickHandler({target:b},b);return this},_findActive:function(a){return a?"number"===typeof a?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):!1===a?b([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,c){var d=this.options;if(!d.disabled)if(a.target){var g=b(a.currentTarget|| +c),h=g[0]===this.active[0];d.active=d.collapsible&&h?!1:this.headers.index(g);if(!(this.running||!d.collapsible&&h)){var e=this.active,f=g.next(),i=this.active.next(),j={options:d,newHeader:h&&d.collapsible?b([]):g,oldHeader:this.active,newContent:h&&d.collapsible?b([]):f,oldContent:i},k=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=h?b([]):g;this._toggle(f,i,j,h,k);e.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +h||(g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),g.next().addClass("ui-accordion-content-active"))}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var i=this.active.next(), +j={options:d,newHeader:b([]),oldHeader:d.active,newContent:b([]),oldContent:i},f=this.active=b([]);this._toggle(f,i,j)}},_toggle:function(a,c,d,g,h){var e=this,f=e.options;e.toShow=a;e.toHide=c;e.data=d;var i=function(){if(e)return e._completed.apply(e,arguments)};e._trigger("changestart",null,e.data);e.running=0===c.size()?a.size():c.size();if(f.animated){d={};d=f.collapsible&&g?{toShow:b([]),toHide:c,complete:i,down:h,autoHeight:f.autoHeight||f.fillSpace}:{toShow:a,toHide:c,complete:i,down:h,autoHeight:f.autoHeight|| +f.fillSpace};f.proxied||(f.proxied=f.animated);f.proxiedDuration||(f.proxiedDuration=f.duration);f.animated=b.isFunction(f.proxied)?f.proxied(d):f.proxied;f.duration=b.isFunction(f.proxiedDuration)?f.proxiedDuration(d):f.proxiedDuration;var g=b.ui.accordion.animations,j=f.duration,k=f.animated;k&&(!g[k]&&!b.easing[k])&&(k="slide");g[k]||(g[k]=function(b){this.slide(b,{easing:k,duration:j||700})});g[k](d)}else f.collapsible&&g?a.toggle():(c.hide(),a.show()),i(!0);c.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(b){this.running=b?0:--this.running;this.running||(this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data))}});b.extend(b.ui.accordion,{version:"1.8.14", +animations:{slide:function(a,c){a=b.extend({easing:"swing",duration:300},a,c);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),g=0,h={},e={},f,i=a.toShow;f=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));b.each(["height","paddingTop","paddingBottom"],function(c,f){e[f]="hide";var i=(""+b.css(a.toShow[0],f)).match(/^([\d+-.]+)(.*)$/); +h[f]={value:i[1],unit:i[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(e,{step:function(b,c){"height"==c.prop&&(g=0===c.end-c.start?0:(c.now-c.start)/(c.end-c.start));a.toShow[0].style[c.prop]=g*h[c.prop].value+h[c.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:f,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1E3:200})}}})})(jQuery); +(function(b){var a=0;b.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var c=this,a=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(a){if(!c.options.disabled&&!c.element.attr("readonly")){g=!1;var d= +b.ui.keyCode;switch(a.keyCode){case d.PAGE_UP:c._move("previousPage",a);break;case d.PAGE_DOWN:c._move("nextPage",a);break;case d.UP:c._move("previous",a);a.preventDefault();break;case d.DOWN:c._move("next",a);a.preventDefault();break;case d.ENTER:case d.NUMPAD_ENTER:c.menu.active&&(g=!0,a.preventDefault());case d.TAB:if(!c.menu.active)break;c.menu.select(a);break;case d.ESCAPE:c.element.val(c.term);c.close(a);break;default:clearTimeout(c.searching),c.searching=setTimeout(function(){c.term!=c.element.val()&& +(c.selectedItem=null,c.search(null,a))},c.options.delay)}}}).bind("keypress.autocomplete",function(b){g&&(g=!1,b.preventDefault())}).bind("focus.autocomplete",function(){c.options.disabled||(c.selectedItem=null,c.previous=c.element.val())}).bind("blur.autocomplete",function(b){c.options.disabled||(clearTimeout(c.searching),c.closing=setTimeout(function(){c.close(b);c._change(b)},150))});this._initSource();this.response=function(){return c._response.apply(c,arguments)};this.menu=b("
            ").addClass("ui-autocomplete").appendTo(b(this.options.appendTo|| +"body",a)[0]).mousedown(function(a){var d=c.menu.element[0];b(a.target).closest(".ui-menu-item").length||setTimeout(function(){b(document).one("mousedown",function(a){a.target!==c.element[0]&&(a.target!==d&&!b.ui.contains(d,a.target))&&c.close()})},1);setTimeout(function(){clearTimeout(c.closing)},13)}).menu({focus:function(b,a){var f=a.item.data("item.autocomplete");!1!==c._trigger("focus",b,{item:f})&&/^key/.test(b.originalEvent.type)&&c.element.val(f.value)},selected:function(b,e){var f=e.item.data("item.autocomplete"), +i=c.previous;c.element[0]!==a.activeElement&&(c.element.focus(),c.previous=i,setTimeout(function(){c.previous=i;c.selectedItem=f},1));!1!==c._trigger("select",b,{item:f})&&c.element.val(f.value);c.term=c.element.val();c.close(b);c.selectedItem=f},blur:function(){c.menu.element.is(":visible")&&c.element.val()!==c.term&&c.element.val(c.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");b.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();b.Widget.prototype.destroy.call(this)},_setOption:function(a,d){b.Widget.prototype._setOption.apply(this,arguments);"source"===a&&this._initSource();"appendTo"===a&&this.menu.element.appendTo(b(d||"body",this.element[0].ownerDocument)[0]);"disabled"===a&&(d&&this.xhr)&&this.xhr.abort()},_initSource:function(){var c=this,d,g;b.isArray(this.options.source)?(d=this.options.source,this.source=function(a,c){c(b.ui.autocomplete.filter(d,a.term))}):"string"===typeof this.options.source? +(g=this.options.source,this.source=function(d,e){c.xhr&&c.xhr.abort();c.xhr=b.ajax({url:g,data:d,dataType:"json",autocompleteRequest:++a,success:function(b){this.autocompleteRequest===a&&e(b)},error:function(){this.autocompleteRequest===a&&e([])}})}):this.source=this.options.source},search:function(b,a){b=null!=b?b:this.element.val();this.term=this.element.val();if(b.length").data("item.autocomplete",d).append(b("").text(d.label)).appendTo(a)},_move:function(b,a){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(b)||this.menu.last()&& +/^next/.test(b))this.element.val(this.term),this.menu.deactivate();else this.menu[b](a);else this.search(null,a)},widget:function(){return this.menu.element}});b.extend(b.ui.autocomplete,{escapeRegex:function(b){return b.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,d){var g=RegExp(b.ui.autocomplete.escapeRegex(d),"i");return b.grep(a,function(b){return g.test(b.label||b.value||b)})}})})(jQuery); +(function(b){b.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){b(c.target).closest(".ui-menu-item a").length&&(c.preventDefault(),a.select(c))});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,b(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(b,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,g=this.element.scrollTop(),h=this.element.height();0>d?this.element.scrollTop(g+d):d>=h&&this.element.scrollTop(g+d-h+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",b,{item:c})},deactivate:function(){this.active&& +(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(b){this.move("next",".ui-menu-item:first",b)},previous:function(b){this.move("prev",".ui-menu-item:last",b)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(b,c,d){this.active?(b=this.active[b+"All"](".ui-menu-item").eq(0),b.length?this.activate(d, +b):this.activate(d,this.element.children(c))):this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active||this.last())this.activate(a,this.element.children(".ui-menu-item:first"));else{var c=this.active.offset().top,d=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var a=b(this).offset().top-c-d+b(this).height();return 10>a&&-10a&&-10").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),d=this.options.icons,h=d.primary&&d.secondary,e=[];d.primary||d.secondary?(this.options.text&&e.push("ui-button-text-icon"+(h?"s":d.primary?"-primary":"-secondary")),d.primary&&a.prepend(""),d.secondary&&a.append(""),this.options.text||(e.push(h?"ui-button-icons-only": +"ui-button-icon-only"),this.hasTitle||a.attr("title",c))):e.push("ui-button-text-only");a.addClass(e.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){"disabled"===a&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a="ltr"===this.element.css("direction"); +this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); +(function(b,a){var c={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},d={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},g=b.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};b.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(a){var c= +b(this).css(a).offset().top;0>c&&b(this).css("top",a.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");"string"!==typeof this.originalTitle&&(this.originalTitle="");this.options.title=this.options.title||this.originalTitle;var a=this,c=a.options,f=c.title||" ",i=b.ui.dialog.getTitleId(a.element),d=(a.uiDialog=b("
            ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +c.dialogClass).css({zIndex:c.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(f){if(c.closeOnEscape&&f.keyCode&&f.keyCode===b.ui.keyCode.ESCAPE){a.close(f);f.preventDefault()}}).attr({role:"dialog","aria-labelledby":i}).mousedown(function(b){a.moveToTop(false,b)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(d);var g=(a.uiDialogTitlebar=b("
            ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(d), +l=b('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){l.addClass("ui-state-hover")},function(){l.removeClass("ui-state-hover")}).focus(function(){l.addClass("ui-state-focus")}).blur(function(){l.removeClass("ui-state-focus")}).click(function(b){a.close(b);return false}).appendTo(g);(a.uiDialogTitlebarCloseText=b("")).addClass("ui-icon ui-icon-closethick").text(c.closeText).appendTo(l);b("").addClass("ui-dialog-title").attr("id", +i).html(f).prependTo(g);b.isFunction(c.beforeclose)&&!b.isFunction(c.beforeClose)&&(c.beforeClose=c.beforeclose);g.find("*").add(g).disableSelection();c.draggable&&b.fn.draggable&&a._makeDraggable();c.resizable&&b.fn.resizable&&a._makeResizable();a._createButtons(c.buttons);a._isOpen=!1;b.fn.bgiframe&&d.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){this.overlay&&this.overlay.destroy();this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +this.uiDialog.remove();this.originalTitle&&this.element.attr("title",this.originalTitle);return this},widget:function(){return this.uiDialog},close:function(a){var c=this,f,d;if(!1!==c._trigger("beforeClose",a))return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",a)}):(c.uiDialog.hide(),c._trigger("close",a)),b.ui.dialog.overlay.resize(),c.options.modal&&(f=0,b(".ui-dialog").each(function(){if(this!== +c.uiDialog[0]){d=b(this).css("z-index");isNaN(d)||(f=Math.max(f,d))}}),b.ui.dialog.maxZ=f),c},isOpen:function(){return this._isOpen},moveToTop:function(a,c){var f=this.options;if(f.modal&&!a||!f.stack&&!f.modal)return this._trigger("focus",c);f.zIndex>b.ui.dialog.maxZ&&(b.ui.dialog.maxZ=f.zIndex);this.overlay&&(b.ui.dialog.maxZ+=1,this.overlay.$el.css("z-index",b.ui.dialog.overlay.maxZ=b.ui.dialog.maxZ));f={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};b.ui.dialog.maxZ+= +1;this.uiDialog.css("z-index",b.ui.dialog.maxZ);this.element.attr(f);this._trigger("focus",c);return this},open:function(){if(!this._isOpen){var a=this.options,c=this.uiDialog;this.overlay=a.modal?new b.ui.dialog.overlay(this):null;this._size();this._position(a.position);c.show(a.show);this.moveToTop(!0);a.modal&&c.bind("keypress.ui-dialog",function(a){if(a.keyCode===b.ui.keyCode.TAB){var c=b(":tabbable",this),d=c.filter(":first"),c=c.filter(":last");if(a.target===c[0]&&!a.shiftKey)return d.focus(1), +!1;if(a.target===d[0]&&a.shiftKey)return c.focus(1),!1}});b(this.element.find(":tabbable").get().concat(c.find(".ui-dialog-buttonpane :tabbable").get().concat(c.get()))).eq(0).focus();this._isOpen=!0;this._trigger("open");return this}},_createButtons:function(a){var c=this,f=!1,d=b("
            ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),j=b("
            ").addClass("ui-dialog-buttonset").appendTo(d);c.uiDialog.find(".ui-dialog-buttonpane").remove();"object"===typeof a&& +null!==a&&b.each(a,function(){return!(f=!0)});f&&(b.each(a,function(a,f){var f=b.isFunction(f)?{click:f,text:a}:f,d=b('').click(function(){f.click.apply(c.element[0],arguments)}).appendTo(j);b.each(f,function(b,a){if("click"!==b)if(b in g)d[b](a);else d.attr(b,a)});b.fn.button&&d.button()}),d.appendTo(c.uiDialog))},_makeDraggable:function(){function a(b){return{position:b.position,offset:b.offset}}var c=this,f=c.options,d=b(document),g;c.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(d,i){g="auto"===f.height?"auto":b(this).height();b(this).height(b(this).height()).addClass("ui-dialog-dragging");c._trigger("dragStart",d,a(i))},drag:function(b,f){c._trigger("drag",b,a(f))},stop:function(k,l){f.position=[l.position.left-d.scrollLeft(),l.position.top-d.scrollTop()];b(this).removeClass("ui-dialog-dragging").height(g);c._trigger("dragStop",k,a(l));b.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function d(b){return{originalPosition:b.originalPosition, +originalSize:b.originalSize,position:b.position,size:b.size}}var c=c===a?this.options.resizable:c,f=this,i=f.options,g=f.uiDialog.css("position"),c="string"===typeof c?c:"n,e,s,w,se,sw,ne,nw";f.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:f.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:f._minHeight(),handles:c,start:function(a,c){b(this).addClass("ui-dialog-resizing");f._trigger("resizeStart",a,d(c))},resize:function(b,a){f._trigger("resize", +b,d(a))},stop:function(a,c){b(this).removeClass("ui-dialog-resizing");i.height=b(this).height();i.width=b(this).width();f._trigger("resizeStop",a,d(c));b.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var b=this.options;return"auto"===b.height?b.minHeight:Math.min(b.minHeight,b.height)},_position:function(a){var c=[],f=[0,0],d;if(a){if("string"===typeof a||"object"===typeof a&&"0"in a)c=a.split?a.split(" "): +[a[0],a[1]],1===c.length&&(c[1]=c[0]),b.each(["left","top"],function(b,a){+c[b]===c[b]&&(f[b]=c[b],c[b]=a)}),a={my:c.join(" "),at:c.join(" "),offset:f.join(" ")};a=b.extend({},b.ui.dialog.prototype.options.position,a)}else a=b.ui.dialog.prototype.options.position;(d=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(b.extend({of:window},a));d||this.uiDialog.hide()},_setOptions:function(a){var g=this,f={},i=!1;b.each(a,function(b,a){g._setOption(b,a);b in +c&&(i=!0);b in d&&(f[b]=a)});i&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(a,c){var f=this.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":this._createButtons(c);break;case "closeText":this.uiDialogTitlebarCloseText.text(""+c);break;case "dialogClass":f.removeClass(this.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+c);break;case "disabled":c?f.addClass("ui-dialog-disabled"): +f.removeClass("ui-dialog-disabled");break;case "draggable":var d=f.is(":data(draggable)");d&&!c&&f.draggable("destroy");!d&&c&&this._makeDraggable();break;case "position":this._position(c);break;case "resizable":(d=f.is(":data(resizable)"))&&!c&&f.resizable("destroy");d&&"string"===typeof c&&f.resizable("option","handles",c);!d&&!1!==c&&this._makeResizable(c);break;case "title":b(".ui-dialog-title",this.uiDialogTitlebar).html(""+(c||" "))}b.Widget.prototype._setOption.apply(this,arguments)}, +_size:function(){var a=this.options,c,f,d=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});a.minWidth>a.width&&(a.width=a.minWidth);c=this.uiDialog.css({height:"auto",width:a.width}).height();f=Math.max(0,a.minHeight-c);"auto"===a.height?b.support.minHeight?this.element.css({minHeight:f,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),d||this.uiDialog.hide(),this.element.height(Math.max(a,f))):this.element.height(Math.max(a.height- +c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});b.extend(b.ui.dialog,{version:"1.8.14",uuid:0,maxZ:0,getTitleId:function(b){b=b.attr("id");b||(b=this.uuid+=1);return"ui-dialog-title-"+b},overlay:function(a){this.$el=b.ui.dialog.overlay.create(a)}});b.extend(b.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:b.map("focus mousedown mouseup keydown keypress click".split(" "),function(b){return b+".dialog-overlay"}).join(" "), +create:function(a){0===this.instances.length&&(setTimeout(function(){b.ui.dialog.overlay.instances.length&&b(document).bind(b.ui.dialog.overlay.events,function(a){if(b(a.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});b.fn.bgiframe&&c.bgiframe();this.instances.push(c);return c},destroy:function(a){var c=b.inArray(a,this.instances);-1!=c&&this.oldInstances.push(this.instances.splice(c,1)[0]);0===this.instances.length&&b([document,window]).unbind(".dialog-overlay");a.remove();var f=0;b.each(this.instances,function(){f=Math.max(f,this.css("z-index"))});this.maxZ=f},height:function(){var a,c;return b.browser.msie&&7>b.browser.version?(a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight), +c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===c.range||"max"===c.range?" ui-slider-range-"+c.range:""))}for(var e=d.length;e"); +this.handles=d.add(b(h.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(b){b.preventDefault()}).hover(function(){c.disabled||b(this).addClass("ui-state-hover")},function(){b(this).removeClass("ui-state-hover")}).focus(function(){c.disabled?b(this).blur():(b(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),b(this).addClass("ui-state-focus"))}).blur(function(){b(this).removeClass("ui-state-focus")});this.handles.each(function(a){b(this).data("index.ui-slider-handle", +a)});this.handles.keydown(function(c){var d=!0,g=b(this).data("index.ui-slider-handle"),e,h,m;if(!a.options.disabled){switch(c.keyCode){case b.ui.keyCode.HOME:case b.ui.keyCode.END:case b.ui.keyCode.PAGE_UP:case b.ui.keyCode.PAGE_DOWN:case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(d=!1,!a._keySliding&&(a._keySliding=!0,b(this).addClass("ui-state-active"),e=a._start(c,g),!1===e))return}m=a.options.step;e=a.options.values&&a.options.values.length?h=a.values(g): +h=a.value();switch(c.keyCode){case b.ui.keyCode.HOME:h=a._valueMin();break;case b.ui.keyCode.END:h=a._valueMax();break;case b.ui.keyCode.PAGE_UP:h=a._trimAlignValue(e+(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(e-(a._valueMax()-a._valueMin())/5);break;case b.ui.keyCode.UP:case b.ui.keyCode.RIGHT:if(e===a._valueMax())return;h=a._trimAlignValue(e+m);break;case b.ui.keyCode.DOWN:case b.ui.keyCode.LEFT:if(e===a._valueMin())return;h=a._trimAlignValue(e-m)}a._slide(c, +g,h);return d}}).keyup(function(c){var d=b(this).data("index.ui-slider-handle");a._keySliding&&(a._keySliding=!1,a._stop(c,d),a._change(c,d),b(this).removeClass("ui-state-active"))});this._refreshValue();this._animateOff=!1},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy();return this},_mouseCapture:function(a){var c= +this.options,d,g,h,e,f;if(c.disabled)return!1;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();d=this._normValueFromMouse({x:a.pageX,y:a.pageY});g=this._valueMax()-this._valueMin()+1;e=this;this.handles.each(function(a){var c=Math.abs(d-e.values(a));g>c&&(g=c,h=b(this),f=a)});!0===c.range&&this.values(1)===c.min&&(f+=1,h=b(this.handles[f]));if(!1===this._start(a,f))return!1;this._mouseSliding=!0;e._handleIndex=f;h.addClass("ui-state-active").focus(); +c=h.offset();this._clickOffset=!b(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-c.left-h.width()/2,top:a.pageY-c.top-h.height()/2-(parseInt(h.css("borderTopWidth"),10)||0)-(parseInt(h.css("borderBottomWidth"),10)||0)+(parseInt(h.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,f,d);return this._animateOff=!0},_mouseStart:function(){return!0},_mouseDrag:function(b){var c=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b, +this._handleIndex,c);return!1},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=!1;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(b){var c;"horizontal"===this.orientation?(c=this.elementSize.width,b=b.x-this.elementOffset.left-(this._clickOffset? +this._clickOffset.left:0)):(c=this.elementSize.height,b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0));c=b/c;1c&&(c=0);"vertical"===this.orientation&&(c=1-c);b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+c*b)},_start:function(b,c){var d={handle:this.handles[c],value:this.value()};this.options.values&&this.options.values.length&&(d.value=this.values(c),d.values=this.values());return this._trigger("start",b,d)},_slide:function(b, +c,d){var g;if(this.options.values&&this.options.values.length){g=this.values(c?0:1);if(2===this.options.values.length&&!0===this.options.range&&(0===c&&d>g||1===c&&d=this._valueMax())return this._valueMax();var c=0=c&&(alignValue+=0",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
          • #{label}
          • "},_create:function(){this._tabify(!0)},_setOption:function(b,a){"selected"==b?this.options.collapsible&&a==this.options.selected||this.select(a): +(this.options[b]=a,this._tabify())},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+ ++c},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var a=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++d);return b.cookie.apply(null,[a].concat(b.makeArray(arguments)))},_ui:function(b,a){return{tab:b,panel:a,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var a= +b(this);a.html(a.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function d(a,c){a.css("display","");!b.support.opacity&&c.opacity&&a[0].style.removeAttribute("filter")}var e=this,f=this.options,i=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=b(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return b("a",this)[0]});this.panels=b([]);this.anchors.each(function(a,c){var d=b(c).attr("href"),g=d.split("#")[0],h;if(g&&(g===location.toString().split("#")[0]|| +(h=b("base")[0])&&g===h.href))d=c.hash,c.href=d;i.test(d)?e.panels=e.panels.add(e.element.find(e._sanitizeSelector(d))):d&&"#"!==d?(b.data(c,"href.tabs",d),b.data(c,"load.tabs",d.replace(/#.*$/,"")),d=e._tabId(c),c.href="#"+d,g=e.element.find("#"+d),g.length||(g=b(f.panelTemplate).attr("id",d).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(e.panels[a-1]||e.list),g.data("destroy.tabs",!0)),e.panels=e.panels.add(g)):f.disabled.push(a)});c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"), +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),f.selected===a?(location.hash&&this.anchors.each(function(b,a){if(a.hash==location.hash)return f.selected=b,!1}),"number"!==typeof f.selected&&f.cookie&&(f.selected=parseInt(e._cookie(),10)),"number"!==typeof f.selected&&this.lis.filter(".ui-tabs-selected").length&&(f.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"))),f.selected=f.selected||(this.lis.length?0:-1)):null===f.selected&&(f.selected=-1),f.selected=0<=f.selected&&this.anchors[f.selected]||0>f.selected?f.selected:0,f.disabled=b.unique(f.disabled.concat(b.map(this.lis.filter(".ui-state-disabled"),function(b){return e.lis.index(b)}))).sort(),-1!=b.inArray(f.selected,f.disabled)&&f.disabled.splice(b.inArray(f.selected,f.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"), +0<=f.selected&&this.anchors.length&&(e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(f.selected).addClass("ui-tabs-selected ui-state-active"),e.element.queue("tabs",function(){e._trigger("show",null,e._ui(e.anchors[f.selected],e.element.find(e._sanitizeSelector(e.anchors[f.selected].hash))[0]))}),this.load(f.selected)),b(window).bind("unload",function(){e.lis.add(e.anchors).unbind(".tabs");e.lis=e.anchors=e.panels=null})):f.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[f.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");f.cookie&&this._cookie(f.selected,f.cookie);for(var c=0,j;j=this.lis[c];c++)b(j)[-1!=b.inArray(c,f.disabled)&&!b(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");!1===f.cache&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if("mouseover"!==f.event){var k=function(b,a){a.is(":not(.ui-state-disabled)")&&a.addClass("ui-state-"+b)};this.lis.bind("mouseover.tabs", +function(){k("hover",b(this))});this.lis.bind("mouseout.tabs",function(){b(this).removeClass("ui-state-hover")});this.anchors.bind("focus.tabs",function(){k("focus",b(this).closest("li"))});this.anchors.bind("blur.tabs",function(){b(this).closest("li").removeClass("ui-state-focus")})}var l,m;f.fx&&(b.isArray(f.fx)?(l=f.fx[0],m=f.fx[1]):l=m=f.fx);var p=m?function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.hide().removeClass("ui-tabs-hide").animate(m,m.duration||"normal", +function(){d(c,m);e._trigger("show",null,e._ui(a,c[0]))})}:function(a,c){b(a).closest("li").addClass("ui-tabs-selected ui-state-active");c.removeClass("ui-tabs-hide");e._trigger("show",null,e._ui(a,c[0]))},n=l?function(b,a){a.animate(l,l.duration||"normal",function(){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");d(a,l);e.element.dequeue("tabs")})}:function(b,a){e.lis.removeClass("ui-tabs-selected ui-state-active");a.addClass("ui-tabs-hide");e.element.dequeue("tabs")}; +this.anchors.bind(f.event+".tabs",function(){var a=this,c=b(a).closest("li"),d=e.panels.filter(":not(.ui-tabs-hide)"),i=e.element.find(e._sanitizeSelector(a.hash));if(c.hasClass("ui-tabs-selected")&&!f.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||e.panels.filter(":animated").length||e._trigger("select",null,e._ui(this,i[0]))===false){this.blur();return false}f.selected=e.anchors.index(this);e.abort();if(f.collapsible){if(c.hasClass("ui-tabs-selected")){f.selected= +-1;f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){n(a,d)}).dequeue("tabs");this.blur();return false}if(!d.length){f.cookie&&e._cookie(f.selected,f.cookie);e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this));this.blur();return false}}f.cookie&&e._cookie(f.selected,f.cookie);if(i.length){d.length&&e.element.queue("tabs",function(){n(a,d)});e.element.queue("tabs",function(){p(a,i)});e.load(e.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +b.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){"string"==typeof b&&(b=this.anchors.index(this.anchors.filter("[href$="+b+"]")));return b},destroy:function(){var a=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var a= +b.data(this,"href.tabs");a&&(this.href=a);var c=b(this).unbind(".tabs");b.each(["href","load","cache"],function(b,a){c.removeData(a+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){b.data(this,"destroy.tabs")?b(this).remove():b(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});a.cookie&&this._cookie(null,a.cookie);return this},add:function(c, +d,e){e===a&&(e=this.anchors.length);var f=this,i=this.options,d=b(i.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),c=!c.indexOf("#")?c.replace("#",""):this._tabId(b("a",d)[0]);d.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+c);j.length||(j=b(i.panelTemplate).attr("id",c).data("destroy.tabs",!0));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");e>=this.lis.length?(d.appendTo(this.list),j.appendTo(this.list[0].parentNode)): +(d.insertBefore(this.lis[e]),j.insertBefore(this.panels[e]));i.disabled=b.map(i.disabled,function(b){return b>=e?++b:b});this._tabify();1==this.anchors.length&&(i.selected=0,d.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0));this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(a){var a=this._getIndex(a),c=this.options,d=this.lis.eq(a).remove(), +f=this.panels.eq(a).remove();d.hasClass("ui-tabs-selected")&&1=a?--b:b});this._tabify();this._trigger("remove",null,this._ui(d.find("a")[0],f[0]));return this},enable:function(a){var a=this._getIndex(a),c=this.options;if(-1!=b.inArray(a,c.disabled))return this.lis.eq(a).removeClass("ui-state-disabled"),c.disabled=b.grep(c.disabled,function(b){return b!= +a}),this._trigger("enable",null,this._ui(this.anchors[a],this.panels[a])),this},disable:function(b){var b=this._getIndex(b),a=this.options;b!=a.selected&&(this.lis.eq(b).addClass("ui-state-disabled"),a.disabled.push(b),a.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b])));return this},select:function(b){b=this._getIndex(b);if(-1==b)if(this.options.collapsible&&-1!=this.options.selected)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+ +".tabs");return this},load:function(a){var a=this._getIndex(a),c=this,d=this.options,f=this.anchors.eq(a)[0],i=b.data(f,"load.tabs");this.abort();if(!i||0!==this.element.queue("tabs").length&&b.data(f,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(a).addClass("ui-state-processing");if(d.spinner){var j=b("span",f);j.data("label.tabs",j.html()).html(d.spinner)}this.xhr=b.ajax(b.extend({},d.ajaxOptions,{url:i,success:function(i,j){c.element.find(c._sanitizeSelector(f.hash)).html(i);c._cleanup(); +d.cache&&b.data(f,"cache.tabs",!0);c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.success(i,j)}catch(m){}},error:function(b,i){c._cleanup();c._trigger("load",null,c._ui(c.anchors[a],c.panels[a]));try{d.ajaxOptions.error(b,i,a,f)}catch(m){}}}));c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(!1,!0);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));this.xhr&&(this.xhr.abort(),delete this.xhr);this._cleanup(); +return this},url:function(b,a){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",a);return this},length:function(){return this.anchors.length}});b.extend(b.ui.tabs,{version:"1.8.14"});b.extend(b.ui.tabs.prototype,{rotation:null,rotate:function(b,a){var c=this,f=this.options,d=c._rotate||(c._rotate=function(a){clearTimeout(c.rotation);c.rotation=setTimeout(function(){var b=f.selected;c.select(++b'))}function d(a){return a.bind("mouseout",function(a){a=b(a.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"); +a.length&&a.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){c=b(c.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!b.datepicker._isDisabledDatepicker(e.inline?a.parent()[0]:e.input[0])&&c.length)c.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),c.addClass("ui-state-hover"),c.hasClass("ui-datepicker-prev")&&c.addClass("ui-datepicker-prev-hover"),c.hasClass("ui-datepicker-next")&& +c.addClass("ui-datepicker-next-hover")})}function g(c,d){b.extend(c,d);for(var e in d)if(null==d[e]||d[e]==a)c[e]=d[e];return c}b.extend(b.ui,{datepicker:{version:"1.8.14"}});var h=(new Date).getTime(),e;b.extend(c.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(b){g(this._defaults,b||{});return this},_attachDatepicker:function(a,c){var d=null,e;for(e in this._defaults){var g= +a.getAttribute("date:"+e);if(g){d=d||{};try{d[e]=eval(g)}catch(m){d[e]=g}}}e=a.nodeName.toLowerCase();g="div"==e||"span"==e;a.id||(this.uuid+=1,a.id="dp"+this.uuid);var h=this._newInst(b(a),g);h.settings=b.extend({},c||{},d||{});"input"==e?this._connectDatepicker(a,h):g&&this._inlineDatepicker(a,h)},_newInst:function(a,c){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:c,dpDiv:!c?this.dpDiv:d(b('
            '))}},_connectDatepicker:function(a,c){var d=b(a);c.append=b([]);c.trigger=b([]);d.hasClass(this.markerClassName)||(this._attachments(d,c),d.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b,a){return this._get(c,a)}),this._autoSize(c),b.data(a,"datepicker", +c))},_attachments:function(a,c){var d=this._get(c,"appendText"),e=this._get(c,"isRTL");c.append&&c.append.remove();d&&(c.append=b(''+d+""),a[e?"before":"after"](c.append));a.unbind("focus",this._showDatepicker);c.trigger&&c.trigger.remove();d=this._get(c,"showOn");("focus"==d||"both"==d)&&a.focus(this._showDatepicker);if("button"==d||"both"==d){var d=this._get(c,"buttonText"),g=this._get(c,"buttonImage");c.trigger=b(this._get(c,"buttonImageOnly")?b("").addClass(this._triggerClass).attr({src:g, +alt:d,title:d}):b('').addClass(this._triggerClass).html(""==g?d:b("").attr({src:g,alt:d,title:d})));a[e?"before":"after"](c.trigger);c.trigger.click(function(){b.datepicker._datepickerShowing&&b.datepicker._lastInput==a[0]?b.datepicker._hideDatepicker():b.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(b){if(this._get(b,"autoSize")&&!b.inline){var a=new Date(2009,11,20),c=this._get(b,"dateFormat");if(c.match(/[DM]/)){var d=function(b){for(var a= +0,c=0,f=0;fa&&(a=b[f].length,c=f);return c};a.setMonth(d(this._get(b,c.match(/MM/)?"monthNames":"monthNamesShort")));a.setDate(d(this._get(b,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-a.getDay())}b.input.attr("size",this._formatDate(b,a).length)}},_inlineDatepicker:function(a,c){var d=b(a);d.hasClass(this.markerClassName)||(d.addClass(this.markerClassName).append(c.dpDiv).bind("setData.datepicker",function(b,a,f){c.settings[a]=f}).bind("getData.datepicker",function(b, +a){return this._get(c,a)}),b.data(a,"datepicker",c),this._setDate(c,this._getDefaultDate(c),!0),this._updateDatepicker(c),this._updateAlternate(c),c.dpDiv.show())},_dialogDatepicker:function(a,c,d,e,h){a=this._dialogInst;a||(this.uuid+=1,this._dialogInput=b(''),this._dialogInput.keydown(this._doKeyDown),b("body").append(this._dialogInput),a=this._dialogInst=this._newInst(this._dialogInput,!1), +a.settings={},b.data(this._dialogInput[0],"datepicker",a));g(a.settings,e||{});c=c&&c.constructor==Date?this._formatDate(a,c):c;this._dialogInput.val(c);this._pos=h?h.length?h:[h.pageX,h.pageY]:null;this._pos||(this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)]);this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+ +"px");a.settings.onSelect=d;this._inDialog=!0;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);b.blockUI&&b.blockUI(this.dpDiv);b.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();b.removeData(a,"datepicker");"input"==e?(d.append.remove(),d.trigger.remove(),c.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown", +this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==e||"span"==e)&&c.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!1,d.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass),c.children().removeClass("ui-state-disabled"), +c.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var c=b(a),d=b.data(a,"datepicker");if(c.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if("input"==e)a.disabled=!0,d.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==e||"span"==e)c=c.children("."+this._inlineClass), +c.children().addClass("ui-state-disabled"),c.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled");this._disabledInputs=b.map(this._disabledInputs,function(b){return b==a?null:b});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(b){if(!b)return!1;for(var a=0;ae||!d||-1n&&n>e?Math.abs(c.left+e-n):0);c.top-=Math.min(c.top,c.top+g>q&&q>g?Math.abs(g+p):0);return c},_findPos:function(a){for(var c= +this._get(this._getInst(a),"isRTL");a&&("hidden"==a.type||1!=a.nodeType||b.expr.filters.hidden(a));)a=a[c?"previousSibling":"nextSibling"];a=b(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");b&&b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var c=this._curInst;if(c&&!(a&&c!=b.data(a,"datepicker"))&&this._datepickerShowing){var a=this._get(c,"showAnim"),d=this._get(c,"duration"),e=function(){b.datepicker._tidyDialog(c); +this._curInst=null};if(b.effects&&b.effects[a])c.dpDiv.hide(a,b.datepicker._get(c,"showOptions"),d,e);else c.dpDiv["slideDown"==a?"slideUp":"fadeIn"==a?"fadeOut":"hide"](a?d:null,e);a||e();b.datepicker._triggerOnClose(c);this._datepickerShowing=!1;this._lastInput=null;this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),b.blockUI&&(b.unblockUI(),b("body").append(this.dpDiv)));this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){b.datepicker._curInst&&(a=b(a.target),a[0].id!=b.datepicker._mainDivId&&(0==a.parents("#"+b.datepicker._mainDivId).length&&!a.hasClass(b.datepicker.markerClassName)&&!a.hasClass(b.datepicker._triggerClass)&&b.datepicker._datepickerShowing&&(!b.datepicker._inDialog||!b.blockUI))&&b.datepicker._hideDatepicker())},_adjustDate:function(a,c,d){var a=b(a),e=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(e,c+("M"==d?this._get(e,"showCurrentAtPos"): +0),d),this._updateDatepicker(e))},_gotoToday:function(a){var a=b(a),c=this._getInst(a[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate();c.drawMonth=c.selectedMonth=d.getMonth();c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c);this._adjustDate(a)},_selectMonthYear:function(a,c,d){var a=b(a),e=this._getInst(a[0]);e._selectingMonthYear= +!1;e["selected"+("M"==d?"Month":"Year")]=e["draw"+("M"==d?"Month":"Year")]=parseInt(c.options[c.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var c=this._getInst(b(a)[0]);c.input&&c._selectingMonthYear&&setTimeout(function(){c.input.focus()},0);c._selectingMonthYear=!c._selectingMonthYear},_selectDay:function(a,c,d,e){var g=b(a);!b(e).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(g[0])&&(g=this._getInst(g[0]),g.selectedDay=g.currentDay= +b("a",e).html(),g.selectedMonth=g.currentMonth=c,g.selectedYear=g.currentYear=d,this._selectDate(a,this._formatDate(g,g.currentDay,g.currentMonth,g.currentYear)))},_clearDate:function(a){a=b(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,c){var d=this._getInst(b(a)[0]),c=null!=c?c:this._formatDate(d);d.input&&d.input.val(c);this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[c,d]):d.input&&d.input.trigger("change");d.inline?this._updateDatepicker(d): +(this._hideDatepicker(),this._lastInput=d.input[0],"object"!=typeof d.input[0]&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var c=this._get(a,"altField");if(c){var d=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),g=this.formatDate(d,e,this._getFormatConfig(a));b(c).each(function(){b(this).val(g)})}},noWeekends:function(a){a=a.getDay();return[0a,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,c,d){if(null==a||null==c)throw"Invalid arguments";c="object"==typeof c?c.toString():c+"";if(""==c)return null;for(var e=(d?d.shortYearCutoff:null)||this._defaults.shortYearCutoff,e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),g=(d?d.dayNamesShort:null)||this._defaults.dayNamesShort,h=(d?d.dayNames:null)||this._defaults.dayNames,p=(d?d.monthNamesShort:null)||this._defaults.monthNamesShort, +n=(d?d.monthNames:null)||this._defaults.monthNames,q=d=-1,o=-1,w=-1,r=!1,u=function(b){(b=E+1d&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=e?0:-100));if(-1b.getYear()%100?"0":"")+b.getYear()%100;break;case "@":o+=b.getTime();break;case "!":o+=1E4*b.getTime()+this._ticksTo1970;break;case "'":h("'")?o+="'":w=!0;break;default:o+=a.charAt(r)}return o},_possibleChars:function(a){for(var b= +"",c=!1,d=function(b){(b=e+1n&&(n+=12,s--);if(u)for(var v=this._daylightSavingAdjust(new Date(u.getFullYear(),u.getMonth()-p[0]*p[1]+1,u.getDate())),v=r&&vv;)n--,0>n&&(n=11,s--);a.drawMonth=n;a.drawYear=s;var v=this._get(a,"prevText"),v=!m?v:this.formatDate(v,this._daylightSavingAdjust(new Date(s,n-q,1)),this._getFormatConfig(a)), +v=this._canAdjustMonth(a,-1,s,n)?''+v+"":g?"":''+v+"",z=this._get(a,"nextText"),z=!m?z:this.formatDate(z,this._daylightSavingAdjust(new Date(s, +n+q,1)),this._getFormatConfig(a)),g=this._canAdjustMonth(a,1,s,n)?''+z+"":g?"":''+z+"",q=this._get(a,"currentText"),z=this._get(a,"gotoCurrent")&& +a.currentDay?w:c,q=!m?q:this.formatDate(q,z,this._getFormatConfig(a)),m=!a.inline?'":"",e=e?'
            '+(d?m:"")+(this._isInRange(a,z)?'":"")+(d?"":m)+"
            ":"",m=parseInt(this._get(a,"firstDay"),10),m=isNaN(m)?0:m,q=this._get(a,"showWeek"),z=this._get(a,"dayNames");this._get(a,"dayNamesShort");var B=this._get(a,"dayNamesMin"),E=this._get(a,"monthNames"),C=this._get(a,"monthNamesShort"),O=this._get(a,"beforeShowDay"),K=this._get(a,"showOtherMonths"),S=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var P=this._getDefaultDate(a),G="",H=0;H'+(/all|left/.test(A)&& +0==H?d?g:v:"")+(/all|right/.test(A)&&0==H?d?v:g:"")+this._generateMonthYearHeader(a,n,s,r,u,0
            '),D=q?'":"",A=0;7>A;A++)var x=(A+m)%7,D=D+("'+B[x]+"");y+=D+"";D=this._getDaysInMonth(s,n);s==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay, +D));A=(this._getFirstDayOfMonth(s,n)-m+7)%7;D=Math.ceil((A+D)/7);this.maxRows=D=o?this.maxRows>D?this.maxRows:D:D;for(var x=this._daylightSavingAdjust(new Date(s,n,1-A)),R=0;R",M=!q?"":'",A=0;7>A;A++){var J=O?O.apply(a.input?a.input[0]:null,[x]):[!0,""],F=x.getMonth()!=n,N=F&&!S||!J[0]||r&&xu,M=M+('");x.setDate(x.getDate()+1);x=this._daylightSavingAdjust(x)}y+=M+""}n++;11
            '+this._get(a,"weekHeader")+"
            '+this._get(a,"calculateWeek")(x)+""+(F&&!K? +" ":N?''+x.getDate()+"":''+x.getDate()+"")+"
            "+(o?"
          "+(0':""):"");L+=y}G+=L}G+=e+(b.browser.msie&& +7>parseInt(b.browser.version,10)&&!a.inline?'':"");a._keyEvent=!1;return G},_generateMonthYearHeader:function(a,b,c,d,e,g,p,n){var q=this._get(a,"changeMonth"),o=this._get(a,"changeYear"),w=this._get(a,"showMonthAfterYear"),r='
          ',u="";if(g||!q)u+=''+p[b]+"";else{for(var p=d&&d.getFullYear()==c,s=e&&e.getFullYear()==c,u=u+('"}w||(r+=u+(g||!q||!o?" ":""));if(!a.yearshtml)if(a.yearshtml="",g||!o)r+=''+c+"";else{var n=this._get(a,"yearRange").split(":"),z=(new Date).getFullYear(),p=function(a){a= +a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?z+parseInt(a,10):parseInt(a,10);return isNaN(a)?z:a},b=p(n[0]),n=Math.max(b,p(n[1]||"")),b=d?Math.max(b,d.getFullYear()):b,n=e?Math.min(n,e.getFullYear()):n;for(a.yearshtml+='";r+=a.yearshtml;a.yearshtml=null}r+=this._get(a,"yearSuffix");w&&(r+=(g||!q||!o?" ":"")+u);return r+"
          "},_adjustInstDate:function(a,b,c){var d=a.drawYear+("Y"==c?b:0),e=a.drawMonth+("M"==c?b:0),b=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+("D"==c?b:0),d=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,b)));a.selectedDay=d.getDate();a.drawMonth=a.selectedMonth=d.getMonth();a.drawYear=a.selectedYear=d.getFullYear();("M"==c|| +"Y"==c)&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),c=c&&bd?d:c},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return null==a?[1,1]:"number"==typeof a?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a, +b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),c=this._daylightSavingAdjust(new Date(c,d+(0>b?b:e[0]*e[1]),1));0>b&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<= +d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff"),b="string"!=typeof b?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);b=b?"object"==typeof b?b:this._daylightSavingAdjust(new Date(d, +c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});b.fn.datepicker=function(a){if(!this.length)return this;b.datepicker.initialized||(b(document).mousedown(b.datepicker._checkExternalClick).find("body").append(b.datepicker.dpDiv),b.datepicker.initialized=!0);var c=Array.prototype.slice.call(arguments,1);return"string"==typeof a&&("isDisabled"==a||"getDate"==a||"widget"==a)||"option"== +a&&2==arguments.length&&"string"==typeof arguments[1]?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this[0]].concat(c)):this.each(function(){typeof a=="string"?b.datepicker["_"+a+"Datepicker"].apply(b.datepicker,[this].concat(c)):b.datepicker._attachDatepicker(this,a)})};b.datepicker=new c;b.datepicker.initialized=!1;b.datepicker.uuid=(new Date).getTime();b.datepicker.version="1.8.14";window["DP_jQuery_"+h]=b})(jQuery); +(function(b,a){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
          ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(b){if(b===a)return this._value();this._setOption("value",b);return this},_setOption:function(a,d){"value"===a&&(this.options.value=d,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete"));b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;"number"!==typeof a&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change"));this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.14"})})(jQuery); +jQuery.effects||function(b,a){function c(a){var c;return a&&a.constructor==Array&&3==a.length?a:(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(a))?[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)]:(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(a))?[2.55*parseFloat(c[1]),2.55*parseFloat(c[2]),2.55*parseFloat(c[3])]:(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(a))?[parseInt(c[1],16),parseInt(c[2], +16),parseInt(c[3],16)]:(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(a))?[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)]:/rgba\(0, 0, 0, 0\)/.exec(a)?i.transparent:i[b.trim(a).toLowerCase()]}function d(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]])for(var e=a.length;e--;)c=a[e],"string"==typeof a[c]&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c]);else for(c in a)"string"=== +typeof a[c]&&(b[c]=a[c]);return b}function g(a){var c,d;for(c in a)d=a[c],(null==d||b.isFunction(d)||c in k||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete a[c];return a}function h(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function e(a,c,d,e){"object"==typeof a&&(e=c,d=null,c=a,a=c.effect);b.isFunction(c)&&(e=c,d=null,c={});if("number"==typeof c||b.fx.speeds[c])e=d,d=c,c={};b.isFunction(d)&&(e=d,d=null);c=c||{};d=d||c.duration;d=b.fx.off?0:"number"==typeof d? +d:d in b.fx.speeds?b.fx.speeds[d]:b.fx.speeds._default;e=e||c.complete;return[a,c,d,e]}function f(a){return!a||("number"===typeof a||b.fx.speeds[a])||"string"===typeof a&&!b.effects[a]?!0:!1}b.effects={};b.each("backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor borderColor color outlineColor".split(" "),function(a,d){b.fx.step[d]=function(a){if(!a.colorInit){var e;e=a.elem;var f=d,g;do{g=b.curCSS(e,f);if(g!=""&&g!="transparent"||b.nodeName(e,"body"))break;f="backgroundColor"}while(e= +e.parentNode);e=c(g);a.start=e;a.end=c(a.end);a.colorInit=true}a.elem.style[d]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var i={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139], +darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255], +maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},j=["add","remove","toggle"],k={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};b.effects.animateClass=function(a,c,e,f){b.isFunction(e)&&(f=e,e=null);return this.queue(function(){var i=b(this),o=i.attr("style")|| +" ",k=g(d.call(this)),r,u=i.attr("class");b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});r=g(d.call(this));i.attr("class",u);i.animate(h(k,r),{queue:false,duration:c,easing:e,complete:function(){b.each(j,function(b,c){if(a[c])i[c+"Class"](a[c])});if(typeof i.attr("style")=="object"){i.attr("style").cssText="";i.attr("style").cssText=o}else i.attr("style",o);f&&f.apply(this,arguments);b.dequeue(this)}})})};b.fn.extend({_addClass:b.fn.addClass,addClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this, +[{add:a},c,d,e]):this._addClass(a)},_removeClass:b.fn.removeClass,removeClass:function(a,c,d,e){return c?b.effects.animateClass.apply(this,[{remove:a},c,d,e]):this._removeClass(a)},_toggleClass:b.fn.toggleClass,toggleClass:function(c,d,e,f,g){return"boolean"==typeof d||d===a?e?b.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):b.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(a,c,d,e,f){return b.effects.animateClass.apply(this,[{add:c, +remove:a},d,e,f])}});b.extend(b.effects,{version:"1.8.14",save:function(a,b){for(var c=0;c").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});a.wrap(d);d=a.parent();"static"==a.css("position")?(d.css({position:"relative"}),a.css({position:"relative"})): +(b.extend(c,{position:a.css("position"),zIndex:a.css("z-index")}),b.each(["top","left","bottom","right"],function(b,d){c[d]=a.css(d);isNaN(parseInt(c[d],10))&&(c[d]="auto")}),a.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(a){return a.parent().is(".ui-effects-wrapper")?a.parent().replaceWith(a):a},setTransition:function(a,c,d,e){e=e||{};b.each(c,function(b,c){unit=a.cssUnit(c);0(b/=e/2)?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c}, +easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return 1>(b/=e/2)?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/ +e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:1>(b/=e/2)?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)* +b)+c},easeInOutCirc:function(a,b,c,d,e){return 1>(b/=e/2)?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var a=1.70158,f=0,g=d;if(0==b)return c;if(1==(b/=e))return c+d;f||(f=0.3*e);gb?-0.5*g*Math.pow(2,10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+c:0.5*g*Math.pow(2,-10*(b-=1))*Math.sin((b*e-a)*2*Math.PI/f)+d+c},easeInBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return e*(c/=f)*c*((g+1)*c-g)+d},easeOutBack:function(b,c,d,e, +f,g){g==a&&(g=1.70158);return e*((c=c/f-1)*c*((g+1)*c+g)+1)+d},easeInOutBack:function(b,c,d,e,f,g){g==a&&(g=1.70158);return 1>(c/=f/2)?e/2*c*c*(((g*=1.525)+1)*c-g)+d:e/2*((c-=2)*c*(((g*=1.525)+1)*c+g)+2)+d},easeInBounce:function(a,c,d,e,f){return e-b.easing.easeOutBounce(a,f-c,0,e,f)+d},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?d*7.5625*b*b+c:b<2/2.75?d*(7.5625*(b-=1.5/2.75)*b+0.75)+c:b<2.5/2.75?d*(7.5625*(b-=2.25/2.75)*b+0.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+0.984375)+c},easeInOutBounce:function(a, +c,d,e,f){return c").css({position:"absolute",visibility:"visible",left:-j*(e/d),top:-i*(f/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:e/d,height:f/c,left:h.left+j*(e/d)+("show"==a.options.mode?(j-Math.floor(d/2))*(e/d):0),top:h.top+i*(f/c)+("show"==a.options.mode?(i-Math.floor(c/2))*(f/c):0),opacity:"show"==a.options.mode?0:1}).animate({left:h.left+j*(e/d)+("show"==a.options.mode?0:(j-Math.floor(d/2))*(e/d)),top:h.top+ +i*(f/c)+("show"==a.options.mode?0:(i-Math.floor(c/2))*(f/c)),opacity:"show"==a.options.mode?1:0},a.duration||500);setTimeout(function(){"show"==a.options.mode?g.css({visibility:"visible"}):g.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(g[0]);g.dequeue();b("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.fold=function(a){return this.queue(function(){var c=b(this),d=["position","top","bottom","left","right"],g=b.effects.setMode(c,a.options.mode||"hide"),h=a.options.size||15,e=!!a.options.horizFirst,f=a.duration?a.duration/2:b.fx.speeds._default/2;b.effects.save(c,d);c.show();var i=b.effects.createWrapper(c).css({overflow:"hidden"}),j="show"==g!=e,k=j?["width","height"]:["height","width"],j=j?[i.width(),i.height()]:[i.height(),i.width()],l=/([0-9]+)%/.exec(h);l&&(h=parseInt(l[1], +10)/100*j["hide"==g?0:1]);"show"==g&&i.css(e?{height:0,width:h}:{height:h,width:0});e={};l={};e[k[0]]="show"==g?j[0]:h;l[k[1]]="show"==g?j[1]:0;i.animate(e,f,a.options.easing).animate(l,f,a.options.easing,function(){"hide"==g&&c.hide();b.effects.restore(c,d);b.effects.removeWrapper(c);a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +(function(b){b.effects.highlight=function(a){return this.queue(function(){var c=b(this),d=["backgroundImage","backgroundColor","opacity"],g=b.effects.setMode(c,a.options.mode||"show"),h={backgroundColor:c.css("backgroundColor")};"hide"==g&&(h.opacity=0);b.effects.save(c,d);c.show().css({backgroundImage:"none",backgroundColor:a.options.color||"#ffff99"}).animate(h,{queue:!1,duration:a.duration,easing:a.options.easing,complete:function(){g=="hide"&&c.hide();b.effects.restore(c,d);g=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +(function(b){b.effects.pulsate=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"show");times=2*(a.options.times||5)-1;duration=a.duration?a.duration/2:b.fx.speeds._default/2;isVisible=c.is(":visible");animateTo=0;isVisible||(c.css("opacity",0).show(),animateTo=1);("hide"==d&&isVisible||"show"==d&&!isVisible)&×--;for(d=0;d').appendTo(document.body).addClass(a.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(d,a.duration,a.options.easing,function(){h.remove();a.callback&&a.callback.apply(c[0],arguments);c.dequeue()})})}})(jQuery); +/* + * jQuery Highlight plugin + * Based on highlight v3 by Johann Burkard + * http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html + * Copyright (c) 2009 Bartek Szopka http://bartaz.github.com/sandbox.js/jquery.highlight.html + * Licensed under MIT license. + */ +jQuery.extend({highlight:function(a,c,b,e){if(a.nodeType===3){if(c=a.data.match(c)){b=document.createElement(b||"span");b.className=e||"highlight";a=a.splitText(c.index);a.splitText(c[0].length);e=a.cloneNode(true);b.appendChild(e);a.parentNode.replaceChild(b,a);return 1}}else if(a.nodeType===1&&a.childNodes&&!/(script|style)/i.test(a.tagName)&&!(a.tagName===b.toUpperCase()&&a.className===e))for(var d=0;d').appendTo("body"); + var d = { width: $c.width() - $c[0].clientWidth, height: $c.height() - $c[0].clientHeight }; + $c.remove(); + window.scrollbarWidth = d.width; + window.scrollbarHeight = d.height; + return dim.match(/^(width|height)$/) ? d[dim] : d; + } + + + /** + * Returns hash container 'display' and 'visibility' + * + * @see $.swap() - swaps CSS, runs callback, resets CSS + */ +, showInvisibly: function ($E, force) { + if (!$E) return {}; + if (!$E.jquery) $E = $($E); + var CSS = { + display: $E.css('display') + , visibility: $E.css('visibility') + }; + if (force || CSS.display === "none") { // only if not *already hidden* + $E.css({ display: "block", visibility: "hidden" }); // show element 'invisibly' so can be measured + return CSS; + } + else return {}; + } + + /** + * Returns data for setting size of an element (container or a pane). + * + * @see _create(), onWindowResize() for container, plus others for pane + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, outerWidth, innerHeight, etc + */ +, getElementDimensions: function ($E) { + var + d = {} // dimensions hash + , x = d.css = {} // CSS hash + , i = {} // TEMP insets + , b, p // TEMP border, padding + , N = $.layout.cssNum + , off = $E.offset() + ; + d.offsetLeft = off.left; + d.offsetTop = off.top; + + $.each("Left,Right,Top,Bottom".split(","), function (idx, e) { // e = edge + b = x["border" + e] = $.layout.borderWidth($E, e); + p = x["padding"+ e] = $.layout.cssNum($E, "padding"+e); + i[e] = b + p; // total offset of content from outer side + d["inset"+ e] = p; + }); + + d.offsetWidth = $E.innerWidth(); // offsetWidth is used in calc when doing manual resize + d.offsetHeight = $E.innerHeight(); // ditto + d.outerWidth = $E.outerWidth(); + d.outerHeight = $E.outerHeight(); + d.innerWidth = max(0, d.outerWidth - i.Left - i.Right); + d.innerHeight = max(0, d.outerHeight - i.Top - i.Bottom); + + x.width = $E.width(); + x.height = $E.height(); + x.top = N($E,"top",true); + x.bottom = N($E,"bottom",true); + x.left = N($E,"left",true); + x.right = N($E,"right",true); + + //d.visible = $E.is(":visible");// && x.width > 0 && x.height > 0; + + return d; + } + +, getElementCSS: function ($E, list) { + var + CSS = {} + , style = $E[0].style + , props = list.split(",") + , sides = "Top,Bottom,Left,Right".split(",") + , attrs = "Color,Style,Width".split(",") + , p, s, a, i, j, k + ; + for (i=0; i < props.length; i++) { + p = props[i]; + if (p.match(/(border|padding|margin)$/)) + for (j=0; j < 4; j++) { + s = sides[j]; + if (p === "border") + for (k=0; k < 3; k++) { + a = attrs[k]; + CSS[p+s+a] = style[p+s+a]; + } + else + CSS[p+s] = style[p+s]; + } + else + CSS[p] = style[p]; + }; + return CSS + } + + /** + * Return the innerWidth for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerWidth (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerWidth of the elem by subtracting padding and borders + */ +, cssWidth: function ($E, outerWidth) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerWidth <= 0) return 0; + + if (!$.support.boxModel) return outerWidth; + + // strip border and padding from outerWidth to get CSS Width + var W = outerWidth + - b($E, "Left") + - b($E, "Right") + - n($E, "paddingLeft") + - n($E, "paddingRight") + ; + + return max(0,W); + } + + /** + * Return the innerHeight for the current browser/doctype + * + * @see initPanes(), sizeMidPanes(), initHandles(), sizeHandles() + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {number=} outerHeight (optional) Can pass a width, allowing calculations BEFORE element is resized + * @return {number} Returns the innerHeight of the elem by subtracting padding and borders + */ +, cssHeight: function ($E, outerHeight) { + var + b = $.layout.borderWidth + , n = $.layout.cssNum + ; + // a 'calculated' outerHeight can be passed so borders and/or padding are removed if needed + if (outerHeight <= 0) return 0; + + if (!$.support.boxModel) return outerHeight; + + // strip border and padding from outerHeight to get CSS Height + var H = outerHeight + - b($E, "Top") + - b($E, "Bottom") + - n($E, "paddingTop") + - n($E, "paddingBottom") + ; + + return max(0,H); + } + + /** + * Returns the 'current CSS numeric value' for a CSS property - 0 if property does not exist + * + * @see Called by many methods + * @param {Array.} $E Must pass a jQuery object - first element is processed + * @param {string} prop The name of the CSS property, eg: top, width, etc. + * @param {boolean=} [allowAuto=false] true = return 'auto' if that is value; false = return 0 + * @return {(string|number)} Usually used to get an integer value for position (top, left) or size (height, width) + */ +, cssNum: function ($E, prop, allowAuto) { + if (!$E.jquery) $E = $($E); + var CSS = $.layout.showInvisibly($E) + , p = $.curCSS($E[0], prop, true) + , v = allowAuto && p=="auto" ? p : (parseInt(p, 10) || 0); + $E.css( CSS ); // RESET + return v; + } + +, borderWidth: function (el, side) { + if (el.jquery) el = el[0]; + var b = "border"+ side.substr(0,1).toUpperCase() + side.substr(1); // left => Left + return $.curCSS(el, b+"Style", true) === "none" ? 0 : (parseInt($.curCSS(el, b+"Width", true), 10) || 0); + } + + /** + * Mouse-tracking utility - FUTURE REFERENCE + * + * init: if (!window.mouse) { + * window.mouse = { x: 0, y: 0 }; + * $(document).mousemove( $.layout.trackMouse ); + * } + * + * @param {Object} evt + * +, trackMouse: function (evt) { + window.mouse = { x: evt.clientX, y: evt.clientY }; + } + */ + + /** + * SUBROUTINE for preventPrematureSlideClose option + * + * @param {Object} evt + * @param {Object=} el + */ +, isMouseOverElem: function (evt, el) { + var + $E = $(el || this) + , d = $E.offset() + , T = d.top + , L = d.left + , R = L + $E.outerWidth() + , B = T + $E.outerHeight() + , x = evt.pageX // evt.clientX ? + , y = evt.pageY // evt.clientY ? + ; + // if X & Y are < 0, probably means is over an open SELECT + return ($.layout.browser.msie && x < 0 && y < 0) || ((x >= L && x <= R) && (y >= T && y <= B)); + } + + /** + * Message/Logging Utility + * + * @example $.layout.msg("My message"); // log text + * @example $.layout.msg("My message", true); // alert text + * @example $.layout.msg({ foo: "bar" }, "Title"); // log hash-data, with custom title + * @example $.layout.msg({ foo: "bar" }, true, "Title", { sort: false }); -OR- + * @example $.layout.msg({ foo: "bar" }, "Title", { sort: false, display: true }); // alert hash-data + * + * @param {(Object|string)} info String message OR Hash/Array + * @param {(Boolean|string|Object)=} [popup=false] True means alert-box - can be skipped + * @param {(Object|string)=} [debugTitle=""] Title for Hash data - can be skipped + * @param {Object=} [debutOpts={}] Extra options for debug output + */ +, msg: function (info, popup, debugTitle, debugOpts) { + if ($.isPlainObject(info) && window.debugData) { + if (typeof popup === "string") { + debugOpts = debugTitle; + debugTitle = popup; + } + else if (typeof debugTitle === "object") { + debugOpts = debugTitle; + debugTitle = null; + } + var t = debugTitle || "log( )" + , o = $.extend({ sort: false, returnHTML: false, display: false }, debugOpts); + if (popup === true || o.display) + debugData( info, t, o ); + else if (window.console) + console.log(debugData( info, t, o )); + } + else if (popup) + alert(info); + else if (window.console) + console.log(info); + else { + var id = "#layoutLogger" + , $l = $(id); + if (!$l.length) + $l = createLog(); + $l.children("ul").append('
        • '+ info.replace(/\/g,">") +'
        • '); + } + + function createLog () { + var pos = $.support.fixedPosition ? 'fixed' : 'absolute' + , $e = $('
          ' + + '
          ' + + 'XLayout console.log
          ' + + '
            ' + + '
            ' + ).appendTo("body"); + $e.css('left', $(window).width() - $e.outerWidth() - 5) + if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); + return $e; + }; + } + +}; + +var lang = $.layout.language; // alias used in defaults... + +// DEFAULT OPTIONS - CHANGE IF DESIRED +$.layout.defaults = { +/* + * LAYOUT & LAYOUT-CONTAINER OPTIONS + * - none of these options are applicable to individual panes + */ + name: "" // Not required, but useful for buttons and used for the state-cookie +, containerSelector: "" // ONLY used when specifying a childOptions - to find container-element that is NOT directly-nested +, containerClass: "ui-layout-container" // layout-container element +, scrollToBookmarkOnLoad: true // after creating a layout, scroll to bookmark in URL (.../page.htm#myBookmark) +, resizeWithWindow: true // bind thisLayout.resizeAll() to the window.resize event +, resizeWithWindowDelay: 200 // delay calling resizeAll because makes window resizing very jerky +, resizeWithWindowMaxDelay: 0 // 0 = none - force resize every XX ms while window is being resized +, onresizeall_start: null // CALLBACK when resizeAll() STARTS - NOT pane-specific +, onresizeall_end: null // CALLBACK when resizeAll() ENDS - NOT pane-specific +, onload_start: null // CALLBACK when Layout inits - after options initialized, but before elements +, onload_end: null // CALLBACK when Layout inits - after EVERYTHING has been initialized +, onunload_start: null // CALLBACK when Layout is destroyed OR onWindowUnload +, onunload_end: null // CALLBACK when Layout is destroyed OR onWindowUnload +, autoBindCustomButtons: false // search for buttons with ui-layout-button class and auto-bind them +, initPanes: true // false = DO NOT initialize the panes onLoad - will init later +, showErrorMessages: true // enables fatal error messages to warn developers of common errors +, showDebugMessages: false // display console-and-alert debug msgs - IF this Layout version _has_ debugging code! +// Changing this zIndex value will cause other zIndex values to automatically change +, zIndex: null // the PANE zIndex - resizers and masks will be +1 +// DO NOT CHANGE the zIndex values below unless you clearly understand their relationships +, zIndexes: { // set _default_ z-index values here... + pane_normal: 0 // normal z-index for panes + , content_mask: 1 // applied to overlays used to mask content INSIDE panes during resizing + , resizer_normal: 2 // normal z-index for resizer-bars + , pane_sliding: 100 // applied to *BOTH* the pane and its resizer when a pane is 'slid open' + , pane_animate: 1000 // applied to the pane when being animated - not applied to the resizer + , resizer_drag: 10000 // applied to the CLONED resizer-bar when being 'dragged' + } +/* + * PANE DEFAULT SETTINGS + * - settings under the 'panes' key become the default settings for *all panes* + * - ALL pane-options can also be set specifically for each panes, which will override these 'default values' + */ +, panes: { // default options for 'all panes' - will be overridden by 'per-pane settings' + applyDemoStyles: false // NOTE: renamed from applyDefaultStyles for clarity + , closable: true // pane can open & close + , resizable: true // when open, pane can be resized + , slidable: true // when closed, pane can 'slide open' over other panes - closes on mouse-out + , initClosed: false // true = init pane as 'closed' + , initHidden: false // true = init pane as 'hidden' - no resizer-bar/spacing + // SELECTORS + //, paneSelector: "" // MUST be pane-specific - jQuery selector for pane + , contentSelector: ".ui-layout-content" // INNER div/element to auto-size so only it scrolls, not the entire pane! + , contentIgnoreSelector: ".ui-layout-ignore" // element(s) to 'ignore' when measuring 'content' + , findNestedContent: false // true = $P.find(contentSelector), false = $P.children(contentSelector) + // GENERIC ROOT-CLASSES - for auto-generated classNames + , paneClass: "ui-layout-pane" // Layout Pane + , resizerClass: "ui-layout-resizer" // Resizer Bar + , togglerClass: "ui-layout-toggler" // Toggler Button + , buttonClass: "ui-layout-button" // CUSTOM Buttons - eg: '[ui-layout-button]-toggle/-open/-close/-pin' + // ELEMENT SIZE & SPACING + //, size: 100 // MUST be pane-specific -initial size of pane + , minSize: 0 // when manually resizing a pane + , maxSize: 0 // ditto, 0 = no limit + , spacing_open: 6 // space between pane and adjacent panes - when pane is 'open' + , spacing_closed: 6 // ditto - when pane is 'closed' + , togglerLength_open: 50 // Length = WIDTH of toggler button on north/south sides - HEIGHT on east/west sides + , togglerLength_closed: 50 // 100% OR -1 means 'full height/width of resizer bar' - 0 means 'hidden' + , togglerAlign_open: "center" // top/left, bottom/right, center, OR... + , togglerAlign_closed: "center" // 1 => nn = offset from top/left, -1 => -nn == offset from bottom/right + , togglerTip_open: lang.Close // Toggler tool-tip (title) + , togglerTip_closed: lang.Open // ditto + , togglerContent_open: "" // text or HTML to put INSIDE the toggler + , togglerContent_closed: "" // ditto + // RESIZING OPTIONS + , resizerDblClickToggle: true // + , autoResize: true // IF size is 'auto' or a percentage, then recalc 'pixel size' whenever the layout resizes + , autoReopen: true // IF a pane was auto-closed due to noRoom, reopen it when there is room? False = leave it closed + , resizerDragOpacity: 1 // option for ui.draggable + //, resizerCursor: "" // MUST be pane-specific - cursor when over resizer-bar + , maskContents: false // true = add DIV-mask over-or-inside this pane so can 'drag' over IFRAMES + , maskObjects: false // true = add IFRAME-mask over-or-inside this pane to cover objects/applets - content-mask will overlay this mask + , maskZindex: null // will override zIndexes.content_mask if specified - not applicable to iframe-panes + , resizingGrid: false // grid size that the resizers will snap-to during resizing, eg: [20,20] + , livePaneResizing: false // true = LIVE Resizing as resizer is dragged + , liveContentResizing: false // true = re-measure header/footer heights as resizer is dragged + , liveResizingTolerance: 1 // how many px change before pane resizes, to control performance + // TIPS & MESSAGES - also see lang object + , noRoomToOpenTip: lang.noRoomToOpenTip + , resizerTip: lang.Resize // Resizer tool-tip (title) + , sliderTip: lang.Slide // resizer-bar triggers 'sliding' when pane is closed + , sliderCursor: "pointer" // cursor when resizer-bar will trigger 'sliding' + , slideTrigger_open: "click" // click, dblclick, mouseenter + , slideTrigger_close: "mouseleave"// click, mouseleave + , slideDelay_open: 300 // applies only for mouseenter event - 0 = instant open + , slideDelay_close: 300 // applies only for mouseleave event (300ms is the minimum!) + , hideTogglerOnSlide: false // when pane is slid-open, should the toggler show? + , preventQuickSlideClose: $.layout.browser.webkit // Chrome triggers slideClosed as it is opening + , preventPrematureSlideClose: false // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + // HOT-KEYS & MISC + , showOverflowOnHover: false // will bind allowOverflow() utility to pane.onMouseOver + , enableCursorHotkey: true // enabled 'cursor' hotkeys + //, customHotkey: "" // MUST be pane-specific - EITHER a charCode OR a character + , customHotkeyModifier: "SHIFT" // either 'SHIFT', 'CTRL' or 'CTRL+SHIFT' - NOT 'ALT' + // PANE ANIMATION + // NOTE: fxSss_open, fxSss_close & fxSss_size options (eg: fxName_open) are auto-generated if not passed + , fxName: "slide" // ('none' or blank), slide, drop, scale -- only relevant to 'open' & 'close', NOT 'size' + , fxSpeed: null // slow, normal, fast, 200, nnn - if passed, will OVERRIDE fxSettings.duration + , fxSettings: {} // can be passed, eg: { easing: "easeOutBounce", duration: 1500 } + , fxOpacityFix: true // tries to fix opacity in IE to restore anti-aliasing after animation + , animatePaneSizing: false // true = animate resizing after dragging resizer-bar OR sizePane() is called + /* NOTE: Action-specific FX options are auto-generated from the options above if not specifically set: + fxName_open: "slide" // 'Open' pane animation + fnName_close: "slide" // 'Close' pane animation + fxName_size: "slide" // 'Size' pane animation - when animatePaneSizing = true + fxSpeed_open: null + fxSpeed_close: null + fxSpeed_size: null + fxSettings_open: {} + fxSettings_close: {} + fxSettings_size: {} + */ + // CHILD/NESTED LAYOUTS + , childOptions: null // Layout-options for nested/child layout - even {} is valid as options + , initChildLayout: true // true = child layout will be created as soon as _this_ layout completes initialization + , destroyChildLayout: true // true = destroy child-layout if this pane is destroyed + , resizeChildLayout: true // true = trigger child-layout.resizeAll() when this pane is resized + // PANE CALLBACKS + , triggerEventsOnLoad: false // true = trigger onopen OR onclose callbacks when layout initializes + , triggerEventsDuringLiveResize: true // true = trigger onresize callback REPEATEDLY if livePaneResizing==true + , onshow_start: null // CALLBACK when pane STARTS to Show - BEFORE onopen/onhide_start + , onshow_end: null // CALLBACK when pane ENDS being Shown - AFTER onopen/onhide_end + , onhide_start: null // CALLBACK when pane STARTS to Close - BEFORE onclose_start + , onhide_end: null // CALLBACK when pane ENDS being Closed - AFTER onclose_end + , onopen_start: null // CALLBACK when pane STARTS to Open + , onopen_end: null // CALLBACK when pane ENDS being Opened + , onclose_start: null // CALLBACK when pane STARTS to Close + , onclose_end: null // CALLBACK when pane ENDS being Closed + , onresize_start: null // CALLBACK when pane STARTS being Resized ***FOR ANY REASON*** + , onresize_end: null // CALLBACK when pane ENDS being Resized ***FOR ANY REASON*** + , onsizecontent_start: null // CALLBACK when sizing of content-element STARTS + , onsizecontent_end: null // CALLBACK when sizing of content-element ENDS + , onswap_start: null // CALLBACK when pane STARTS to Swap + , onswap_end: null // CALLBACK when pane ENDS being Swapped + , ondrag_start: null // CALLBACK when pane STARTS being ***MANUALLY*** Resized + , ondrag_end: null // CALLBACK when pane ENDS being ***MANUALLY*** Resized + } +/* + * PANE-SPECIFIC SETTINGS + * - options listed below MUST be specified per-pane - they CANNOT be set under 'panes' + * - all options under the 'panes' key can also be set specifically for any pane + * - most options under the 'panes' key apply only to 'border-panes' - NOT the the center-pane + */ +, north: { + paneSelector: ".ui-layout-north" + , size: "auto" // eg: "auto", "30%", .30, 200 + , resizerCursor: "n-resize" // custom = url(myCursor.cur) + , customHotkey: "" // EITHER a charCode (43) OR a character ("o") + } +, south: { + paneSelector: ".ui-layout-south" + , size: "auto" + , resizerCursor: "s-resize" + , customHotkey: "" + } +, east: { + paneSelector: ".ui-layout-east" + , size: 200 + , resizerCursor: "e-resize" + , customHotkey: "" + } +, west: { + paneSelector: ".ui-layout-west" + , size: 200 + , resizerCursor: "w-resize" + , customHotkey: "" + } +, center: { + paneSelector: ".ui-layout-center" + , minWidth: 0 + , minHeight: 0 + } +}; + +$.layout.optionsMap = { + // layout/global options - NOT pane-options + layout: ("stateManagement,effects,zIndexes," + + "name,zIndex,scrollToBookmarkOnLoad,showErrorMessages," + + "resizeWithWindow,resizeWithWindowDelay,resizeWithWindowMaxDelay," + + "onresizeall,onresizeall_start,onresizeall_end,onload,onunload,autoBindCustomButtons").split(",") +// borderPanes: [ ALL options that are NOT specified as 'layout' ] + // default.panes options that apply to the center-pane (most options apply _only_ to border-panes) +, center: ("paneClass,contentSelector,contentIgnoreSelector,findNestedContent,applyDemoStyles,triggerEventsOnLoad," + + "showOverflowOnHover,maskContents,maskObjects,liveContentResizing," + + "childOptions,initChildLayout,resizeChildLayout,destroyChildLayout," + + "onresize,onresize_start,onresize_end,onsizecontent,onsizecontent_start,onsizecontent_end").split(",") + // options that MUST be specifically set 'per-pane' - CANNOT set in the panes (defaults) key +, noDefault: ("paneSelector,resizerCursor,customHotkey").split(",") +}; + +/** + * Processes options passed in converts flat-format data into subkey (JSON) format + * In flat-format, subkeys are _currently_ separated with 2 underscores, like north__optName + * Plugins may also call this method so they can transform their own data + * + * @param {!Object} hash Data/options passed by user - may be a single level or nested levels + * @return {Object} Returns hash of minWidth & minHeight + */ +$.layout.transformData = function (hash) { + var json = { panes: {}, center: {} } // init return object + , data, branch, optKey, keys, key, val, i, c; + + if (typeof hash !== "object") return json; // no options passed + + // convert all 'flat-keys' to 'sub-key' format + for (optKey in hash) { + branch = json; + data = $.layout.optionsMap.layout; + val = hash[ optKey ]; + keys = optKey.split("__"); // eg: west__size or north__fxSettings__duration + c = keys.length - 1; + // convert underscore-delimited to subkeys + for (i=0; i <= c; i++) { + key = keys[i]; + if (i === c) + branch[key] = val; + else if (!branch[key]) + branch[key] = {}; // create the subkey + // recurse to sub-key for next loop - if not done + branch = branch[key]; + } + } + + return json; +} + +// INTERNAL CONFIG DATA - DO NOT CHANGE THIS! +$.layout.backwardCompatibility = { + // data used by renameOldOptions() + map: { + // OLD Option Name: NEW Option Name + applyDefaultStyles: "applyDemoStyles" + , resizeNestedLayout: "resizeChildLayout" + , resizeWhileDragging: "livePaneResizing" + , resizeContentWhileDragging: "liveContentResizing" + , triggerEventsWhileDragging: "triggerEventsDuringLiveResize" + , maskIframesOnResize: "maskContents" + , useStateCookie: "stateManagement.enabled" + , "cookie.autoLoad": "stateManagement.autoLoad" + , "cookie.autoSave": "stateManagement.autoSave" + , "cookie.keys": "stateManagement.stateKeys" + , "cookie.name": "stateManagement.cookie.name" + , "cookie.domain": "stateManagement.cookie.domain" + , "cookie.path": "stateManagement.cookie.path" + , "cookie.expires": "stateManagement.cookie.expires" + , "cookie.secure": "stateManagement.cookie.secure" + } + /** + * @param {Object} opts + */ +, renameOptions: function (opts) { + var map = $.layout.backwardCompatibility.map + , oldData, newData, value + ; + for (var itemPath in map) { + oldData = getBranch( itemPath ); + value = oldData.branch[ oldData.key ] + if (value !== undefined) { + newData = getBranch( map[itemPath], true ) + newData.branch[ newData.key ] = value; + delete oldData.branch[ oldData.key ]; + } + } + + /** + * @param {string} path + * @param {boolean=} [create=false] Create path if does not exist + */ + function getBranch (path, create) { + var a = path.split(".") // split keys into array + , c = a.length - 1 + , D = { branch: opts, key: a[c] } // init branch at top & set key (last item) + , i = 0, k, undef; + for (; i 0) { + if (autoHide && $E.data('autoHidden') && $E.innerHeight() > 0) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + // make hidden, then visible to 'refresh' display after animation + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerHeight + * @param {boolean=} [autoHide=false] + */ +, setOuterHeight = function (el, outerHeight, autoHide) { + var $E = el, h; + if (isStr(el)) $E = $Ps[el]; // west + else if (!el.jquery) $E = $(el); + h = cssH($E, outerHeight); + $E.css({ height: h, visibility: "visible" }); // may have been 'hidden' by sizeContent + if (h > 0 && $E.innerWidth() > 0) { + if (autoHide && $E.data('autoHidden')) { + $E.show().data('autoHidden', false); + if (!browser.mozilla) // FireFox refreshes iframes - IE does not + $E.css(_c.hidden).css(_c.visible); + } + } + else if (autoHide && !$E.data('autoHidden')) + $E.hide().data('autoHidden', true); + } + + /** + * @param {(string|!Object)} el + * @param {number=} outerSize + * @param {boolean=} [autoHide=false] + */ +, setOuterSize = function (el, outerSize, autoHide) { + if (_c[pane].dir=="horz") // pane = north or south + setOuterHeight(el, outerSize, autoHide); + else // pane = east or west + setOuterWidth(el, outerSize, autoHide); + } + + + /** + * Converts any 'size' params to a pixel/integer size, if not already + * If 'auto' or a decimal/percentage is passed as 'size', a pixel-size is calculated + * + /** + * @param {string} pane + * @param {(string|number)=} size + * @param {string=} [dir] + * @return {number} + */ +, _parseSize = function (pane, size, dir) { + if (!dir) dir = _c[pane].dir; + + if (isStr(size) && size.match(/%/)) + size = (size === '100%') ? -1 : parseInt(size, 10) / 100; // convert % to decimal + + if (size === 0) + return 0; + else if (size >= 1) + return parseInt(size, 10); + + var o = options, avail = 0; + if (dir=="horz") // north or south or center.minHeight + avail = sC.innerHeight - ($Ps.north ? o.north.spacing_open : 0) - ($Ps.south ? o.south.spacing_open : 0); + else if (dir=="vert") // east or west or center.minWidth + avail = sC.innerWidth - ($Ps.west ? o.west.spacing_open : 0) - ($Ps.east ? o.east.spacing_open : 0); + + if (size === -1) // -1 == 100% + return avail; + else if (size > 0) // percentage, eg: .25 + return round(avail * size); + else if (pane=="center") + return 0; + else { // size < 0 || size=='auto' || size==Missing || size==Invalid + // auto-size the pane + var dim = (dir === "horz" ? "height" : "width") + , $P = $Ps[pane] + , $C = dim === 'height' ? $Cs[pane] : false + , vis = $.layout.showInvisibly($P) // show pane invisibly if hidden + , szP = $P.css(dim) // SAVE current pane size + , szC = $C ? $C.css(dim) : 0 // SAVE current content size + ; + $P.css(dim, "auto"); + if ($C) $C.css(dim, "auto"); + size = (dim === "height") ? $P.outerHeight() : $P.outerWidth(); // MEASURE + $P.css(dim, szP).css(vis); // RESET size & visibility + if ($C) $C.css(dim, szC); + return size; + } + } + + /** + * Calculates current 'size' (outer-width or outer-height) of a border-pane - optionally with 'pane-spacing' added + * + * @param {(string|!Object)} pane + * @param {boolean=} [inclSpace=false] + * @return {number} Returns EITHER Width for east/west panes OR Height for north/south panes - adjusted for boxModel & browser + */ +, getPaneSize = function (pane, inclSpace) { + var + $P = $Ps[pane] + , o = options[pane] + , s = state[pane] + , oSp = (inclSpace ? o.spacing_open : 0) + , cSp = (inclSpace ? o.spacing_closed : 0) + ; + if (!$P || s.isHidden) + return 0; + else if (s.isClosed || (s.isSliding && inclSpace)) + return cSp; + else if (_c[pane].dir === "horz") + return $P.outerHeight() + oSp; + else // dir === "vert" + return $P.outerWidth() + oSp; + } + + /** + * Calculate min/max pane dimensions and limits for resizing + * + * @param {string} pane + * @param {boolean=} [slide=false] + */ +, setSizeLimits = function (pane, slide) { + if (!isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , dir = c.dir + , side = c.side.toLowerCase() + , type = c.sizeType.toLowerCase() + , isSliding = (slide != undefined ? slide : s.isSliding) // only open() passes 'slide' param + , $P = $Ps[pane] + , paneSpacing = o.spacing_open + // measure the pane on the *opposite side* from this pane + , altPane = _c.oppositeEdge[pane] + , altS = state[altPane] + , $altP = $Ps[altPane] + , altPaneSize = (!$altP || altS.isVisible===false || altS.isSliding ? 0 : (dir=="horz" ? $altP.outerHeight() : $altP.outerWidth())) + , altPaneSpacing = ((!$altP || altS.isHidden ? 0 : options[altPane][ altS.isClosed !== false ? "spacing_closed" : "spacing_open" ]) || 0) + // limitSize prevents this pane from 'overlapping' opposite pane + , containerSize = (dir=="horz" ? sC.innerHeight : sC.innerWidth) + , minCenterDims = cssMinDims("center") + , minCenterSize = dir=="horz" ? max(options.center.minHeight, minCenterDims.minHeight) : max(options.center.minWidth, minCenterDims.minWidth) + // if pane is 'sliding', then ignore center and alt-pane sizes - because 'overlays' them + , limitSize = (containerSize - paneSpacing - (isSliding ? 0 : (_parseSize("center", minCenterSize, dir) + altPaneSize + altPaneSpacing))) + , minSize = s.minSize = max( _parseSize(pane, o.minSize), cssMinDims(pane).minSize ) + , maxSize = s.maxSize = min( (o.maxSize ? _parseSize(pane, o.maxSize) : 100000), limitSize ) + , r = s.resizerPosition = {} // used to set resizing limits + , top = sC.insetTop + , left = sC.insetLeft + , W = sC.innerWidth + , H = sC.innerHeight + , rW = o.spacing_open // subtract resizer-width to get top/left position for south/east + ; + switch (pane) { + case "north": r.min = top + minSize; + r.max = top + maxSize; + break; + case "west": r.min = left + minSize; + r.max = left + maxSize; + break; + case "south": r.min = top + H - maxSize - rW; + r.max = top + H - minSize - rW; + break; + case "east": r.min = left + W - maxSize - rW; + r.max = left + W - minSize - rW; + break; + }; + } + + /** + * Returns data for setting the size/position of center pane. Also used to set Height for east/west panes + * + * @return JSON Returns a hash of all dimensions: top, bottom, left, right, (outer) width and (outer) height + */ +, calcNewCenterPaneDims = function () { + var d = { + top: getPaneSize("north", true) // true = include 'spacing' value for pane + , bottom: getPaneSize("south", true) + , left: getPaneSize("west", true) + , right: getPaneSize("east", true) + , width: 0 + , height: 0 + }; + + // NOTE: sC = state.container + // calc center-pane outer dimensions + d.width = sC.innerWidth - d.left - d.right; // outerWidth + d.height = sC.innerHeight - d.bottom - d.top; // outerHeight + // add the 'container border/padding' to get final positions relative to the container + d.top += sC.insetTop; + d.bottom += sC.insetBottom; + d.left += sC.insetLeft; + d.right += sC.insetRight; + + return d; + } + + + /** + * @param {!Object} el + * @param {boolean=} [allStates=false] + */ +, getHoverClasses = function (el, allStates) { + var + $El = $(el) + , type = $El.data("layoutRole") + , pane = $El.data("layoutEdge") + , o = options[pane] + , root = o[type +"Class"] + , _pane = "-"+ pane // eg: "-west" + , _open = "-open" + , _closed = "-closed" + , _slide = "-sliding" + , _hover = "-hover " // NOTE the trailing space + , _state = $El.hasClass(root+_closed) ? _closed : _open + , _alt = _state === _closed ? _open : _closed + , classes = (root+_hover) + (root+_pane+_hover) + (root+_state+_hover) + (root+_pane+_state+_hover) + ; + if (allStates) // when 'removing' classes, also remove alternate-state classes + classes += (root+_alt+_hover) + (root+_pane+_alt+_hover); + + if (type=="resizer" && $El.hasClass(root+_slide)) + classes += (root+_slide+_hover) + (root+_pane+_slide+_hover); + + return $.trim(classes); + } +, addHover = function (evt, el) { + var $E = $(el || this); + if (evt && $E.data("layoutRole") === "toggler") + evt.stopPropagation(); // prevent triggering 'slide' on Resizer-bar + $E.addClass( getHoverClasses($E) ); + } +, removeHover = function (evt, el) { + var $E = $(el || this); + $E.removeClass( getHoverClasses($E, true) ); + } + +, onResizerEnter = function (evt) { // ALSO called by toggler.mouseenter + if ($.fn.disableSelection) + $("body").disableSelection(); + } +, onResizerLeave = function (evt, el) { + var + e = el || this // el is only passed when called by the timer + , pane = $(e).data("layoutEdge") + , name = pane +"ResizerLeave" + ; + timer.clear(pane+"_openSlider"); // cancel slideOpen timer, if set + timer.clear(name); // cancel enableSelection timer - may re/set below + // this method calls itself on a timer because it needs to allow + // enough time for dragging to kick-in and set the isResizing flag + // dragging has a 100ms delay set, so this delay must be >100 + if (!el) // 1st call - mouseleave event + timer.set(name, function(){ onResizerLeave(evt, e); }, 200); + // if user is resizing, then dragStop will enableSelection(), so can skip it here + else if (!state[pane].isResizing && $.fn.enableSelection) // 2nd call - by timer + $("body").enableSelection(); + } + +/* + * ########################### + * INITIALIZATION METHODS + * ########################### + */ + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see none - triggered onInit + * @return mixed true = fully initialized | false = panes not initialized (yet) | 'cancel' = abort + */ +, _create = function () { + // initialize config/options + initOptions(); + var o = options; + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // init plugins for this layout, if there are any (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onCreate ); + + // options & state have been initialized, so now run beforeLoad callback + // onload will CANCEL layout creation if it returns false + if (false === _runCallbacks("onload_start")) + return 'cancel'; + + // initialize the container element + _initContainer(); + + // bind hotkey function - keyDown - if required + initHotkeys(); + + // bind window.onunload + $(window).bind("unload."+ sID, unload); + + // init plugins for this layout, if there are any (eg: customButtons) + runPluginCallbacks( Instance, $.layout.onLoad ); + + // if layout elements are hidden, then layout WILL NOT complete initialization! + // initLayoutElements will set initialized=true and run the onload callback IF successful + if (o.initPanes) _initLayoutElements(); + + delete state.creatingLayout; + + return state.initialized; + } + + /** + * Initialize the layout IF not already + * + * @see All methods in Instance run this test + * @return boolean true = layoutElements have been initialized | false = panes are not initialized (yet) + */ +, isInitialized = function () { + if (state.initialized || state.creatingLayout) return true; // already initialized + else return _initLayoutElements(); // try to init panes NOW + } + + /** + * Initialize the layout - called automatically whenever an instance of layout is created + * + * @see _create() & isInitialized + * @return An object pointer to the instance created + */ +, _initLayoutElements = function (retry) { + // initialize config/options + var o = options; + + // CANNOT init panes inside a hidden container! + if (!$N.is(":visible")) { + // handle Chrome bug where popup window 'has no height' + // if layout is BODY element, try again in 50ms + // SEE: http://layout.jquery-dev.net/samples/test_popup_window.html + if ( !retry && browser.webkit && $N[0].tagName === "BODY" ) + setTimeout(function(){ _initLayoutElements(true); }, 50); + return false; + } + + // a center pane is required, so make sure it exists + if (!getPane("center").length) { + if (options.showErrorMessages) + _log( lang.errCenterPaneMissing, true ); + return false; + } + + // TEMP state so isInitialized returns true during init process + state.creatingLayout = true; + + // update Container dims + $.extend(sC, elDims( $N )); + + // initialize all layout elements + initPanes(); // size & position panes - calls initHandles() - which calls initResizable() + + if (o.scrollToBookmarkOnLoad) { + var l = self.location; + if (l.hash) l.replace( l.hash ); // scrollTo Bookmark + } + + // check to see if this layout 'nested' inside a pane + if (Instance.hasParentLayout) + o.resizeWithWindow = false; + // bind resizeAll() for 'this layout instance' to window.resize event + else if (o.resizeWithWindow) + $(window).bind("resize."+ sID, windowResize); + + delete state.creatingLayout; + state.initialized = true; + + // init plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onReady ); + + // now run the onload callback, if exists + _runCallbacks("onload_end"); + + return true; // elements initialized successfully + } + + /** + * Initialize nested layouts - called when _initLayoutElements completes + * + * NOT CURRENTLY USED + * + * @see _initLayoutElements + * @return An object pointer to the instance created + */ +, _initChildLayouts = function () { + $.each(_c.allPanes, function (idx, pane) { + if (options[pane].initChildLayout) + createChildLayout( pane ); + }); + } + + /** + * Initialize nested layouts for a specific pane - can optionally pass layout-options + * + * @see _initChildLayouts + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {Object=} [opts] Layout-options - if passed, will OVERRRIDE options[pane].childOptions + * @return An object pointer to the layout instance created - or null + */ +, createChildLayout = function (evt_or_pane, opts) { + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , C = children + ; + if ($P) { + var $C = $Cs[pane] + , o = opts || options[pane].childOptions + , d = "layout" + // determine which element is supposed to be the 'child container' + // if pane has a 'containerSelector' OR a 'content-div', use those instead of the pane + , $Cont = o.containerSelector ? $P.find( o.containerSelector ) : ($C || $P) + , containerFound = $Cont.length + // see if a child-layout ALREADY exists on this element + , child = containerFound ? (C[pane] = $Cont.data(d) || null) : null + ; + // if no layout exists, but childOptions are set, try to create the layout now + if (!child && containerFound && o) + child = C[pane] = $Cont.eq(0).layout(o) || null; + if (child) + child.hasParentLayout = true; // set parent-flag in child + } + Instance[pane].child = C[pane]; // ALWAYS set pane-object pointer, even if null + } + +, windowResize = function () { + var delay = Number(options.resizeWithWindowDelay); + if (delay < 10) delay = 100; // MUST have a delay! + // resizing uses a delay-loop because the resize event fires repeatly - except in FF, but delay anyway + timer.clear("winResize"); // if already running + timer.set("winResize", function(){ + timer.clear("winResize"); + timer.clear("winResizeRepeater"); + var dims = elDims( $N ); + // only trigger resizeAll() if container has changed size + if (dims.innerWidth !== sC.innerWidth || dims.innerHeight !== sC.innerHeight) + resizeAll(); + }, delay); + // ALSO set fixed-delay timer, if not already running + if (!timer.data["winResizeRepeater"]) setWindowResizeRepeater(); + } + +, setWindowResizeRepeater = function () { + var delay = Number(options.resizeWithWindowMaxDelay); + if (delay > 0) + timer.set("winResizeRepeater", function(){ setWindowResizeRepeater(); resizeAll(); }, delay); + } + +, unload = function () { + var o = options; + + _runCallbacks("onunload_start"); + + // trigger plugin callabacks for this layout (eg: stateManagement) + runPluginCallbacks( Instance, $.layout.onUnload ); + + _runCallbacks("onunload_end"); + } + + /** + * Validate and initialize container CSS and events + * + * @see _create() + */ +, _initContainer = function () { + var + N = $N[0] + , tag = sC.tagName = N.tagName + , id = sC.id = N.id + , cls = sC.className = N.className + , o = options + , name = o.name + , fullPage= (tag === "BODY") + , props = "overflow,position,margin,padding,border" + , css = "layoutCSS" + , CSS = {} + , hid = "hidden" // used A LOT! + // see if this container is a 'pane' inside an outer-layout + , parent = $N.data("parentLayout") // parent-layout Instance + , pane = $N.data("layoutEdge") // pane-name in parent-layout + , isChild = parent && pane + ; + // sC -> state.container + sC.selector = $N.selector.split(".slice")[0]; + sC.ref = (o.name ? o.name +' layout / ' : '') + tag + (id ? "#"+id : cls ? '.['+cls+']' : ''); // used in messages + + $N .data({ + layout: Instance + , layoutContainer: sID // FLAG to indicate this is a layout-container - contains unique internal ID + }) + .addClass(o.containerClass) + ; + var layoutMethods = { + destroy: '' + , initPanes: '' + , resizeAll: 'resizeAll' + , resize: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in layoutMethods) { + $N.bind("layout"+ name.toLowerCase() +"."+ sID, Instance[ layoutMethods[name] || name ]); + } + + // if this container is another layout's 'pane', then set child/parent pointers + if (isChild) { + // update parent flag + Instance.hasParentLayout = true; + // set pointers to THIS child-layout (Instance) in parent-layout + // NOTE: parent.PANE.child is an ALIAS to parent.children.PANE + parent[pane].child = parent.children[pane] = $N.data("layout"); + } + + // SAVE original container CSS for use in destroy() + if (!$N.data(css)) { + // handle props like overflow different for BODY & HTML - has 'system default' values + if (fullPage) { + CSS = $.extend( elCSS($N, props), { + height: $N.css("height") + , overflow: $N.css("overflow") + , overflowX: $N.css("overflowX") + , overflowY: $N.css("overflowY") + }); + // ALSO SAVE CSS + var $H = $("html"); + $H.data(css, { + height: "auto" // FF would return a fixed px-size! + , overflow: $H.css("overflow") + , overflowX: $H.css("overflowX") + , overflowY: $H.css("overflowY") + }); + } + else // handle props normally for non-body elements + CSS = elCSS($N, props+",top,bottom,left,right,width,height,overflow,overflowX,overflowY"); + + $N.data(css, CSS); + } + + try { // format html/body if this is a full page layout + if (fullPage) { + $("html").css({ + height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + }); + $("body").css({ + position: "relative" + , height: "100%" + , overflow: hid + , overflowX: hid + , overflowY: hid + , margin: 0 + , padding: 0 // TODO: test whether body-padding could be handled? + , border: "none" // a body-border creates problems because it cannot be measured! + }); + + // set current layout-container dimensions + $.extend(sC, elDims( $N )); + } + else { // set required CSS for overflow and position + // ENSURE container will not 'scroll' + CSS = { overflow: hid, overflowX: hid, overflowY: hid } + var + p = $N.css("position") + , h = $N.css("height") + ; + // if this is a NESTED layout, then container/outer-pane ALREADY has position and height + if (!isChild) { + if (!p || !p.match(/fixed|absolute|relative/)) + CSS.position = "relative"; // container MUST have a 'position' + /* + if (!h || h=="auto") + CSS.height = "100%"; // container MUST have a 'height' + */ + } + $N.css( CSS ); + + // set current layout-container dimensions + if ( $N.is(":visible") ) { + $.extend(sC, elDims( $N )); + if (o.showErrorMessages && sC.innerHeight < 1) + _log( lang.errContainerHeight.replace(/CONTAINER/, sC.ref), true ); + } + } + } catch (ex) {} + } + + /** + * Bind layout hotkeys - if options enabled + * + * @see _create() and addPane() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHotkeys = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + // bind keyDown to capture hotkeys, if option enabled for ANY pane + $.each(panes, function (i, pane) { + var o = options[pane]; + if (o.enableCursorHotkey || o.customHotkey) { + $(document).bind("keydown."+ sID, keyDown); // only need to bind this ONCE + return false; // BREAK - binding was done + } + }); + } + + /** + * Build final OPTIONS data + * + * @see _create() + */ +, initOptions = function () { + var data, d, pane, key, val, i, c, o; + + // reprocess user's layout-options to have correct options sub-key structure + opts = $.layout.transformData( opts ); // panes = default subkey + + // auto-rename old options for backward compatibility + opts = $.layout.backwardCompatibility.renameAllOptions( opts ); + + // if user-options has 'panes' key (pane-defaults), process it... + if (!$.isEmptyObject(opts.panes)) { + // REMOVE any pane-defaults that MUST be set per-pane + data = $.layout.optionsMap.noDefault; + for (i=0, c=data.length; i 0) { + z.pane_normal = zo; + z.content_mask = max(zo+1, z.content_mask); // MIN = +1 + z.resizer_normal = max(zo+2, z.resizer_normal); // MIN = +2 + } + + function createFxOptions ( pane ) { + var o = options[pane] + , d = options.panes; + // ensure fxSettings key to avoid errors + if (!o.fxSettings) o.fxSettings = {}; + if (!d.fxSettings) d.fxSettings = {}; + + $.each(["_open","_close","_size"], function (i,n) { + var + sName = "fxName"+ n + , sSpeed = "fxSpeed"+ n + , sSettings = "fxSettings"+ n + // recalculate fxName according to specificity rules + , fxName = o[sName] = + o[sName] // options.west.fxName_open + || d[sName] // options.panes.fxName_open + || o.fxName // options.west.fxName + || d.fxName // options.panes.fxName + || "none" // MEANS $.layout.defaults.panes.fxName == "" || false || null || 0 + ; + // validate fxName to ensure is valid effect - MUST have effect-config data in options.effects + if (fxName === "none" || !$.effects || !$.effects[fxName] || !options.effects[fxName]) + fxName = o[sName] = "none"; // effect not loaded OR unrecognized fxName + + // set vars for effects subkeys to simplify logic + var fx = options.effects[fxName] || {} // effects.slide + , fx_all = fx.all || null // effects.slide.all + , fx_pane = fx[pane] || null // effects.slide.west + ; + // create fxSpeed[_open|_close|_size] + o[sSpeed] = + o[sSpeed] // options.west.fxSpeed_open + || d[sSpeed] // options.west.fxSpeed_open + || o.fxSpeed // options.west.fxSpeed + || d.fxSpeed // options.panes.fxSpeed + || null // DEFAULT - let fxSetting.duration control speed + ; + // create fxSettings[_open|_close|_size] + o[sSettings] = $.extend( + {} + , fx_all // effects.slide.all + , fx_pane // effects.slide.west + , d.fxSettings // options.panes.fxSettings + , o.fxSettings // options.west.fxSettings + , d[sSettings] // options.panes.fxSettings_open + , o[sSettings] // options.west.fxSettings_open + ); + }); + + // DONE creating action-specific-settings for this pane, + // so DELETE generic options - are no longer meaningful + delete o.fxName; + delete o.fxSpeed; + delete o.fxSettings; + } + + // DELETE 'panes' key now that we are done - values were copied to EACH pane + delete options.panes; + } + + /** + * Initialize module objects, styling, size and position for all panes + * + * @see _initElements() + * @param {string} pane The pane to process + */ +, getPane = function (pane) { + var sel = options[pane].paneSelector + if (sel.substr(0,1)==="#") // ID selector + // NOTE: elements selected 'by ID' DO NOT have to be 'children' + return $N.find(sel).eq(0); + else { // class or other selector + var $P = $N.children(sel).eq(0); + // look for the pane nested inside a 'form' element + return $P.length ? $P : $N.children("form:first").children(sel).eq(0); + } + } + +, initPanes = function () { + // NOTE: do north & south FIRST so we can measure their height - do center LAST + $.each(_c.allPanes, function (idx, pane) { + addPane( pane, true ); + }); + + // init the pane-handles NOW in case we have to hide or close the pane below + initHandles(); + + // now that all panes have been initialized and initially-sized, + // make sure there is really enough space available for each pane + $.each(_c.borderPanes, function (i, pane) { + if ($Ps[pane] && state[pane].isVisible) { // pane is OPEN + setSizeLimits(pane); + makePaneFit(pane); // pane may be Closed, Hidden or Resized by makePaneFit() + } + }); + // size center-pane AGAIN in case we 'closed' a border-pane in loop above + sizeMidPanes("center"); + + // Chrome/Webkit sometimes fires callbacks BEFORE it completes resizing! + // Before RC30.3, there was a 10ms delay here, but that caused layout + // to load asynchrously, which is BAD, so try skipping delay for now + + // process pane contents and callbacks, and init/resize child-layout if exists + $.each(_c.allPanes, function (i, pane) { + var o = options[pane]; + if ($Ps[pane]) { + if (state[pane].isVisible) { // pane is OPEN + sizeContent(pane); + // trigger pane.onResize if triggerEventsOnLoad = true + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); + } + // init childLayout - even if pane is not visible + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + }); + } + + /** + * Add a pane to the layout - subroutine of initPanes() + * + * @see initPanes() + * @param {string} pane The pane to process + * @param {boolean=} [force=false] Size content after init + */ +, addPane = function (pane, force) { + if (!force && !isInitialized()) return; + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , fx = s.fx + , dir = c.dir + , spacing = o.spacing_open || 0 + , isCenter = (pane === "center") + , CSS = {} + , $P = $Ps[pane] + , size, minSize, maxSize + ; + // if pane-pointer already exists, remove the old one first + if ($P) + removePane( pane, false, true, false ); + else + $Cs[pane] = false; // init + + $P = $Ps[pane] = getPane(pane); + if (!$P.length) { + $Ps[pane] = false; // logic + return; + } + + // SAVE original Pane CSS + if (!$P.data("layoutCSS")) { + var props = "position,top,left,bottom,right,width,height,overflow,zIndex,display,backgroundColor,padding,margin,border"; + $P.data("layoutCSS", elCSS($P, props)); + } + + // create alias for pane data in Instance - initHandles will add more + Instance[pane] = { name: pane, pane: $Ps[pane], content: $Cs[pane], options: options[pane], state: state[pane], child: children[pane] }; + + // add classes, attributes & events + $P .data({ + parentLayout: Instance // pointer to Layout Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "pane" + }) + .css(c.cssReq).css("zIndex", options.zIndexes.pane_normal) + .css(o.applyDemoStyles ? c.cssDemo : {}) // demo styles + .addClass( o.paneClass +" "+ o.paneClass+"-"+pane ) // default = "ui-layout-pane ui-layout-pane-west" - may be a dupe of 'paneSelector' + .bind("mouseenter."+ sID, addHover ) + .bind("mouseleave."+ sID, removeHover ) + ; + var paneMethods = { + hide: '' + , show: '' + , toggle: '' + , close: '' + , open: '' + , slideOpen: '' + , slideClose: '' + , slideToggle: '' + , size: 'manualSizePane' + , sizePane: 'manualSizePane' + , sizeContent: '' + , sizeHandles: '' + , enableClosable: '' + , disableClosable: '' + , enableSlideable: '' + , disableSlideable: '' + , enableResizable: '' + , disableResizable: '' + , swapPanes: 'swapPanes' + , swap: 'swapPanes' + , move: 'swapPanes' + , removePane: 'removePane' + , remove: 'removePane' + , createChildLayout: '' + , resizeChildLayout: '' + , resizeAll: 'resizeAll' + , resizeLayout: 'resizeAll' + } + , name; + // loop hash and bind all methods - include layoutID namespacing + for (name in paneMethods) { + $P.bind("layoutpane"+ name.toLowerCase() +"."+ sID, Instance[ paneMethods[name] || name ]); + } + + // see if this pane has a 'scrolling-content element' + initContent(pane, false); // false = do NOT sizeContent() - called later + + if (!isCenter) { + // call _parseSize AFTER applying pane classes & styles - but before making visible (if hidden) + // if o.size is auto or not valid, then MEASURE the pane and use that as its 'size' + size = s.size = _parseSize(pane, o.size); + minSize = _parseSize(pane,o.minSize) || 1; + maxSize = _parseSize(pane,o.maxSize) || 100000; + if (size > 0) size = max(min(size, maxSize), minSize); + + // state for border-panes + s.isClosed = false; // true = pane is closed + s.isSliding = false; // true = pane is currently open by 'sliding' over adjacent panes + s.isResizing= false; // true = pane is in process of being resized + s.isHidden = false; // true = pane is hidden - no spacing, resizer or toggler is visible! + + // array for 'pin buttons' whose classNames are auto-updated on pane-open/-close + if (!s.pins) s.pins = []; + } + // states common to ALL panes + s.tagName = $P[0].tagName; + s.edge = pane; // useful if pane is (or about to be) 'swapped' - easy find out where it is (or is going) + s.noRoom = false; // true = pane 'automatically' hidden due to insufficient room - will unhide automatically + s.isVisible = true; // false = pane is invisible - closed OR hidden - simplify logic + + // set css-position to account for container borders & padding + switch (pane) { + case "north": CSS.top = sC.insetTop; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "south": CSS.bottom = sC.insetBottom; + CSS.left = sC.insetLeft; + CSS.right = sC.insetRight; + break; + case "west": CSS.left = sC.insetLeft; // top, bottom & height set by sizeMidPanes() + break; + case "east": CSS.right = sC.insetRight; // ditto + break; + case "center": // top, left, width & height set by sizeMidPanes() + } + + if (dir === "horz") // north or south pane + CSS.height = cssH($P, size); + else if (dir === "vert") // east or west pane + CSS.width = cssW($P, size); + //else if (isCenter) {} + + $P.css(CSS); // apply size -- top, bottom & height will be set by sizeMidPanes + if (dir != "horz") sizeMidPanes(pane, true); // true = skipCallback + + // close or hide the pane if specified in settings + if (o.initClosed && o.closable && !o.initHidden) + close(pane, true, true); // true, true = force, noAnimation + else if (o.initHidden || o.initClosed) + hide(pane); // will be completely invisible - no resizer or spacing + else if (!s.noRoom) + // make the pane visible - in case was initially hidden + $P.css("display","block"); + // ELSE setAsOpen() - called later by initHandles() + + // RESET visibility now - pane will appear IF display:block + $P.css("visibility","visible"); + + // check option for auto-handling of pop-ups & drop-downs + if (o.showOverflowOnHover) + $P.hover( allowOverflow, resetOverflow ); + + // if manually adding a pane AFTER layout initialization, then... + if (state.initialized) { + initHandles( pane ); + initHotkeys( pane ); + resizeAll(); // will sizeContent if pane is visible + if (s.isVisible) { // pane is OPEN + if (o.triggerEventsOnLoad) + _runCallbacks("onresize_end", pane); + else // automatic if onresize called, otherwise call it specifically + // resize child - IF inner-layout already exists (created before this layout) + resizeChildLayout(pane); // a previously existing childLayout + } + if (o.initChildLayout && o.childOptions) + createChildLayout(pane); + } + } + + /** + * Initialize module objects, styling, size and position for all resize bars and toggler buttons + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initHandles = function (panes) { + panes = panes ? panes.split(",") : _c.borderPanes; + + // create toggler DIVs for each pane, and set object pointers for them, eg: $R.north = north toggler DIV + $.each(panes, function (i, pane) { + var $P = $Ps[pane]; + $Rs[pane] = false; // INIT + $Ts[pane] = false; + if (!$P) return; // pane does not exist - skip + + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , rClass = o.resizerClass + , tClass = o.togglerClass + , side = c.side.toLowerCase() + , spacing = (s.isVisible ? o.spacing_open : o.spacing_closed) + , _pane = "-"+ pane // used for classNames + , _state = (s.isVisible ? "-open" : "-closed") // used for classNames + , I = Instance[pane] + // INIT RESIZER BAR + , $R = I.resizer = $Rs[pane] = $("
            ") + // INIT TOGGLER BUTTON + , $T = I.toggler = (o.closable ? $Ts[pane] = $("
            ") : false) + ; + + //if (s.isVisible && o.resizable) ... handled by initResizable + if (!s.isVisible && o.slidable) + $R.attr("title", o.sliderTip).css("cursor", o.sliderCursor); + + $R // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "paneLeft-resizer" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-resizer" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "resizer" + }) + .css(_c.resizers.cssReq).css("zIndex", options.zIndexes.resizer_normal) + .css(o.applyDemoStyles ? _c.resizers.cssDemo : {}) // add demo styles + .addClass(rClass +" "+ rClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if resizing is not enabled - handle with CSS instead + .hover(onResizerEnter, onResizerLeave) // ALWAYS NEED resizer.mouseleave to balance toggler.mouseenter + .appendTo($N) // append DIV to container + ; + + if ($T) { + $T // if paneSelector is an ID, then create a matching ID for the resizer, eg: "#paneLeft" => "#paneLeft-toggler" + .attr("id", (o.paneSelector.substr(0,1)=="#" ? o.paneSelector.substr(1) + "-toggler" : "")) + .data({ + parentLayout: Instance + , layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + , layoutRole: "toggler" + }) + .css(_c.togglers.cssReq) // add base/required styles + .css(o.applyDemoStyles ? _c.togglers.cssDemo : {}) // add demo styles + .addClass(tClass +" "+ tClass+_pane) + .hover(addHover, removeHover) // ALWAYS add hover-classes, even if toggling is not enabled - handle with CSS instead + .bind("mouseenter", onResizerEnter) // NEED toggler.mouseenter because mouseenter MAY NOT fire on resizer + .appendTo($R) // append SPAN to resizer DIV + ; + // ADD INNER-SPANS TO TOGGLER + if (o.togglerContent_open) // ui-layout-open + $(""+ o.togglerContent_open +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .data("layoutRole", "togglerContent") + .data("layoutEdge", pane) + .addClass("content content-open") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-open instead! + ; + if (o.togglerContent_closed) // ui-layout-closed + $(""+ o.togglerContent_closed +"") + .data({ + layoutEdge: pane + , layoutRole: "togglerContent" + }) + .addClass("content content-closed") + .css("display","none") + .appendTo( $T ) + //.hover( addHover, removeHover ) // use ui-layout-toggler-west-hover .content-closed instead! + ; + // ADD TOGGLER.click/.hover + enableClosable(pane); + } + + // add Draggable events + initResizable(pane); + + // ADD CLASSNAMES & SLIDE-BINDINGS - eg: class="resizer resizer-west resizer-open" + if (s.isVisible) + setAsOpen(pane); // onOpen will be called, but NOT onResize + else { + setAsClosed(pane); // onClose will be called + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + }); + + // SET ALL HANDLE DIMENSIONS + sizeHandles(); + } + + + /** + * Initialize scrolling ui-layout-content div - if exists + * + * @see initPane() - or externally after an Ajax injection + * @param {string} [pane] The pane to process + * @param {boolean=} [resize=true] Size content after init + */ +, initContent = function (pane, resize) { + if (!isInitialized()) return; + var + o = options[pane] + , sel = o.contentSelector + , I = Instance[pane] + , $P = $Ps[pane] + , $C + ; + if (sel) $C = I.content = $Cs[pane] = (o.findNestedContent) + ? $P.find(sel).eq(0) // match 1-element only + : $P.children(sel).eq(0) + ; + if ($C && $C.length) { + $C.data("layoutRole", "content"); + // SAVE original Pane CSS + if (!$C.data("layoutCSS")) + $C.data("layoutCSS", elCSS($C, "height")); + $C.css( _c.content.cssReq ); + if (o.applyDemoStyles) { + $C.css( _c.content.cssDemo ); // add padding & overflow: auto to content-div + $P.css( _c.content.cssDemoPane ); // REMOVE padding/scrolling from pane + } + state[pane].content = {}; // init content state + if (resize !== false) sizeContent(pane); + // sizeContent() is called AFTER init of all elements + } + else + I.content = $Cs[pane] = false; + } + + + /** + * Add resize-bars to all panes that specify it in options + * -dependancy: $.fn.resizable - will skip if not found + * + * @see _create() + * @param {string=} [panes=""] The edge(s) to process + */ +, initResizable = function (panes) { + var draggingAvailable = $.layout.plugins.draggable + , side // set in start() + ; + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (idx, pane) { + var o = options[pane]; + if (!draggingAvailable || !$Ps[pane] || !o.resizable) { + o.resizable = false; + return true; // skip to next + } + + var s = state[pane] + , z = options.zIndexes + , c = _c[pane] + , side = c.dir=="horz" ? "top" : "left" + , opEdge = _c.oppositeEdge[pane] + , masks = pane +",center,"+ opEdge + (c.dir=="horz" ? ",west,east" : "") + , $P = $Ps[pane] + , $R = $Rs[pane] + , base = o.resizerClass + , lastPos = 0 // used when live-resizing + , r, live // set in start because may change + // 'drag' classes are applied to the ORIGINAL resizer-bar while dragging is in process + , resizerClass = base+"-drag" // resizer-drag + , resizerPaneClass = base+"-"+pane+"-drag" // resizer-north-drag + // 'helper' class is applied to the CLONED resizer-bar while it is being dragged + , helperClass = base+"-dragging" // resizer-dragging + , helperPaneClass = base+"-"+pane+"-dragging" // resizer-north-dragging + , helperLimitClass = base+"-dragging-limit" // resizer-drag + , helperPaneLimitClass = base+"-"+pane+"-dragging-limit" // resizer-north-drag + , helperClassesSet = false // logic var + ; + + if (!s.isClosed) + $R.attr("title", o.resizerTip) + .css("cursor", o.resizerCursor); // n-resize, s-resize, etc + + $R.draggable({ + containment: $N[0] // limit resizing to layout container + , axis: (c.dir=="horz" ? "y" : "x") // limit resizing to horz or vert axis + , delay: 0 + , distance: 1 + , grid: o.resizingGrid + // basic format for helper - style it using class: .ui-draggable-dragging + , helper: "clone" + , opacity: o.resizerDragOpacity + , addClasses: false // avoid ui-state-disabled class when disabled + //, iframeFix: o.draggableIframeFix // TODO: consider using when bug is fixed + , zIndex: z.resizer_drag + + , start: function (e, ui) { + // REFRESH options & state pointers in case we used swapPanes + o = options[pane]; + s = state[pane]; + // re-read options + live = o.livePaneResizing; + + // ondrag_start callback - will CANCEL hide if returns false + // TODO: dragging CANNOT be cancelled like this, so see if there is a way? + if (false === _runCallbacks("ondrag_start", pane)) return false; + + s.isResizing = true; // prevent pane from closing while resizing + timer.clear(pane+"_closeSlider"); // just in case already triggered + + // SET RESIZER LIMITS - used in drag() + setSizeLimits(pane); // update pane/resizer state + r = s.resizerPosition; + lastPos = ui.position[ side ] + + $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes + helperClassesSet = false; // reset logic var - see drag() + + // DISABLE TEXT SELECTION (probably already done by resizer.mouseOver) + $('body').disableSelection(); + + // MASK PANES CONTAINING IFRAMES, APPLETS OR OTHER TROUBLESOME ELEMENTS + showMasks( masks ); + } + + , drag: function (e, ui) { + if (!helperClassesSet) { // can only add classes after clone has been added to the DOM + //$(".ui-draggable-dragging") + ui.helper + .addClass( helperClass +" "+ helperPaneClass ) // add helper classes + .css({ right: "auto", bottom: "auto" }) // fix dir="rtl" issue + .children().css("visibility","hidden") // hide toggler inside dragged resizer-bar + ; + helperClassesSet = true; + // draggable bug!? RE-SET zIndex to prevent E/W resize-bar showing through N/S pane! + if (s.isSliding) $Ps[pane].css("zIndex", z.pane_sliding); + } + // CONTAIN RESIZER-BAR TO RESIZING LIMITS + var limit = 0; + if (ui.position[side] < r.min) { + ui.position[side] = r.min; + limit = -1; + } + else if (ui.position[side] > r.max) { + ui.position[side] = r.max; + limit = 1; + } + // ADD/REMOVE dragging-limit CLASS + if (limit) { + ui.helper.addClass( helperLimitClass +" "+ helperPaneLimitClass ); // at dragging-limit + window.defaultStatus = (limit>0 && pane.match(/north|west/)) || (limit<0 && pane.match(/south|east/)) ? lang.maxSizeWarning : lang.minSizeWarning; + } + else { + ui.helper.removeClass( helperLimitClass +" "+ helperPaneLimitClass ); // not at dragging-limit + window.defaultStatus = ""; + } + // DYNAMICALLY RESIZE PANES IF OPTION ENABLED + // won't trigger unless resizer has actually moved! + if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { + lastPos = ui.position[side]; + resizePanes(e, ui, pane) + } + } + + , stop: function (e, ui) { + $('body').enableSelection(); // RE-ENABLE TEXT SELECTION + window.defaultStatus = ""; // clear 'resizing limit' message from statusbar + $R.removeClass( resizerClass +" "+ resizerPaneClass ); // remove drag classes from Resizer + s.isResizing = false; + resizePanes(e, ui, pane, true, masks); // true = resizingDone + } + + }); + }); + + /** + * resizePanes + * + * Sub-routine called from stop() - and drag() if livePaneResizing + * + * @param {!Object} evt + * @param {!Object} ui + * @param {string} pane + * @param {boolean=} [resizingDone=false] + */ + var resizePanes = function (evt, ui, pane, resizingDone, masks) { + var dragPos = ui.position + , c = _c[pane] + , o = options[pane] + , s = state[pane] + , resizerPos + ; + switch (pane) { + case "north": resizerPos = dragPos.top; break; + case "west": resizerPos = dragPos.left; break; + case "south": resizerPos = sC.offsetHeight - dragPos.top - o.spacing_open; break; + case "east": resizerPos = sC.offsetWidth - dragPos.left - o.spacing_open; break; + }; + // remove container margin from resizer position to get the pane size + var newSize = resizerPos - sC["inset"+ c.side]; + + // Disable OR Resize Mask(s) created in drag.start + if (!resizingDone) { + // ensure we meet liveResizingTolerance criteria + if (Math.abs(newSize - s.size) < o.liveResizingTolerance) + return; // SKIP resize this time + // resize the pane + manualSizePane(pane, newSize, false, true); // true = noAnimation + sizeMasks(); // resize all visible masks + } + else { // resizingDone + // ondrag_end callback + if (false !== _runCallbacks("ondrag_end", pane)) + manualSizePane(pane, newSize, false, true); // true = noAnimation + hideMasks(); // hide all masks, which include panes with 'content/iframe-masks' + if (s.isSliding && masks) // RE-SHOW only 'object-masks' so objects won't show through sliding pane + showMasks( masks, true ); // true = onlyForObjects + } + }; + } + + /** + * sizeMask + * + * Needed to overlay a DIV over an IFRAME-pane because mask CANNOT be *inside* the pane + * Called when mask created, and during livePaneResizing + */ +, sizeMask = function () { + var $M = $(this) + , pane = $M.data("layoutMask") // eg: "west" + , s = state[pane] + ; + // only masks over an IFRAME-pane need manual resizing + if (s.tagName == "IFRAME" && s.isVisible) // no need to mask closed/hidden panes + $M.css({ + top: s.offsetTop + , left: s.offsetLeft + , width: s.outerWidth + , height: s.outerHeight + }); + /* ALT Method... + var $P = $Ps[pane]; + $M.css( $P.position() ).css({ width: $P[0].offsetWidth, height: $P[0].offsetHeight }); + */ + } +, sizeMasks = function () { + $Ms.each( sizeMask ); // resize all 'visible' masks + } + +, showMasks = function (panes, onlyForObjects) { + var a = panes ? panes.split(",") : $.layout.config.allPanes + , z = options.zIndexes + , o, s; + $.each(a, function(i,p){ + s = state[p]; + o = options[p]; + if (s.isVisible && ( (!onlyForObjects && o.maskContents) || o.maskObjects )) { + getMasks(p).each(function(){ + sizeMask.call(this); + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.display = "block"; + }); + } + }); + } + +, hideMasks = function () { + // ensure no pane is resizing - could be a timing issue + var skip; + $.each( $.layout.config.borderPanes, function(i,p){ + if (state[p].isResizing) { + skip = true; + return false; // BREAK + } + }); + if (!skip) + $Ms.hide(); // hide ALL masks + } + +, getMasks = function (pane) { + var $Masks = $([]) + , $M, i = 0, c = $Ms.length + ; + for (; i CSS + if (sC.tagName === "BODY" && ($N = $("html")).data(css)) // RESET CSS + $N.css( $N.data(css) ).removeData(css); + + // trigger plugins for this layout, if there are any + runPluginCallbacks( Instance, $.layout.onDestroy ); + + // trigger state-management and onunload callback + unload(); + + // clear the Instance of everything except for container & options (so could recreate) + // RE-CREATE: myLayout = myLayout.container.layout( myLayout.options ); + for (n in Instance) + if (!n.match(/^(container|options)$/)) delete Instance[ n ]; + // add a 'destroyed' flag to make it easy to check + Instance.destroyed = true; + + // if this is a child layout, CLEAR the child-pointer in the parent + /* for now the pointer REMAINS, but with only container, options and destroyed keys + if (parentPane) { + var layout = parentPane.pane.data("parentLayout"); + parentPane.child = layout.children[ parentPane.name ] = null; + } + */ + + return Instance; // for coding convenience + } + + /** + * Remove a pane from the layout - subroutine of destroy() + * + * @see destroy() + * @param {string} pane The pane to process + * @param {boolean=} [remove=false] Remove the DOM element? + * @param {boolean=} [skipResize=false] Skip calling resizeAll()? + */ +, removePane = function (evt_or_pane, remove, skipResize, destroyChild) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $C = $Cs[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + ; + //alert( '$P.length = '+ $P.length ); + // NOTE: elements can still exist even after remove() + // so check for missing data(), which is cleared by removed() + if ($P && $.isEmptyObject( $P.data() )) $P = false; + if ($C && $.isEmptyObject( $C.data() )) $C = false; + if ($R && $.isEmptyObject( $R.data() )) $R = false; + if ($T && $.isEmptyObject( $T.data() )) $T = false; + + if ($P) $P.stop(true, true); + + // check for a child layout + var o = options[pane] + , s = state[pane] + , d = "layout" + , css = "layoutCSS" + , child = children[pane] || ($P ? $P.data(d) : 0) || ($C ? $C.data(d) : 0) || null + , destroy = destroyChild !== undefined ? destroyChild : o.destroyChildLayout + ; + + // FIRST destroy the child-layout(s) + if (destroy && child && !child.destroyed) { + child.destroy(true); // tell child-layout to destroy ALL its child-layouts too + if (child.destroyed) // destroy was successful + child = null; // clear pointer for logic below + } + + if ($P && remove && !child) + $P.remove(); + else if ($P && $P[0]) { + // create list of ALL pane-classes that need to be removed + var root = o.paneClass // default="ui-layout-pane" + , pRoot = root +"-"+ pane // eg: "ui-layout-pane-west" + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + , classes = [ root, root+_open, root+_closed, root+_sliding, // generic classes + pRoot, pRoot+_open, pRoot+_closed, pRoot+_sliding ] // pane-specific classes + ; + $.merge(classes, getHoverClasses($P, true)); // ADD hover-classes + // remove all Layout classes from pane-element + $P .removeClass( classes.join(" ") ) // remove ALL pane-classes + .removeData("parentLayout") + .removeData("layoutPane") + .removeData("layoutRole") + .removeData("layoutEdge") + .removeData("autoHidden") // in case set + .unbind("."+ sID) // remove ALL Layout events + // TODO: remove these extra unbind commands when jQuery is fixed + //.unbind("mouseenter"+ sID) + //.unbind("mouseleave"+ sID) + ; + // do NOT reset CSS if this pane/content is STILL the container of a nested layout! + // the nested layout will reset its 'container' CSS when/if it is destroyed + if ($C && $C.data(d)) { + // a content-div may not have a specific width, so give it one to contain the Layout + $C.width( $C.width() ); + child.resizeAll(); // now resize the Layout + } + else if ($C) + $C.css( $C.data(css) ).removeData(css).removeData("layoutRole"); + // remove pane AFTER content in case there was a nested layout + if (!$P.data(d)) + $P.css( $P.data(css) ).removeData(css); + } + + // REMOVE pane resizer and toggler elements + if ($T) $T.remove(); + if ($R) $R.remove(); + + // CLEAR all pointers and state data + Instance[pane] = $Ps[pane] = $Cs[pane] = $Rs[pane] = $Ts[pane] = children[pane] = false; + s = { removed: true }; + + if (!skipResize) + resizeAll(); + } + + +/* + * ########################### + * ACTION METHODS + * ########################### + */ + +, _hidePane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , s = $P[0].style + ; + if (o.useOffscreenClose) { + if (!$P.data(_c.offscreenReset)) + $P.data(_c.offscreenReset, { left: s.left, right: s.right }); + $P.css( _c.offscreenCSS ); + } + else + $P.hide().removeData(_c.offscreenReset); + } + +, _showPane = function (pane) { + var $P = $Ps[pane] + , o = options[pane] + , off = _c.offscreenCSS + , old = $P.data(_c.offscreenReset) + , s = $P[0].style + ; + $P .show() // ALWAYS show, just in case + .removeData(_c.offscreenReset); + if (o.useOffscreenClose && old) { + if (s.left == off.left) + s.left = old.left; + if (s.right == off.right) + s.right = old.right; + } + } + + + /** + * Completely 'hides' a pane, including its spacing - as if it does not exist + * The pane is not actually 'removed' from the source, so can use 'show' to un-hide it + * + * @param {string} pane The pane being hidden, ie: north, south, east, or west + * @param {boolean=} [noAnimation=false] + */ +, hide = function (evt_or_pane, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || s.isHidden) return; // pane does not exist OR is already hidden + + // onhide_start callback - will CANCEL hide if returns false + if (state.initialized && false === _runCallbacks("onhide_start", pane)) return; + + s.isSliding = false; // just in case + + // now hide the elements + if ($R) $R.hide(); // hide resizer-bar + if (!state.initialized || s.isClosed) { + s.isClosed = true; // to trigger open-animation on show() + s.isHidden = true; + s.isVisible = false; + if (!state.initialized) + _hidePane(pane); // no animation when loading page + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center"); + if (state.initialized || o.triggerEventsOnLoad) + _runCallbacks("onhide_end", pane); + } + else { + s.isHiding = true; // used by onclose + close(pane, false, noAnimation); // adjust all panes to fit + } + } + + /** + * Show a hidden pane - show as 'closed' by default unless openPane = true + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [openPane=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, show = function (evt_or_pane, openPane, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + if (!$P || !s.isHidden) return; // pane does not exist OR is not hidden + + // onshow_start callback - will CANCEL show if returns false + if (false === _runCallbacks("onshow_start", pane)) return; + + s.isSliding = false; // just in case + s.isShowing = true; // used by onopen/onclose + //s.isHidden = false; - will be set by open/close - if not cancelled + + // now show the elements + //if ($R) $R.show(); - will be shown by open/close + if (openPane === false) + close(pane, true); // true = force + else + open(pane, false, noAnimation, noAlert); // adjust all panes to fit + } + + + /** + * Toggles a pane open/closed by calling either open or close + * + * @param {string} pane The pane being toggled, ie: north, south, east, or west + * @param {boolean=} [slide=false] + */ +, toggle = function (evt_or_pane, slide) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + ; + if (evt) // called from to $R.dblclick OR triggerPaneEvent + evt.stopImmediatePropagation(); + if (s.isHidden) + show(pane); // will call 'open' after unhiding it + else if (s.isClosed) + open(pane, !!slide); + else + close(pane); + } + + + /** + * Utility method used during init or other auto-processes + * + * @param {string} pane The pane being closed + * @param {boolean=} [setHandles=false] + */ +, _closePane = function (pane, setHandles) { + var + $P = $Ps[pane] + , s = state[pane] + ; + _hidePane(pane); + s.isClosed = true; + s.isVisible = false; + // UNUSED: if (setHandles) setAsClosed(pane, true); // true = force + } + + /** + * Close the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being closed, ie: north, south, east, or west + * @param {boolean=} [force=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [skipCallback=false] + */ +, close = function (evt_or_pane, force, noAnimation, skipCallback) { + var pane = evtPane.call(this, evt_or_pane); + // if pane has been initialized, but NOT the complete layout, close pane instantly + if (!state.initialized && $Ps[pane]) { + _closePane(pane); // INIT pane as closed + return; + } + if (!isInitialized()) return; + + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing, isHiding, wasSliding; + + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.closable && !s.isShowing && !s.isHiding) // invalid request // (!o.resizable && !o.closable) ??? + || (!force && s.isClosed && !s.isShowing) // already closed + ) return queueNext(); + + // onclose_start callback - will CANCEL hide if returns false + // SKIP if just 'showing' a hidden pane as 'closed' + var abort = !s.isShowing && false === _runCallbacks("onclose_start", pane); + + // transfer logic vars to temp vars + isShowing = s.isShowing; + isHiding = s.isHiding; + wasSliding = s.isSliding; + // now clear the logic vars (REQUIRED before aborting) + delete s.isShowing; + delete s.isHiding; + + if (abort) return queueNext(); + + doFX = !noAnimation && !s.isClosed && (o.fxName_close != "none"); + s.isMoving = true; + s.isClosed = true; + s.isVisible = false; + // update isHidden BEFORE sizing panes + if (isHiding) s.isHidden = true; + else if (isShowing) s.isHidden = false; + + if (s.isSliding) // pane is being closed, so UNBIND trigger events + bindStopSlidingEvents(pane, false); // will set isSliding=false + else // resize panes adjacent to this one + sizeMidPanes(_c[pane].dir === "horz" ? "" : "center", false); // false = NOT skipCallback + + // if this pane has a resizer bar, move it NOW - before animation + setAsClosed(pane); + + // CLOSE THE PANE + if (doFX) { // animate the close + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.hide( o.fxName_close, o.fxSettings_close, o.fxSpeed_close, function () { + lockPaneForFX(pane, false); // undo + if (s.isClosed) close_2(); + queueNext(); + }); + } + else { // hide the pane without animation + _hidePane(pane); + close_2(); + queueNext(); + }; + }); + + // SUBROUTINE + function close_2 () { + s.isMoving = false; + bindStartSlidingEvent(pane, true); // will enable if o.slidable = true + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane ); + } + + // hide any masks shown while closing + hideMasks(); + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad)) { + // onclose callback - UNLESS just 'showing' a hidden pane as 'closed' + if (!isShowing) _runCallbacks("onclose_end", pane); + // onhide OR onshow callback + if (isShowing) _runCallbacks("onshow_end", pane); + if (isHiding) _runCallbacks("onhide_end", pane); + } + } + } + + /** + * @param {string} pane The pane just closed, ie: north, south, east, or west + */ +, setAsClosed = function (pane) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _sliding= "-sliding" + , _closed = "-closed" + ; + $R + .css(side, sC[inset]) // move the resizer + .removeClass( rClass+_open +" "+ rClass+_pane+_open ) + .removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + .addClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .unbind("dblclick."+ sID) + ; + // DISABLE 'resizing' when closed - do this BEFORE bindStartSlidingEvent? + if (o.resizable && $.layout.plugins.draggable) + $R + .draggable("disable") + .removeClass("ui-state-disabled") // do NOT apply disabled styling - not suitable here + .css("cursor", "default") + .attr("title","") + ; + + // if pane has a toggler button, adjust that too + if ($T) { + $T + .removeClass( tClass+_open +" "+ tClass+_pane+_open ) + .addClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .attr("title", o.togglerTip_closed) // may be blank + ; + // toggler-content - if exists + $T.children(".content-open").hide(); + $T.children(".content-closed").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, false); + + if (state.initialized) { + // resize 'length' and position togglers for adjacent panes + sizeHandles(); + } + } + + /** + * Open the specified pane (animation optional), and resize all other panes as needed + * + * @param {string} pane The pane being opened, ie: north, south, east, or west + * @param {boolean=} [slide=false] + * @param {boolean=} [noAnimation=false] + * @param {boolean=} [noAlert=false] + */ +, open = function (evt_or_pane, slide, noAnimation, noAlert) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , c = _c[pane] + , doFX, isShowing + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + + if ( !$P + || (!o.resizable && !o.closable && !s.isShowing) // invalid request + || (s.isVisible && !s.isSliding) // already open + ) return queueNext(); + + // pane can ALSO be unhidden by just calling show(), so handle this scenario + if (s.isHidden && !s.isShowing) { + queueNext(); // call before show() because it needs the queue free + show(pane, true); + return; + } + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else + // make sure there is enough space available to open the pane + setSizeLimits(pane, slide); + + // onopen_start callback - will CANCEL open if returns false + var cbReturn = _runCallbacks("onopen_start", pane); + + if (cbReturn === "abort") + return queueNext(); + + // update pane-state again in case options were changed in onopen_start + if (cbReturn !== "NC") // NC = "No Callback" + setSizeLimits(pane, slide); + + if (s.minSize > s.maxSize) { // INSUFFICIENT ROOM FOR PANE TO OPEN! + syncPinBtns(pane, false); // make sure pin-buttons are reset + if (!noAlert && o.noRoomToOpenTip) + alert(o.noRoomToOpenTip); + return queueNext(); // ABORT + } + + if (slide) // START Sliding - will set isSliding=true + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (s.isSliding) // PIN PANE (stop sliding) - open pane 'normally' instead + bindStopSlidingEvents(pane, false); // UNBIND trigger events - will set isSliding=false + else if (o.slidable) + bindStartSlidingEvent(pane, false); // UNBIND trigger events + + s.noRoom = false; // will be reset by makePaneFit if 'noRoom' + makePaneFit(pane); + + // transfer logic var to temp var + isShowing = s.isShowing; + // now clear the logic var + delete s.isShowing; + + doFX = !noAnimation && s.isClosed && (o.fxName_open != "none"); + s.isMoving = true; + s.isVisible = true; + s.isClosed = false; + // update isHidden BEFORE sizing panes - WHY??? Old? + if (isShowing) s.isHidden = false; + + if (doFX) { // ANIMATE + // mask panes with objects + var masks = "center"+ (c.dir=="horz" ? ",west,east" : ""); + if (s.isSliding) masks += ","+ _c.oppositeEdge[pane]; + showMasks( masks, true ); // true = ONLY mask panes with maskObjects=true + lockPaneForFX(pane, true); // need to set left/top so animation will work + $P.show( o.fxName_open, o.fxSettings_open, o.fxSpeed_open, function() { + lockPaneForFX(pane, false); // undo + if (s.isVisible) open_2(); // continue + queueNext(); + }); + } + else { // no animation + _showPane(pane);// just show pane and... + open_2(); // continue + queueNext(); + }; + }); + + // SUBROUTINE + function open_2 () { + s.isMoving = false; + + // cure iframe display issues + _fixIframe(pane); + + // NOTE: if isSliding, then other panes are NOT 'resized' + if (!s.isSliding) { // resize all panes adjacent to this one + hideMasks(); // remove any masks shown while opening + sizeMidPanes(_c[pane].dir=="vert" ? "center" : "", false); // false = NOT skipCallback + } + + // set classes, position handles and execute callbacks... + setAsOpen(pane); + }; + + } + + /** + * @param {string} pane The pane just opened, ie: north, south, east, or west + * @param {boolean=} [skipCallback=false] + */ +, setAsOpen = function (pane, skipCallback) { + var + $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , o = options[pane] + , s = state[pane] + , side = _c[pane].side.toLowerCase() + , inset = "inset"+ _c[pane].side + , rClass = o.resizerClass + , tClass = o.togglerClass + , _pane = "-"+ pane // used for classNames + , _open = "-open" + , _closed = "-closed" + , _sliding= "-sliding" + ; + $R + .css(side, sC[inset] + getPaneSize(pane)) // move the resizer + .removeClass( rClass+_closed +" "+ rClass+_pane+_closed ) + .addClass( rClass+_open +" "+ rClass+_pane+_open ) + ; + if (s.isSliding) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + else // in case 'was sliding' + $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + + if (o.resizerDblClickToggle) + $R.bind("dblclick", toggle ); + removeHover( 0, $R ); // remove hover classes + if (o.resizable && $.layout.plugins.draggable) + $R .draggable("enable") + .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + else if (!s.isSliding) + $R.css("cursor", "default"); // n-resize, s-resize, etc + + // if pane also has a toggler button, adjust that too + if ($T) { + $T .removeClass( tClass+_closed +" "+ tClass+_pane+_closed ) + .addClass( tClass+_open +" "+ tClass+_pane+_open ) + .attr("title", o.togglerTip_open); // may be blank + removeHover( 0, $T ); // remove hover classes + // toggler-content - if exists + $T.children(".content-closed").hide(); + $T.children(".content-open").css("display","block"); + } + + // sync any 'pin buttons' + syncPinBtns(pane, !s.isSliding); + + // update pane-state dimensions - BEFORE resizing content + $.extend(s, elDims($P)); + + if (state.initialized) { + // resize resizer & toggler sizes for all panes + sizeHandles(); + // resize content every time pane opens - to be sure + sizeContent(pane, true); // true = remeasure headers/footers, even if 'pane.isMoving' + } + + if (!skipCallback && (state.initialized || o.triggerEventsOnLoad) && $P.is(":visible")) { + // onopen callback + _runCallbacks("onopen_end", pane); + // onshow callback - TODO: should this be here? + if (s.isShowing) _runCallbacks("onshow_end", pane); + + // ALSO call onresize because layout-size *may* have changed while pane was closed + if (state.initialized) + _runCallbacks("onresize_end", pane); + } + + // TODO: Somehow sizePane("north") is being called after this point??? + } + + + /** + * slideOpen / slideClose / slideToggle + * + * Pass-though methods for sliding + */ +, slideOpen = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , s = state[pane] + , delay = options[pane].slideDelay_open + ; + // prevent event from triggering on NEW resizer binding created below + if (evt) evt.stopImmediatePropagation(); + + if (s.isClosed && evt && evt.type === "mouseenter" && delay > 0) + // trigger = mouseenter - use a delay + timer.set(pane+"_openSlider", open_NOW, delay); + else + open_NOW(); // will unbind events if is already open + + /** + * SUBROUTINE for timed open + */ + function open_NOW () { + if (!s.isClosed) // skip if no longer closed! + bindStopSlidingEvents(pane, true); // BIND trigger events to close sliding-pane + else if (!s.isMoving) + open(pane, true); // true = slide - open() will handle binding + }; + } + +, slideClose = function (evt_or_pane) { + if (!isInitialized()) return; + var evt = evtObj(evt_or_pane) + , pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + , delay = s.isMoving ? 1000 : 300 // MINIMUM delay - option may override + ; + if (s.isClosed || s.isResizing) + return; // skip if already closed OR in process of resizing + else if (o.slideTrigger_close === "click") + close_NOW(); // close immediately onClick + else if (o.preventQuickSlideClose && s.isMoving) + return; // handle Chrome quick-close on slide-open + else if (o.preventPrematureSlideClose && evt && $.layout.isMouseOverElem(evt, $Ps[pane])) + return; // handle incorrect mouseleave trigger, like when over a SELECT-list in IE + else if (evt) // trigger = mouseleave - use a delay + // 1 sec delay if 'opening', else .3 sec + timer.set(pane+"_closeSlider", close_NOW, max(o.slideDelay_close, delay)); + else // called programically + close_NOW(); + + /** + * SUBROUTINE for timed close + */ + function close_NOW () { + if (s.isClosed) // skip 'close' if already closed! + bindStopSlidingEvents(pane, false); // UNBIND trigger events - TODO: is this needed here? + else if (!s.isMoving) + close(pane); // close will handle unbinding + }; + } + + /** + * @param {string} pane The pane being opened, ie: north, south, east, or west + */ +, slideToggle = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + toggle(pane, true); + } + + + /** + * Must set left/top on East/South panes so animation will work properly + * + * @param {string} pane The pane to lock, 'east' or 'south' - any other is ignored! + * @param {boolean} doLock true = set left/top, false = remove + */ +, lockPaneForFX = function (pane, doLock) { + var $P = $Ps[pane] + , s = state[pane] + , o = options[pane] + , z = options.zIndexes + ; + if (doLock) { + $P.css({ zIndex: z.pane_animate }); // overlay all elements during animation + if (pane=="south") + $P.css({ top: sC.insetTop + sC.innerHeight - $P.outerHeight() }); + else if (pane=="east") + $P.css({ left: sC.insetLeft + sC.innerWidth - $P.outerWidth() }); + } + else { // animation DONE - RESET CSS + // TODO: see if this can be deleted. It causes a quick-close when sliding in Chrome + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + if (pane=="south") + $P.css({ top: "auto" }); + // if pane is positioned 'off-screen', then DO NOT screw with it! + else if (pane=="east" && !$P.css("left").match(/\-99999/)) + $P.css({ left: "auto" }); + // fix anti-aliasing in IE - only needed for animations that change opacity + if (browser.msie && o.fxOpacityFix && o.fxName_open != "slide" && $P.css("filter") && $P.css("opacity") == 1) + $P[0].style.removeAttribute('filter'); + } + } + + + /** + * Toggle sliding functionality of a specific pane on/off by adding removing 'slide open' trigger + * + * @see open(), close() + * @param {string} pane The pane to enable/disable, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable sliding? + */ +, bindStartSlidingEvent = function (pane, enable) { + var o = options[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , evtName = o.slideTrigger_open.toLowerCase() + ; + if (!$R || (enable && !o.slidable)) return; + + // make sure we have a valid event + if (evtName.match(/mouseover/)) + evtName = o.slideTrigger_open = "mouseenter"; + else if (!evtName.match(/click|dblclick|mouseenter/)) + evtName = o.slideTrigger_open = "click"; + + $R + // add or remove event + [enable ? "bind" : "unbind"](evtName +'.'+ sID, slideOpen) + // set the appropriate cursor & title/tip + .css("cursor", enable ? o.sliderCursor : "default") + .attr("title", enable ? o.sliderTip : "") + ; + } + + /** + * Add or remove 'mouseleave' events to 'slide close' when pane is 'sliding' open or closed + * Also increases zIndex when pane is sliding open + * See bindStartSlidingEvent for code to control 'slide open' + * + * @see slideOpen(), slideClose() + * @param {string} pane The pane to process, 'north', 'south', etc. + * @param {boolean} enable Enable or Disable events? + */ +, bindStopSlidingEvents = function (pane, enable) { + var o = options[pane] + , s = state[pane] + , c = _c[pane] + , z = options.zIndexes + , evtName = o.slideTrigger_close.toLowerCase() + , action = (enable ? "bind" : "unbind") + , $P = $Ps[pane] + , $R = $Rs[pane] + ; + s.isSliding = enable; // logic + timer.clear(pane+"_closeSlider"); // just in case + + // remove 'slideOpen' event from resizer + // ALSO will raise the zIndex of the pane & resizer + if (enable) bindStartSlidingEvent(pane, false); + + // RE/SET zIndex - increases when pane is sliding-open, resets to normal when not + $P.css("zIndex", enable ? z.pane_sliding : z.pane_normal); + $R.css("zIndex", enable ? z.pane_sliding+2 : z.resizer_normal); // NOTE: mask = pane_sliding+1 + + // make sure we have a valid event + if (!evtName.match(/click|mouseleave/)) + evtName = o.slideTrigger_close = "mouseleave"; // also catches 'mouseout' + + // add/remove slide triggers + $R[action](evtName, slideClose); // base event on resize + // need extra events for mouseleave + if (evtName === "mouseleave") { + // also close on pane.mouseleave + $P[action]("mouseleave."+ sID, slideClose); + // cancel timer when mouse moves between 'pane' and 'resizer' + $R[action]("mouseenter."+ sID, cancelMouseOut); + $P[action]("mouseenter."+ sID, cancelMouseOut); + } + + if (!enable) + timer.clear(pane+"_closeSlider"); + else if (evtName === "click" && !o.resizable) { + // IF pane is not resizable (which already has a cursor and tip) + // then set the a cursor & title/tip on resizer when sliding + $R.css("cursor", enable ? o.sliderCursor : "default"); + $R.attr("title", enable ? o.togglerTip_open : ""); // use Toggler-tip, eg: "Close Pane" + } + + // SUBROUTINE for mouseleave timer clearing + function cancelMouseOut (evt) { + timer.clear(pane+"_closeSlider"); + evt.stopPropagation(); + } + } + + + /** + * Hides/closes a pane if there is insufficient room - reverses this when there is room again + * MUST have already called setSizeLimits() before calling this method + * + * @param {string} pane The pane being resized + * @param {boolean=} [isOpening=false] Called from onOpen? + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, makePaneFit = function (pane, isOpening, skipCallback, force) { + var + o = options[pane] + , s = state[pane] + , c = _c[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isSidePane = c.dir==="vert" + , hasRoom = false + ; + // special handling for center & east/west panes + if (pane === "center" || (isSidePane && s.noVerticalRoom)) { + // see if there is enough room to display the pane + // ERROR: hasRoom = s.minHeight <= s.maxHeight && (isSidePane || s.minWidth <= s.maxWidth); + hasRoom = (s.maxHeight >= 0); + if (hasRoom && s.noRoom) { // previously hidden due to noRoom, so show now + _showPane(pane); + if ($R) $R.show(); + s.isVisible = true; + s.noRoom = false; + if (isSidePane) s.noVerticalRoom = false; + _fixIframe(pane); + } + else if (!hasRoom && !s.noRoom) { // not currently hidden, so hide now + _hidePane(pane); + if ($R) $R.hide(); + s.isVisible = false; + s.noRoom = true; + } + } + + // see if there is enough room to fit the border-pane + if (pane === "center") { + // ignore center in this block + } + else if (s.minSize <= s.maxSize) { // pane CAN fit + hasRoom = true; + if (s.size > s.maxSize) // pane is too big - shrink it + sizePane(pane, s.maxSize, skipCallback, force, true); // true = noAnimation + else if (s.size < s.minSize) // pane is too small - enlarge it + sizePane(pane, s.minSize, skipCallback, force, true); + // need s.isVisible because new pseudoClose method keeps pane visible, but off-screen + else if ($R && s.isVisible && $P.is(":visible")) { + // make sure resizer-bar is positioned correctly + // handles situation where nested layout was 'hidden' when initialized + var side = c.side.toLowerCase() + , pos = s.size + sC["inset"+ c.side] + ; + if ($.layout.cssNum($R, side) != pos) $R.css( side, pos ); + } + + // if was previously hidden due to noRoom, then RESET because NOW there is room + if (s.noRoom) { + // s.noRoom state will be set by open or show + if (s.wasOpen && o.closable) { + if (o.autoReopen) + open(pane, false, true, true); // true = noAnimation, true = noAlert + else // leave the pane closed, so just update state + s.noRoom = false; + } + else + show(pane, s.wasOpen, true, true); // true = noAnimation, true = noAlert + } + } + else { // !hasRoom - pane CANNOT fit + if (!s.noRoom) { // pane not set as noRoom yet, so hide or close it now... + s.noRoom = true; // update state + s.wasOpen = !s.isClosed && !s.isSliding; + if (s.isClosed){} // SKIP + else if (o.closable) // 'close' if possible + close(pane, true, true); // true = force, true = noAnimation + else // 'hide' pane if cannot just be closed + hide(pane, true); // true = noAnimation + } + } + } + + + /** + * sizePane / manualSizePane + * sizePane is called only by internal methods whenever a pane needs to be resized + * manualSizePane is an exposed flow-through method allowing extra code when pane is 'manually resized' + * + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [noAnimation=false] + */ +, manualSizePane = function (evt_or_pane, size, skipCallback, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , o = options[pane] + , s = state[pane] + // if resizing callbacks have been delayed and resizing is now DONE, force resizing to complete... + , forceResize = o.livePaneResizing && !s.isResizing + ; + // ANY call to manualSizePane disables autoResize - ie, percentage sizing + o.autoResize = false; + // flow-through... + sizePane(pane, size, skipCallback, forceResize, noAnimation); // will animate resize if option enabled + } + + /** + * @param {string} pane The pane being resized + * @param {number} size The *desired* new size for this pane - will be validated + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] Force resizing even if does not seem necessary + * @param {boolean=} [noAnimation=false] + */ +, sizePane = function (evt_or_pane, size, skipCallback, force, noAnimation) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) // probably NEVER called from event? + , o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , side = _c[pane].side.toLowerCase() + , dimName = _c[pane].sizeType.toLowerCase() + , inset = "inset"+ _c[pane].side + , skipResizeWhileDragging = s.isResizing && !o.triggerEventsDuringLiveResize + , doFX = noAnimation !== true && o.animatePaneSizing + , oldSize, newSize + ; + // QUEUE in case another action/animation is in progress + $N.queue(function( queueNext ){ + // calculate 'current' min/max sizes + setSizeLimits(pane); // update pane-state + oldSize = s.size; + size = _parseSize(pane, size); // handle percentages & auto + size = max(size, _parseSize(pane, o.minSize)); + size = min(size, s.maxSize); + if (size < s.minSize) { // not enough room for pane! + queueNext(); // call before makePaneFit() because it needs the queue free + makePaneFit(pane, false, skipCallback); // will hide or close pane + return; + } + + // IF newSize is same as oldSize, then nothing to do - abort + if (!force && size === oldSize) + return queueNext(); + + // onresize_start callback CANNOT cancel resizing because this would break the layout! + if (!skipCallback && state.initialized && s.isVisible) + _runCallbacks("onresize_start", pane); + + // resize the pane, and make sure its visible + newSize = cssSize(pane, size); + + if (doFX && $P.is(":visible")) { // ANIMATE + var fx = $.layout.effects.size[pane] || $.layout.effects.size.all + , easing = o.fxSettings_size.easing || fx.easing + , z = options.zIndexes + , props = {}; + props[ dimName ] = newSize +'px'; + s.isMoving = true; + // overlay all elements during animation + $P.css({ zIndex: z.pane_animate }) + .show().animate( props, o.fxSpeed_size, easing, function(){ + // reset zIndex after animation + $P.css({ zIndex: (s.isSliding ? z.pane_sliding : z.pane_normal) }); + s.isMoving = false; + sizePane_2(); // continue + queueNext(); + }); + } + else { // no animation + $P.css( dimName, newSize ); // resize pane + // if pane is visible, then + if ($P.is(":visible")) + sizePane_2(); // continue + else { + // pane is NOT VISIBLE, so just update state data... + // when pane is *next opened*, it will have the new size + s.size = size; // update state.size + $.extend(s, elDims($P)); // update state dimensions + } + queueNext(); + }; + + }); + + // SUBROUTINE + function sizePane_2 () { + /* Panes are sometimes not sized precisely in some browsers!? + * This code will resize the pane up to 3 times to nudge the pane to the correct size + */ + var actual = dimName==='width' ? $P.outerWidth() : $P.outerHeight() + , tries = [{ + pane: pane + , count: 1 + , target: size + , actual: actual + , correct: (size === actual) + , attempt: size + , cssSize: newSize + }] + , lastTry = tries[0] + , msg = 'Inaccurate size after resizing the '+ pane +'-pane.' + ; + while ( !lastTry.correct ) { + thisTry = { pane: pane, count: lastTry.count+1, target: size }; + + if (lastTry.actual > size) + thisTry.attempt = max(0, lastTry.attempt - (lastTry.actual - size)); + else // lastTry.actual < size + thisTry.attempt = max(0, lastTry.attempt + (size - lastTry.actual)); + + thisTry.cssSize = cssSize(pane, thisTry.attempt); + $P.css( dimName, thisTry.cssSize ); + + thisTry.actual = dimName=='width' ? $P.outerWidth() : $P.outerHeight(); + thisTry.correct = (size === thisTry.actual); + + // if showDebugMessages, log attempts and alert the user of this *non-fatal error* + if (options.showDebugMessages) { + if ( tries.length === 1) { + _log(msg, false); + _log(lastTry, false); + } + _log(thisTry, false); + } + + // after 4 tries, is as close as its gonna get! + if (tries.length > 3) break; + + tries.push( thisTry ); + lastTry = tries[ tries.length - 1 ]; + } + // END TESTING CODE + + // update pane-state dimensions + s.size = size; + $.extend(s, elDims($P)); + + if (s.isVisible && $P.is(":visible")) { + // reposition the resizer-bar + if ($R) $R.css( side, size + sC[inset] ); + // resize the content-div + sizeContent(pane); + } + + if (!skipCallback && !skipResizeWhileDragging && state.initialized && s.isVisible) + _runCallbacks("onresize_end", pane); + + // resize all the adjacent panes, and adjust their toggler buttons + // when skipCallback passed, it means the controlling method will handle 'other panes' + if (!skipCallback) { + // also no callback if live-resize is in progress and NOT triggerEventsDuringLiveResize + if (!s.isSliding) sizeMidPanes(_c[pane].dir=="horz" ? "" : "center", skipResizeWhileDragging, force); + sizeHandles(); + } + + // if opposite-pane was autoClosed, see if it can be autoOpened now + var altPane = _c.oppositeEdge[pane]; + if (size < oldSize && state[ altPane ].noRoom) { + setSizeLimits( altPane ); + makePaneFit( altPane, false, skipCallback ); + } + + // DEBUG - ALERT user/developer so they know there was a sizing problem + if (options.showDebugMessages && tries.length > 1) + _log(msg +'\nSee the Error Console for details.', true); + } + } + + /** + * @see initPanes(), sizePane(), resizeAll(), open(), close(), hide() + * @param {string} panes The pane(s) being resized, comma-delmited string + * @param {boolean=} [skipCallback=false] Should the onresize callback be run? + * @param {boolean=} [force=false] + */ +, sizeMidPanes = function (panes, skipCallback, force) { + panes = (panes ? panes : "east,west,center").split(","); + + $.each(panes, function (i, pane) { + if (!$Ps[pane]) return; // NO PANE - skip + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , isCenter= (pane=="center") + , hasRoom = true + , CSS = {} + , newCenter = calcNewCenterPaneDims() + ; + // update pane-state dimensions + $.extend(s, elDims($P)); + + if (pane === "center") { + if (!force && s.isVisible && newCenter.width === s.outerWidth && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // set state for makePaneFit() logic + $.extend(s, cssMinDims(pane), { + maxWidth: newCenter.width + , maxHeight: newCenter.height + }); + CSS = newCenter; + // convert OUTER width/height to CSS width/height + CSS.width = cssW($P, CSS.width); + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, CSS.height); + hasRoom = CSS.width >= 0 && CSS.height >= 0; // height >= 0 = ALWAYS TRUE NOW + // during layout init, try to shrink east/west panes to make room for center + if (!state.initialized && o.minWidth > s.outerWidth) { + var + reqPx = o.minWidth - s.outerWidth + , minE = options.east.minSize || 0 + , minW = options.west.minSize || 0 + , sizeE = state.east.size + , sizeW = state.west.size + , newE = sizeE + , newW = sizeW + ; + if (reqPx > 0 && state.east.isVisible && sizeE > minE) { + newE = max( sizeE-minE, sizeE-reqPx ); + reqPx -= sizeE-newE; + } + if (reqPx > 0 && state.west.isVisible && sizeW > minW) { + newW = max( sizeW-minW, sizeW-reqPx ); + reqPx -= sizeW-newW; + } + // IF we found enough extra space, then resize the border panes as calculated + if (reqPx === 0) { + if (sizeE != minE) + sizePane('east', newE, true, force, true); // true = skipCallback/noAnimation - initPanes will handle when done + if (sizeW != minW) + sizePane('west', newW, true, force, true); + // now start over! + sizeMidPanes('center', skipCallback, force); + return; // abort this loop + } + } + } + else { // for east and west, set only the height, which is same as center height + // set state.min/maxWidth/Height for makePaneFit() logic + if (s.isVisible && !s.noVerticalRoom) + $.extend(s, elDims($P), cssMinDims(pane)) + if (!force && !s.noVerticalRoom && newCenter.height === s.outerHeight) + return true; // SKIP - pane already the correct size + // east/west have same top, bottom & height as center + CSS.top = newCenter.top; + CSS.bottom = newCenter.bottom; + // NEW - allow pane to extend 'below' visible area rather than hide it + CSS.height = cssH($P, newCenter.height); + s.maxHeight = CSS.height; + hasRoom = (s.maxHeight >= 0); // ALWAYS TRUE NOW + if (!hasRoom) s.noVerticalRoom = true; // makePaneFit() logic + } + + if (hasRoom) { + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_start", pane); + + $P.css(CSS); // apply the CSS to pane + sizeHandles(pane); // also update resizer length + if (s.noRoom && !s.isClosed && !s.isHidden) + makePaneFit(pane); // will re-open/show auto-closed/hidden pane + if (s.isVisible) { + $.extend(s, elDims($P)); // update pane dimensions + if (state.initialized) sizeContent(pane); // also resize the contents, if exists + } + } + else if (!s.noRoom && s.isVisible) // no room for pane + makePaneFit(pane); // will hide or close pane + + if (!s.isVisible) + return true; // DONE - next pane + + /* + * Extra CSS for IE6 or IE7 in Quirks-mode - add 'width' to NORTH/SOUTH panes + * Normally these panes have only 'left' & 'right' positions so pane auto-sizes + * ALSO required when pane is an IFRAME because will NOT default to 'full width' + */ + if (pane === "center") { // finished processing midPanes + var b = $.layout.browser; + var fix = b.isIE6 || (b.msie && !$.support.boxModel); + if ($Ps.north && (fix || state.north.tagName=="IFRAME")) + $Ps.north.css("width", cssW($Ps.north, sC.innerWidth)); + if ($Ps.south && (fix || state.south.tagName=="IFRAME")) + $Ps.south.css("width", cssW($Ps.south, sC.innerWidth)); + } + + // resizeAll passes skipCallback because it triggers callbacks after ALL panes are resized + if (!skipCallback && state.initialized) + _runCallbacks("onresize_end", pane); + }); + } + + + /** + * @see window.onresize(), callbacks or custom code + */ +, resizeAll = function () { + if (!state.initialized) { + _initLayoutElements(); + return; // no need to resize since we just initialized! + } + var oldW = sC.innerWidth + , oldH = sC.innerHeight + ; + // cannot size layout when 'container' is hidden or collapsed + if (!$N.is(":visible:") ) return; + $.extend( state.container, elDims( $N ) ); // UPDATE container dimensions + if (!sC.outerHeight) return; + + // onresizeall_start will CANCEL resizing if returns false + // state.container has already been set, so user can access this info for calcuations + if (false === _runCallbacks("onresizeall_start")) return false; + + var // see if container is now 'smaller' than before + shrunkH = (sC.innerHeight < oldH) + , shrunkW = (sC.innerWidth < oldW) + , $P, o, s, dir + ; + // NOTE special order for sizing: S-N-E-W + $.each(["south","north","east","west"], function (i, pane) { + if (!$Ps[pane]) return; // no pane - SKIP + s = state[pane]; + o = options[pane]; + dir = _c[pane].dir; + + if (o.autoResize && s.size != o.size) // resize pane to original size set in options + sizePane(pane, o.size, true, true, true); // true=skipCallback/forceResize/noAnimation + else { + setSizeLimits(pane); + makePaneFit(pane, false, true, true); // true=skipCallback/forceResize + } + }); + + sizeMidPanes("", true, true); // true=skipCallback, true=forceResize + sizeHandles(); // reposition the toggler elements + + // trigger all individual pane callbacks AFTER layout has finished resizing + o = options; // reuse alias + $.each(_c.allPanes, function (i, pane) { + $P = $Ps[pane]; + if (!$P) return; // SKIP + if (state[pane].isVisible) // undefined for non-existent panes + _runCallbacks("onresize_end", pane); // callback - if exists + }); + + _runCallbacks("onresizeall_end"); + //_triggerLayoutEvent(pane, 'resizeall'); + } + + /** + * Whenever a pane resizes or opens that has a nested layout, trigger resizeAll + * + * @param {string} pane The pane just resized or opened + */ +, resizeChildLayout = function (evt_or_pane) { + var pane = evtPane.call(this, evt_or_pane); + if (!options[pane].resizeChildLayout) return; + var $P = $Ps[pane] + , $C = $Cs[pane] + , d = "layout" + , P = Instance[pane] + , L = children[pane] + ; + // user may have manually set EITHER instance pointer, so handle that + if (P.child && !L) { + // have to reverse the pointers! + var el = P.child.container; + L = children[pane] = (el ? el.data(d) : 0) || null; // set pointer _directly_ to layout instance + } + + // if a layout-pointer exists, see if child has been destroyed + if (L && L.destroyed) + L = children[pane] = null; // clear child pointers + // no child layout pointer is set - see if there is a child layout NOW + if (!L) L = children[pane] = $P.data(d) || ($C ? $C.data(d) : 0) || null; // set/update child pointers + + // ALWAYS refresh the pane.child alias + P.child = children[pane]; + + if (L) L.resizeAll(); + } + + + /** + * IF pane has a content-div, then resize all elements inside pane to fit pane-height + * + * @param {string=} [panes=""] The pane(s) being resized + * @param {boolean=} [remeasure=false] Should the content (header/footer) be remeasured? + */ +, sizeContent = function (evt_or_panes, remeasure) { + if (!isInitialized()) return; + + var panes = evtPane.call(this, evt_or_panes); + panes = panes ? panes.split(",") : _c.allPanes; + + $.each(panes, function (idx, pane) { + var + $P = $Ps[pane] + , $C = $Cs[pane] + , o = options[pane] + , s = state[pane] + , m = s.content // m = measurements + ; + if (!$P || !$C || !$P.is(":visible")) return true; // NOT VISIBLE - skip + + // if content-element was REMOVED, update OR remove the pointer + if (!$C.length) { + initContent(pane, false); // false = do NOT sizeContent() - already there! + if (!$C) return; // no replacement element found - pointer have been removed + } + + // onsizecontent_start will CANCEL resizing if returns false + if (false === _runCallbacks("onsizecontent_start", pane)) return; + + // skip re-measuring offsets if live-resizing + if ((!s.isMoving && !s.isResizing) || o.liveContentResizing || remeasure || m.top == undefined) { + _measure(); + // if any footers are below pane-bottom, they may not measure correctly, + // so allow pane overflow and re-measure + if (m.hiddenFooters > 0 && $P.css("overflow") === "hidden") { + $P.css("overflow", "visible"); + _measure(); // remeasure while overflowing + $P.css("overflow", "hidden"); + } + } + // NOTE: spaceAbove/Below *includes* the pane paddingTop/Bottom, but not pane.borders + var newH = s.innerHeight - (m.spaceAbove - s.css.paddingTop) - (m.spaceBelow - s.css.paddingBottom); + + if (!$C.is(":visible") || m.height != newH) { + // size the Content element to fit new pane-size - will autoHide if not enough room + setOuterHeight($C, newH, true); // true=autoHide + m.height = newH; // save new height + }; + + if (state.initialized) + _runCallbacks("onsizecontent_end", pane); + + function _below ($E) { + return max(s.css.paddingBottom, (parseInt($E.css("marginBottom"), 10) || 0)); + }; + + function _measure () { + var + ignore = options[pane].contentIgnoreSelector + , $Fs = $C.nextAll().not(ignore || ':lt(0)') // not :lt(0) = ALL + , $Fs_vis = $Fs.filter(':visible') + , $F = $Fs_vis.filter(':last') + ; + m = { + top: $C[0].offsetTop + , height: $C.outerHeight() + , numFooters: $Fs.length + , hiddenFooters: $Fs.length - $Fs_vis.length + , spaceBelow: 0 // correct if no content footer ($E) + } + m.spaceAbove = m.top; // just for state - not used in calc + m.bottom = m.top + m.height; + if ($F.length) + //spaceBelow = (LastFooter.top + LastFooter.height) [footerBottom] - Content.bottom + max(LastFooter.marginBottom, pane.paddingBotom) + m.spaceBelow = ($F[0].offsetTop + $F.outerHeight()) - m.bottom + _below($F); + else // no footer - check marginBottom on Content element itself + m.spaceBelow = _below($C); + }; + }); + } + + + /** + * Called every time a pane is opened, closed, or resized to slide the togglers to 'center' and adjust their length if necessary + * + * @see initHandles(), open(), close(), resizeAll() + * @param {string=} [panes=""] The pane(s) being resized + */ +, sizeHandles = function (evt_or_panes) { + var panes = evtPane.call(this, evt_or_panes) + panes = panes ? panes.split(",") : _c.borderPanes; + + $.each(panes, function (i, pane) { + var + o = options[pane] + , s = state[pane] + , $P = $Ps[pane] + , $R = $Rs[pane] + , $T = $Ts[pane] + , $TC + ; + if (!$P || !$R) return; + + var + dir = _c[pane].dir + , _state = (s.isClosed ? "_closed" : "_open") + , spacing = o["spacing"+ _state] + , togAlign = o["togglerAlign"+ _state] + , togLen = o["togglerLength"+ _state] + , paneLen + , left + , offset + , CSS = {} + ; + + if (spacing === 0) { + $R.hide(); + return; + } + else if (!s.noRoom && !s.isHidden) // skip if resizer was hidden for any reason + $R.show(); // in case was previously hidden + + // Resizer Bar is ALWAYS same width/height of pane it is attached to + if (dir === "horz") { // north/south + //paneLen = $P.outerWidth(); // s.outerWidth || + paneLen = sC.innerWidth; // handle offscreen-panes + s.resizerLength = paneLen; + left = $.layout.cssNum($P, "left") + $R.css({ + width: cssW($R, paneLen) // account for borders & padding + , height: cssH($R, spacing) // ditto + , left: left > -9999 ? left : sC.insetLeft // handle offscreen-panes + }); + } + else { // east/west + paneLen = $P.outerHeight(); // s.outerHeight || + s.resizerLength = paneLen; + $R.css({ + height: cssH($R, paneLen) // account for borders & padding + , width: cssW($R, spacing) // ditto + , top: sC.insetTop + getPaneSize("north", true) // TODO: what if no North pane? + //, top: $.layout.cssNum($Ps["center"], "top") + }); + } + + // remove hover classes + removeHover( o, $R ); + + if ($T) { + if (togLen === 0 || (s.isSliding && o.hideTogglerOnSlide)) { + $T.hide(); // always HIDE the toggler when 'sliding' + return; + } + else + $T.show(); // in case was previously hidden + + if (!(togLen > 0) || togLen === "100%" || togLen > paneLen) { + togLen = paneLen; + offset = 0; + } + else { // calculate 'offset' based on options.PANE.togglerAlign_open/closed + if (isStr(togAlign)) { + switch (togAlign) { + case "top": + case "left": offset = 0; + break; + case "bottom": + case "right": offset = paneLen - togLen; + break; + case "middle": + case "center": + default: offset = round((paneLen - togLen) / 2); // 'default' catches typos + } + } + else { // togAlign = number + var x = parseInt(togAlign, 10); // + if (togAlign >= 0) offset = x; + else offset = paneLen - togLen + x; // NOTE: x is negative! + } + } + + if (dir === "horz") { // north/south + var width = cssW($T, togLen); + $T.css({ + width: width // account for borders & padding + , height: cssH($T, spacing) // ditto + , left: offset // TODO: VERIFY that toggler positions correctly for ALL values + , top: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginLeft", round((width-$TC.outerWidth())/2)); // could be negative + }); + } + else { // east/west + var height = cssH($T, togLen); + $T.css({ + height: height // account for borders & padding + , width: cssW($T, spacing) // ditto + , top: offset // POSITION the toggler + , left: 0 + }); + // CENTER the toggler content SPAN + $T.children(".content").each(function(){ + $TC = $(this); + $TC.css("marginTop", round((height-$TC.outerHeight())/2)); // could be negative + }); + } + + // remove ALL hover classes + removeHover( 0, $T ); + } + + // DONE measuring and sizing this resizer/toggler, so can be 'hidden' now + if (!state.initialized && (o.initHidden || s.noRoom)) { + $R.hide(); + if ($T) $T.hide(); + } + }); + } + + + /** + * @param {string} pane + */ +, enableClosable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + , o = options[pane] + ; + if (!$T) return; + o.closable = true; + $T .bind("click."+ sID, function(evt){ evt.stopPropagation(); toggle(pane); }) + .css("visibility", "visible") + .css("cursor", "pointer") + .attr("title", state[pane].isClosed ? o.togglerTip_closed : o.togglerTip_open) // may be blank + .show(); + } + /** + * @param {string} pane + * @param {boolean=} [hide=false] + */ +, disableClosable = function (evt_or_pane, hide) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $T = $Ts[pane] + ; + if (!$T) return; + options[pane].closable = false; + // is closable is disable, then pane MUST be open! + if (state[pane].isClosed) open(pane, false, true); + $T .unbind("."+ sID) + .css("visibility", hide ? "hidden" : "visible") // instead of hide(), which creates logic issues + .css("cursor", "default") + .attr("title", ""); + } + + + /** + * @param {string} pane + */ +, enableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].slidable = true; + if (s.isClosed) + bindStartSlidingEvent(pane, true); + } + /** + * @param {string} pane + */ +, disableSlidable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R) return; + options[pane].slidable = false; + if (state[pane].isSliding) + close(pane, false, true); + else { + bindStartSlidingEvent(pane, false); + $R .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + } + + + /** + * @param {string} pane + */ +, enableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + , o = options[pane] + ; + if (!$R || !$R.data('draggable')) return; + o.resizable = true; + $R.draggable("enable"); + if (!state[pane].isClosed) + $R .css("cursor", o.resizerCursor) + .attr("title", o.resizerTip); + } + /** + * @param {string} pane + */ +, disableResizable = function (evt_or_pane) { + if (!isInitialized()) return; + var pane = evtPane.call(this, evt_or_pane) + , $R = $Rs[pane] + ; + if (!$R || !$R.data('draggable')) return; + options[pane].resizable = false; + $R .draggable("disable") + .css("cursor", "default") + .attr("title", ""); + removeHover(null, $R[0]); // in case currently hovered + } + + + /** + * Move a pane from source-side (eg, west) to target-side (eg, east) + * If pane exists on target-side, move that to source-side, ie, 'swap' the panes + * + * @param {string} pane1 The pane/edge being swapped + * @param {string} pane2 ditto + */ +, swapPanes = function (evt_or_pane1, pane2) { + if (!isInitialized()) return; + var pane1 = evtPane.call(this, evt_or_pane1); + // change state.edge NOW so callbacks can know where pane is headed... + state[pane1].edge = pane2; + state[pane2].edge = pane1; + // run these even if NOT state.initialized + if (false === _runCallbacks("onswap_start", pane1) + || false === _runCallbacks("onswap_start", pane2) + ) { + state[pane1].edge = pane1; // reset + state[pane2].edge = pane2; + return; + } + + var + oPane1 = copy( pane1 ) + , oPane2 = copy( pane2 ) + , sizes = {} + ; + sizes[pane1] = oPane1 ? oPane1.state.size : 0; + sizes[pane2] = oPane2 ? oPane2.state.size : 0; + + // clear pointers & state + $Ps[pane1] = false; + $Ps[pane2] = false; + state[pane1] = {}; + state[pane2] = {}; + + // ALWAYS remove the resizer & toggler elements + if ($Ts[pane1]) $Ts[pane1].remove(); + if ($Ts[pane2]) $Ts[pane2].remove(); + if ($Rs[pane1]) $Rs[pane1].remove(); + if ($Rs[pane2]) $Rs[pane2].remove(); + $Rs[pane1] = $Rs[pane2] = $Ts[pane1] = $Ts[pane2] = false; + + // transfer element pointers and data to NEW Layout keys + move( oPane1, pane2 ); + move( oPane2, pane1 ); + + // cleanup objects + oPane1 = oPane2 = sizes = null; + + // make panes 'visible' again + if ($Ps[pane1]) $Ps[pane1].css(_c.visible); + if ($Ps[pane2]) $Ps[pane2].css(_c.visible); + + // fix any size discrepancies caused by swap + resizeAll(); + + // run these even if NOT state.initialized + _runCallbacks("onswap_end", pane1); + _runCallbacks("onswap_end", pane2); + + return; + + function copy (n) { // n = pane + var + $P = $Ps[n] + , $C = $Cs[n] + ; + return !$P ? false : { + pane: n + , P: $P ? $P[0] : false + , C: $C ? $C[0] : false + , state: $.extend(true, {}, state[n]) + , options: $.extend(true, {}, options[n]) + } + }; + + function move (oPane, pane) { + if (!oPane) return; + var + P = oPane.P + , C = oPane.C + , oldPane = oPane.pane + , c = _c[pane] + , side = c.side.toLowerCase() + , inset = "inset"+ c.side + // save pane-options that should be retained + , s = $.extend({}, state[pane]) + , o = options[pane] + // RETAIN side-specific FX Settings - more below + , fx = { resizerCursor: o.resizerCursor } + , re, size, pos + ; + $.each("fxName,fxSpeed,fxSettings".split(","), function (i, k) { + fx[k +"_open"] = o[k +"_open"]; + fx[k +"_close"] = o[k +"_close"]; + fx[k +"_size"] = o[k +"_size"]; + }); + + // update object pointers and attributes + $Ps[pane] = $(P) + .data({ + layoutPane: Instance[pane] // NEW pointer to pane-alias-object + , layoutEdge: pane + }) + .css(_c.hidden) + .css(c.cssReq) + ; + $Cs[pane] = C ? $(C) : false; + + // set options and state + options[pane] = $.extend({}, oPane.options, fx); + state[pane] = $.extend({}, oPane.state); + + // change classNames on the pane, eg: ui-layout-pane-east ==> ui-layout-pane-west + re = new RegExp(o.paneClass +"-"+ oldPane, "g"); + P.className = P.className.replace(re, o.paneClass +"-"+ pane); + + // ALWAYS regenerate the resizer & toggler elements + initHandles(pane); // create the required resizer & toggler + + // if moving to different orientation, then keep 'target' pane size + if (c.dir != _c[oldPane].dir) { + size = sizes[pane] || 0; + setSizeLimits(pane); // update pane-state + size = max(size, state[pane].minSize); + // use manualSizePane to disable autoResize - not useful after panes are swapped + manualSizePane(pane, size, true, true); // true/true = skipCallback/noAnimation + } + else // move the resizer here + $Rs[pane].css(side, sC[inset] + (state[pane].isVisible ? getPaneSize(pane) : 0)); + + + // ADD CLASSNAMES & SLIDE-BINDINGS + if (oPane.state.isVisible && !s.isVisible) + setAsOpen(pane, true); // true = skipCallback + else { + setAsClosed(pane); + bindStartSlidingEvent(pane, true); // will enable events IF option is set + } + + // DESTROY the object + oPane = null; + }; + } + + + /** + * INTERNAL method to sync pin-buttons when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), setAsOpen(), setAsClosed() + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns = function (pane, doPin) { + if ($.layout.plugins.buttons) + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(Instance, $(selector), pane, doPin); + }); + } + +; // END var DECLARATIONS + + /** + * Capture keys when enableCursorHotkey - toggle pane if hotkey pressed + * + * @see document.keydown() + */ + function keyDown (evt) { + if (!evt) return true; + var code = evt.keyCode; + if (code < 33) return true; // ignore special keys: ENTER, TAB, etc + + var + PANE = { + 38: "north" // Up Cursor - $.ui.keyCode.UP + , 40: "south" // Down Cursor - $.ui.keyCode.DOWN + , 37: "west" // Left Cursor - $.ui.keyCode.LEFT + , 39: "east" // Right Cursor - $.ui.keyCode.RIGHT + } + , ALT = evt.altKey // no worky! + , SHIFT = evt.shiftKey + , CTRL = evt.ctrlKey + , CURSOR = (CTRL && code >= 37 && code <= 40) + , o, k, m, pane + ; + + if (CURSOR && options[PANE[code]].enableCursorHotkey) // valid cursor-hotkey + pane = PANE[code]; + else if (CTRL || SHIFT) // check to see if this matches a custom-hotkey + $.each(_c.borderPanes, function (i, p) { // loop each pane to check its hotkey + o = options[p]; + k = o.customHotkey; + m = o.customHotkeyModifier; // if missing or invalid, treated as "CTRL+SHIFT" + if ((SHIFT && m=="SHIFT") || (CTRL && m=="CTRL") || (CTRL && SHIFT)) { // Modifier matches + if (k && code === (isNaN(k) || k <= 9 ? k.toUpperCase().charCodeAt(0) : k)) { // Key matches + pane = p; + return false; // BREAK + } + } + }); + + // validate pane + if (!pane || !$Ps[pane] || !options[pane].closable || state[pane].isHidden) + return true; + + toggle(pane); + + evt.stopPropagation(); + evt.returnValue = false; // CANCEL key + return false; + }; + + +/* + * ###################################### + * UTILITY METHODS + * called externally or by initButtons + * ###################################### + */ + + /** + * Change/reset a pane overflow setting & zIndex to allow popups/drop-downs to work + * + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function allowOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + ; + + // if pane is already raised, then reset it before doing it again! + // this would happen if allowOverflow is attached to BOTH the pane and an element + if (s.cssSaved) + resetOverflow(pane); // reset previous CSS before continuing + + // if pane is raised by sliding or resizing, or its closed, then abort + if (s.isSliding || s.isResizing || s.isClosed) { + s.cssSaved = false; + return; + } + + var + newCSS = { zIndex: (options.zIndexes.resizer_normal + 1) } + , curCSS = {} + , of = $P.css("overflow") + , ofX = $P.css("overflowX") + , ofY = $P.css("overflowY") + ; + // determine which, if any, overflow settings need to be changed + if (of != "visible") { + curCSS.overflow = of; + newCSS.overflow = "visible"; + } + if (ofX && !ofX.match(/visible|auto/)) { + curCSS.overflowX = ofX; + newCSS.overflowX = "visible"; + } + if (ofY && !ofY.match(/visible|auto/)) { + curCSS.overflowY = ofX; + newCSS.overflowY = "visible"; + } + + // save the current overflow settings - even if blank! + s.cssSaved = curCSS; + + // apply new CSS to raise zIndex and, if necessary, make overflow 'visible' + $P.css( newCSS ); + + // make sure the zIndex of all other panes is normal + $.each(_c.allPanes, function(i, p) { + if (p != pane) resetOverflow(p); + }); + + }; + /** + * @param {Object=} [el] (optional) Can also be 'bound' to a click, mouseOver, or other event + */ + function resetOverflow (el) { + if (!isInitialized()) return; + if (this && this.tagName) el = this; // BOUND to element + var $P; + if (isStr(el)) + $P = $Ps[el]; + else if ($(el).data("layoutRole")) + $P = $(el); + else + $(el).parents().each(function(){ + if ($(this).data("layoutRole")) { + $P = $(this); + return false; // BREAK + } + }); + if (!$P || !$P.length) return; // INVALID + + var + pane = $P.data("layoutEdge") + , s = state[pane] + , CSS = s.cssSaved || {} + ; + // reset the zIndex + if (!s.isSliding && !s.isResizing) + $P.css("zIndex", options.zIndexes.pane_normal); + + // reset Overflow - if necessary + $P.css( CSS ); + + // clear var + s.cssSaved = false; + }; + +/* + * ##################### + * CREATE/RETURN LAYOUT + * ##################### + */ + + // validate that container exists + var $N = $(this).eq(0); // FIRST matching Container element + if (!$N.length) { + if (options.showErrorMessages) + _log( lang.errContainerMissing, true ); + return null; + }; + + // Users retrieve Instance of a layout with: $N.layout() OR $N.data("layout") + // return the Instance-pointer if layout has already been initialized + if ($N.data("layoutContainer") && $N.data("layout")) + return $N.data("layout"); // cached pointer + + // init global vars + var + $Ps = {} // Panes x5 - set in initPanes() + , $Cs = {} // Content x5 - set in initPanes() + , $Rs = {} // Resizers x4 - set in initHandles() + , $Ts = {} // Togglers x4 - set in initHandles() + , $Ms = $([]) // Masks - up to 2 masks per pane (IFRAME + DIV) + // aliases for code brevity + , sC = state.container // alias for easy access to 'container dimensions' + , sID = state.id // alias for unique layout ID/namespace - eg: "layout435" + ; + + // create Instance object to expose data & option Properties, and primary action Methods + var Instance = { + // layout data + options: options // property - options hash + , state: state // property - dimensions hash + // object pointers + , container: $N // property - object pointers for layout container + , panes: $Ps // property - object pointers for ALL Panes: panes.north, panes.center + , contents: $Cs // property - object pointers for ALL Content: contents.north, contents.center + , resizers: $Rs // property - object pointers for ALL Resizers, eg: resizers.north + , togglers: $Ts // property - object pointers for ALL Togglers, eg: togglers.north + // border-pane open/close + , hide: hide // method - ditto + , show: show // method - ditto + , toggle: toggle // method - pass a 'pane' ("north", "west", etc) + , open: open // method - ditto + , close: close // method - ditto + , slideOpen: slideOpen // method - ditto + , slideClose: slideClose // method - ditto + , slideToggle: slideToggle // method - ditto + // pane actions + , setSizeLimits: setSizeLimits // method - pass a 'pane' - update state min/max data + , _sizePane: sizePane // method -intended for user by plugins only! + , sizePane: manualSizePane // method - pass a 'pane' AND an 'outer-size' in pixels or percent, or 'auto' + , sizeContent: sizeContent // method - pass a 'pane' + , swapPanes: swapPanes // method - pass TWO 'panes' - will swap them + // pane element methods + , initContent: initContent // method - ditto + , addPane: addPane // method - pass a 'pane' + , removePane: removePane // method - pass a 'pane' to remove from layout, add 'true' to delete the pane-elem + , createChildLayout: createChildLayout// method - pass a 'pane' and (optional) layout-options (OVERRIDES options[pane].childOptions + // special pane option setting + , enableClosable: enableClosable // method - pass a 'pane' + , disableClosable: disableClosable // method - ditto + , enableSlidable: enableSlidable // method - ditto + , disableSlidable: disableSlidable // method - ditto + , enableResizable: enableResizable // method - ditto + , disableResizable: disableResizable// method - ditto + // utility methods for panes + , allowOverflow: allowOverflow // utility - pass calling element (this) + , resetOverflow: resetOverflow // utility - ditto + // layout control + , destroy: destroy // method - no parameters + , initPanes: isInitialized // method - no parameters + , resizeAll: resizeAll // method - no parameters + // callback triggering + , runCallbacks: _runCallbacks // method - pass evtName & pane (if a pane-event), eg: trigger("onopen", "west") + // alias collections of options, state and children - created in addPane and extended elsewhere + , hasParentLayout: false // set by initContainer() + , children: children // pointers to child-layouts, eg: Instance.children["west"] + , north: false // alias group: { name: pane, pane: $Ps[pane], options: options[pane], state: state[pane], child: children[pane] } + , south: false // ditto + , west: false // ditto + , east: false // ditto + , center: false // ditto + }; + + // create the border layout NOW + if (_create() === 'cancel') // onload_start callback returned false to CANCEL layout creation + return null; + else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later + return Instance; // return the Instance object + +} + + + + +/** + * jquery.layout.state 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * @dependancies: $.ui.cookie (above) + * + * @support: http://groups.google.com/group/jquery-ui-layout + */ +/* + * State-management options stored in options.stateManagement, which includes a .cookie hash + * Default options saves ALL KEYS for ALL PANES, ie: pane.size, pane.isClosed, pane.isHidden + * + * // STATE/COOKIE OPTIONS + * @example $(el).layout({ + stateManagement: { + enabled: true + , stateKeys: "east.size,west.size,east.isClosed,west.isClosed" + , cookie: { name: "appLayout", path: "/" } + } + }) + * @example $(el).layout({ stateManagement__enabled: true }) // enable auto-state-management using cookies + * @example $(el).layout({ stateManagement__cookie: { name: "appLayout", path: "/" } }) + * @example $(el).layout({ stateManagement__cookie__name: "appLayout", stateManagement__cookie__path: "/" }) + * + * // STATE/COOKIE METHODS + * @example myLayout.saveCookie( "west.isClosed,north.size,south.isHidden", {expires: 7} ); + * @example myLayout.loadCookie(); + * @example myLayout.deleteCookie(); + * @example var JSON = myLayout.readState(); // CURRENT Layout State + * @example var JSON = myLayout.readCookie(); // SAVED Layout State (from cookie) + * @example var JSON = myLayout.state.stateData; // LAST LOADED Layout State (cookie saved in layout.state hash) + * + * CUSTOM STATE-MANAGEMENT (eg, saved in a database) + * @example var JSON = myLayout.readState( "west.isClosed,north.size,south.isHidden" ); + * @example myLayout.loadState( JSON ); + */ + +/** + * UI COOKIE UTILITY + * + * A $.cookie OR $.ui.cookie namespace *should be standard*, but until then... + * This creates $.ui.cookie so Layout does not need the cookie.jquery.js plugin + * NOTE: This utility is REQUIRED by the layout.state plugin + * + * Cookie methods in Layout are created as part of State Management + */ +if (!$.ui) $.ui = {}; +$.ui.cookie = { + + // cookieEnabled is not in DOM specs, but DOES works in all browsers,including IE6 + acceptsCookies: !!navigator.cookieEnabled + +, read: function (name) { + var + c = document.cookie + , cs = c ? c.split(';') : [] + , pair // loop var + ; + for (var i=0, n=cs.length; i < n; i++) { + pair = $.trim(cs[i]).split('='); // name=value pair + if (pair[0] == name) // found the layout cookie + return decodeURIComponent(pair[1]); + + } + return null; + } + +, write: function (name, val, cookieOpts) { + var + params = '' + , date = '' + , clear = false + , o = cookieOpts || {} + , x = o.expires + ; + if (x && x.toUTCString) + date = x; + else if (x === null || typeof x === 'number') { + date = new Date(); + if (x > 0) + date.setDate(date.getDate() + x); + else { + date.setFullYear(1970); + clear = true; + } + } + if (date) params += ';expires='+ date.toUTCString(); + if (o.path) params += ';path='+ o.path; + if (o.domain) params += ';domain='+ o.domain; + if (o.secure) params += ';secure'; + document.cookie = name +'='+ (clear ? "" : encodeURIComponent( val )) + params; // write or clear cookie + } + +, clear: function (name) { + $.ui.cookie.write(name, '', {expires: -1}); + } + +}; +// if cookie.jquery.js is not loaded, create an alias to replicate it +// this may be useful to other plugins or code dependent on that plugin +if (!$.cookie) $.cookie = function (k, v, o) { + var C = $.ui.cookie; + if (v === null) + C.clear(k); + else if (v === undefined) + return C.read(k); + else + C.write(k, v, o); +}; + + +// tell Layout that the state plugin is available +$.layout.plugins.stateManagement = true; + +// Add State-Management options to layout.defaults +$.layout.config.optionRootKeys.push("stateManagement"); +$.layout.defaults.stateManagement = { + enabled: false // true = enable state-management, even if not using cookies +, autoSave: true // Save a state-cookie when page exits? +, autoLoad: true // Load the state-cookie when Layout inits? + // List state-data to save - must be pane-specific +, stateKeys: "north.size,south.size,east.size,west.size,"+ + "north.isClosed,south.isClosed,east.isClosed,west.isClosed,"+ + "north.isHidden,south.isHidden,east.isHidden,west.isHidden" +, cookie: { + name: "" // If not specified, will use Layout.name, else just "Layout" + , domain: "" // blank = current domain + , path: "" // blank = current page, '/' = entire website + , expires: "" // 'days' to keep cookie - leave blank for 'session cookie' + , secure: false + } +}; +// Set stateManagement as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("stateManagement"); + +/* + * State Management methods + */ +$.layout.state = { + + /** + * Get the current layout state and save it to a cookie + * + * myLayout.saveCookie( keys, cookieOpts ) + * + * @param {Object} inst + * @param {(string|Array)=} keys + * @param {Object=} opts + */ + saveCookie: function (inst, keys, cookieOpts) { + var o = inst.options + , oS = o.stateManagement + , oC = $.extend(true, {}, oS.cookie, cookieOpts || null) + , data = inst.state.stateData = inst.readState( keys || oS.stateKeys ) // read current panes-state + ; + $.ui.cookie.write( oC.name || o.name || "Layout", $.layout.state.encodeJSON(data), oC ); + return $.extend(true, {}, data); // return COPY of state.stateData data + } + + /** + * Remove the state cookie + * + * @param {Object} inst + */ +, deleteCookie: function (inst) { + var o = inst.options; + $.ui.cookie.clear( o.stateManagement.cookie.name || o.name || "Layout" ); + } + + /** + * Read & return data from the cookie - as JSON + * + * @param {Object} inst + */ +, readCookie: function (inst) { + var o = inst.options; + var c = $.ui.cookie.read( o.stateManagement.cookie.name || o.name || "Layout" ); + // convert cookie string back to a hash and return it + return c ? $.layout.state.decodeJSON(c) : {}; + } + + /** + * Get data from the cookie and USE IT to loadState + * + * @param {Object} inst + */ +, loadCookie: function (inst) { + var c = $.layout.state.readCookie(inst); // READ the cookie + if (c) { + inst.state.stateData = $.extend(true, {}, c); // SET state.stateData + inst.loadState(c); // LOAD the retrieved state + } + return c; + } + + /** + * Update layout options from the cookie, if one exists + * + * @param {Object} inst + * @param {Object=} stateData + * @param {boolean=} animate + */ +, loadState: function (inst, stateData, animate) { + stateData = $.layout.transformData( stateData ); // panes = default subkey + if ($.isEmptyObject( stateData )) return; + $.extend(true, inst.options, stateData); // update layout options + // if layout has already been initialized, then UPDATE layout state + if (inst.state.initialized) { + var pane, vis, o, s, h, c + , noAnimate = (animate===false) + ; + $.each($.layout.config.borderPanes, function (idx, pane) { + state = inst.state[pane]; + o = stateData[ pane ]; + if (typeof o != 'object') return; // no key, continue + s = o.size; + c = o.initClosed; + h = o.initHidden; + vis = state.isVisible; + // resize BEFORE opening + if (!vis) + inst.sizePane(pane, s, false, false); + if (h === true) inst.hide(pane, noAnimate); + else if (c === false) inst.open (pane, false, noAnimate); + else if (c === true) inst.close(pane, false, noAnimate); + else if (h === false) inst.show (pane, false, noAnimate); + // resize AFTER any other actions + if (vis) + inst.sizePane(pane, s, false, noAnimate); // animate resize if option passed + }); + }; + } + + /** + * Get the *current layout state* and return it as a hash + * + * @param {Object=} inst + * @param {(string|Array)=} keys + */ +, readState: function (inst, keys) { + var + data = {} + , alt = { isClosed: 'initClosed', isHidden: 'initHidden' } + , state = inst.state + , panes = $.layout.config.allPanes + , pair, pane, key, val + ; + if (!keys) keys = inst.options.stateManagement.stateKeys; // if called by user + if ($.isArray(keys)) keys = keys.join(","); + // convert keys to an array and change delimiters from '__' to '.' + keys = keys.replace(/__/g, ".").split(','); + // loop keys and create a data hash + for (var i=0, n=keys.length; i < n; i++) { + pair = keys[i].split("."); + pane = pair[0]; + key = pair[1]; + if ($.inArray(pane, panes) < 0) continue; // bad pane! + val = state[ pane ][ key ]; + if (val == undefined) continue; + if (key=="isClosed" && state[pane]["isSliding"]) + val = true; // if sliding, then *really* isClosed + ( data[pane] || (data[pane]={}) )[ alt[key] ? alt[key] : key ] = val; + } + return data; + } + + /** + * Stringify a JSON hash so can save in a cookie or db-field + */ +, encodeJSON: function (JSON) { + return parse(JSON); + function parse (h) { + var D=[], i=0, k, v, t; // k = key, v = value + for (k in h) { + v = h[k]; + t = typeof v; + if (t == 'string') // STRING - add quotes + v = '"'+ v +'"'; + else if (t == 'object') // SUB-KEY - recurse into it + v = parse(v); + D[i++] = '"'+ k +'":'+ v; + } + return '{'+ D.join(',') +'}'; + }; + } + + /** + * Convert stringified JSON back to a hash object + * @see $.parseJSON(), adding in jQuery 1.4.1 + */ +, decodeJSON: function (str) { + try { return $.parseJSON ? $.parseJSON(str) : window["eval"]("("+ str +")") || {}; } + catch (e) { return {}; } + } + + +, _create: function (inst) { + var _ = $.layout.state; + // ADD State-Management plugin methods to inst + $.extend( inst, { + // readCookie - update options from cookie - returns hash of cookie data + readCookie: function () { return _.readCookie(inst); } + // deleteCookie + , deleteCookie: function () { _.deleteCookie(inst); } + // saveCookie - optionally pass keys-list and cookie-options (hash) + , saveCookie: function (keys, cookieOpts) { return _.saveCookie(inst, keys, cookieOpts); } + // loadCookie - readCookie and use to loadState() - returns hash of cookie data + , loadCookie: function () { return _.loadCookie(inst); } + // loadState - pass a hash of state to use to update options + , loadState: function (stateData, animate) { _.loadState(inst, stateData, animate); } + // readState - returns hash of current layout-state + , readState: function (keys) { return _.readState(inst, keys); } + // add JSON utility methods too... + , encodeJSON: _.encodeJSON + , decodeJSON: _.decodeJSON + }); + + // init state.stateData key, even if plugin is initially disabled + inst.state.stateData = {}; + + // read and load cookie-data per options + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoLoad) // update the options from the cookie + inst.loadCookie(); + else // don't modify options - just store cookie data in state.stateData + inst.state.stateData = inst.readCookie(); + } + } + +, _unload: function (inst) { + var oS = inst.options.stateManagement; + if (oS.enabled) { + if (oS.autoSave) // save a state-cookie automatically + inst.saveCookie(); + else // don't save a cookie, but do store state-data in state.stateData key + inst.state.stateData = inst.readState(); + } + } + +}; + +// add state initialization method to Layout's onCreate array of functions +$.layout.onCreate.push( $.layout.state._create ); +$.layout.onUnload.push( $.layout.state._unload ); + + + + +/** + * jquery.layout.buttons 1.0 + * $Date: 2011-07-16 08:00:00 (Sat, 16 July 2011) $ + * + * Copyright (c) 2010 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * Docs: [ to come ] + * Tips: [ to come ] + */ + +// tell Layout that the state plugin is available +$.layout.plugins.buttons = true; + +// Add buttons options to layout.defaults +$.layout.defaults.autoBindCustomButtons = false; +// Specify autoBindCustomButtons as a layout-option, NOT a pane-option +$.layout.optionsMap.layout.push("autoBindCustomButtons"); + +var lang = $.layout.language; + +/* + * Button methods + */ +$.layout.buttons = { + + /** + * Searches for .ui-layout-button-xxx elements and auto-binds them as layout-buttons + * + * @see _create() + * + * @param {Object} inst Layout Instance object + */ + init: function (inst) { + var pre = "ui-layout-button-" + , layout = inst.options.name || "" + , name; + $.each("toggle,open,close,pin,toggle-slide,open-slide".split(","), function (i, action) { + $.each($.layout.config.borderPanes, function (ii, pane) { + $("."+pre+action+"-"+pane).each(function(){ + // if button was previously 'bound', data.layoutName was set, but is blank if layout has no 'name' + name = $(this).data("layoutName") || $(this).attr("layoutName"); + if (name == undefined || name === layout) + inst.bindButton(this, action, pane); + }); + }); + }); + } + + /** + * Helper function to validate params received by addButton utilities + * + * Two classes are added to the element, based on the buttonClass... + * The type of button is appended to create the 2nd className: + * - ui-layout-button-pin // action btnClass + * - ui-layout-button-pin-west // action btnClass + pane + * - ui-layout-button-toggle + * - ui-layout-button-open + * - ui-layout-button-close + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * + * @return {Array.} If both params valid, the element matching 'selector' in a jQuery wrapper - otherwise returns null + */ +, get: function (inst, selector, pane, action) { + var $E = $(selector) + , o = inst.options + , err = o.showErrorMessages + ; + if (!$E.length) { // element not found + if (err) $.layout.msg(lang.errButton + lang.selector +": "+ selector, true); + } + else if ($.inArray(pane, $.layout.config.borderPanes) < 0) { // invalid 'pane' sepecified + if (err) $.layout.msg(lang.errButton + lang.pane +": "+ pane, true); + $E = $(""); // NO BUTTON + } + else { // VALID + var btn = o[pane].buttonClass +"-"+ action; + $E .addClass( btn +" "+ btn +"-"+ pane ) + .data("layoutName", o.name); // add layout identifier - even if blank! + } + return $E; + } + + + /** + * NEW syntax for binding layout-buttons - will eventually replace addToggle, addOpen, etc. + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} action + * @param {string} pane + */ +, bind: function (inst, selector, action, pane) { + var _ = $.layout.buttons; + switch (action.toLowerCase()) { + case "toggle": _.addToggle (inst, selector, pane); break; + case "open": _.addOpen (inst, selector, pane); break; + case "close": _.addClose (inst, selector, pane); break; + case "pin": _.addPin (inst, selector, pane); break; + case "toggle-slide": _.addToggle (inst, selector, pane, true); break; + case "open-slide": _.addOpen (inst, selector, pane, true); break; + } + return inst; + } + + /** + * Add a custom Toggler button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addToggle: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "toggle") + .click(function(evt){ + inst.toggle(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Open button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + * @param {boolean=} slide true = slide-open, false = pin-open + */ +, addOpen: function (inst, selector, pane, slide) { + $.layout.buttons.get(inst, selector, pane, "open") + .attr("title", lang.Open) + .click(function (evt) { + inst.open(pane, !!slide); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Close button for a pane + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the button is for: 'north', 'south', etc. + */ +, addClose: function (inst, selector, pane) { + $.layout.buttons.get(inst, selector, pane, "close") + .attr("title", lang.Close) + .click(function (evt) { + inst.close(pane); + evt.stopPropagation(); + }); + return inst; + } + + /** + * Add a custom Pin button for a pane + * + * Four classes are added to the element, based on the paneClass for the associated pane... + * Assuming the default paneClass and the pin is 'up', these classes are added for a west-pane pin: + * - ui-layout-pane-pin + * - ui-layout-pane-west-pin + * - ui-layout-pane-pin-up + * - ui-layout-pane-west-pin-up + * + * @param {Object} inst Layout Instance object + * @param {(string|!Object)} selector jQuery selector (or element) for button, eg: ".ui-layout-north .toggle-button" + * @param {string} pane Name of the pane the pin is for: 'north', 'south', etc. + */ +, addPin: function (inst, selector, pane) { + var _ = $.layout.buttons + , $E = _.get(inst, selector, pane, "pin"); + if ($E.length) { + var s = inst.state[pane]; + $E.click(function (evt) { + _.setPinState(inst, $(this), pane, (s.isSliding || s.isClosed)); + if (s.isSliding || s.isClosed) inst.open( pane ); // change from sliding to open + else inst.close( pane ); // slide-closed + evt.stopPropagation(); + }); + // add up/down pin attributes and classes + _.setPinState(inst, $E, pane, (!s.isClosed && !s.isSliding)); + // add this pin to the pane data so we can 'sync it' automatically + // PANE.pins key is an array so we can store multiple pins for each pane + s.pins.push( selector ); // just save the selector string + } + return inst; + } + + /** + * Change the class of the pin button to make it look 'up' or 'down' + * + * @see addPin(), syncPins() + * + * @param {Object} inst Layout Instance object + * @param {Array.} $Pin The pin-span element in a jQuery wrapper + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin true = set the pin 'down', false = set it 'up' + */ +, setPinState: function (inst, $Pin, pane, doPin) { + var updown = $Pin.attr("pin"); + if (updown && doPin === (updown=="down")) return; // already in correct state + var + pin = inst.options[pane].buttonClass +"-pin" + , side = pin +"-"+ pane + , UP = pin +"-up "+ side +"-up" + , DN = pin +"-down "+side +"-down" + ; + $Pin + .attr("pin", doPin ? "down" : "up") // logic + .attr("title", doPin ? lang.Unpin : lang.Pin) + .removeClass( doPin ? UP : DN ) + .addClass( doPin ? DN : UP ) + ; + } + + /** + * INTERNAL function to sync 'pin buttons' when pane is opened or closed + * Unpinned means the pane is 'sliding' - ie, over-top of the adjacent panes + * + * @see open(), close() + * + * @param {Object} inst Layout Instance object + * @param {string} pane These are the params returned to callbacks by layout() + * @param {boolean} doPin True means set the pin 'down', False means 'up' + */ +, syncPinBtns: function (inst, pane, doPin) { + // REAL METHOD IS _INSIDE_ LAYOUT - THIS IS HERE JUST FOR REFERENCE + $.each(state[pane].pins, function (i, selector) { + $.layout.buttons.setPinState(inst, $(selector), pane, doPin); + }); + } + + +, _load: function (inst) { + var _ = $.layout.buttons; + // ADD Button methods to Layout Instance + // Note: sel = jQuery Selector string + $.extend( inst, { + bindButton: function (sel, action, pane) { return _.bind(inst, sel, action, pane); } + // DEPRECATED METHODS + , addToggleBtn: function (sel, pane, slide) { return _.addToggle(inst, sel, pane, slide); } + , addOpenBtn: function (sel, pane, slide) { return _.addOpen(inst, sel, pane, slide); } + , addCloseBtn: function (sel, pane) { return _.addClose(inst, sel, pane); } + , addPinBtn: function (sel, pane) { return _.addPin(inst, sel, pane); } + }); + + // init state array to hold pin-buttons + for (var i=0; i<4; i++) { + var pane = $.layout.config.borderPanes[i]; + inst.state[pane].pins = []; + } + + // auto-init buttons onLoad if option is enabled + if ( inst.options.autoBindCustomButtons ) + _.init(inst); + } + +, _unload: function (inst) { + // TODO: unbind all buttons??? + } + +}; + +// add initialization method to Layout's onLoad array of functions +$.layout.onLoad.push( $.layout.buttons._load ); +//$.layout.onUnload.push( $.layout.buttons._unload ); + + + +/** + * jquery.layout.browserZoom 1.0 + * $Date: 2011-12-29 08:00:00 (Thu, 29 Dec 2011) $ + * + * Copyright (c) 2012 + * Kevin Dalman (http://allpro.net) + * + * Dual licensed under the GPL (http://www.gnu.org/licenses/gpl.html) + * and MIT (http://www.opensource.org/licenses/mit-license.php) licenses. + * + * @dependancies: UI Layout 1.3.0.rc30.1 or higher + * + * @support: http://groups.google.com/group/jquery-ui-layout + * + * @todo: Extend logic to handle other problematic zooming in browsers + * @todo: Add hotkey/mousewheel bindings to _instantly_ respond to these zoom event + */ + +// tell Layout that the plugin is available +$.layout.plugins.browserZoom = true; + +$.layout.defaults.browserZoomCheckInterval = 1000; +$.layout.optionsMap.layout.push("browserZoomCheckInterval"); + +/* + * browserZoom methods + */ +$.layout.browserZoom = { + + _init: function (inst) { + // abort if browser does not need this check + if ($.layout.browserZoom.ratio() !== false) + $.layout.browserZoom._setTimer(inst); + } + +, _setTimer: function (inst) { + // abort if layout destroyed or browser does not need this check + if (inst.destroyed) return; + var o = inst.options + , s = inst.state + // don't need check if inst has parentLayout, but check occassionally in case parent destroyed! + // MINIMUM 100ms interval, for performance + , ms = inst.hasParentLayout ? 5000 : Math.max( o.browserZoomCheckInterval, 100 ) + ; + // set the timer + setTimeout(function(){ + if (inst.destroyed || !o.resizeWithWindow) return; + var d = $.layout.browserZoom.ratio(); + if (d !== s.browserZoom) { + s.browserZoom = d; + inst.resizeAll(); + } + // set a NEW timeout + $.layout.browserZoom._setTimer(inst); + } + , ms ); + } + +, ratio: function () { + var w = window + , s = screen + , d = document + , dE = d.documentElement || d.body + , b = $.layout.browser + , v = b.version + , r, sW, cW + ; + // we can ignore all browsers that fire window.resize event onZoom + if ((b.msie && v > 8) + || !b.msie + ) return false; // don't need to track zoom + + if (s.deviceXDPI) + return calc(s.deviceXDPI, s.systemXDPI); + // everything below is just for future reference! + if (b.webkit && (r = d.body.getBoundingClientRect)) + return calc((r.left - r.right), d.body.offsetWidth); + if (b.webkit && (sW = w.outerWidth)) + return calc(sW, w.innerWidth); + if ((sW = s.width) && (cW = dE.clientWidth)) + return calc(sW, cW); + return false; // no match, so cannot - or don't need to - track zoom + + function calc (x,y) { return (parseInt(x,10) / parseInt(y,10) * 100).toFixed(); } + } + +}; +// add initialization method to Layout's onLoad array of functions +$.layout.onReady.push( $.layout.browserZoom._init ); + + + +})( jQuery ); \ No newline at end of file diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif new file mode 100644 index 0000000000000000000000000000000000000000..085ccaecaf5fa5c34bc14cd2c2ed5cbbd8e25dcb GIT binary patch literal 1553 zcma)+TTl~c6vwlh>nb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..47acaadd737478ddb090f47f618810712163317b GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*Fsaj7L$B>N1x91EQ8x$BA993)+ za~~)OO5|O5sDCi_{N8&XlRv*c;OQ6|AR59NN?mFzWBXJVGojypu|S6~c)I$ztaD0e F0syyrGF|`x literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..9d149b1c61fdee2de5cb342741c243abb9058bb3 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAGVZ#9R3S1u{Kd978O6pI&z4VlotPxp?2+ z_9ElQf7546?+BK3Q+%u|q&R!~TD`8c>Nm?7lq=+T^Fw3At=o;a{QQ?&v0rW43t78u zKLhT~Z`;~2oo9{ezlW>%eD?g@v!}03FhOcY)5-`I-U~CHGCzC3{y9?4*Y0Z~JJ3=F MPgg&ebxsLQ09`{nxc~qF literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..014951529c315d6042e72febc310a4d2db5b4a82 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq?|lm978O6-<~(*YA_IRxoBVf zfAX@vsV!R#l$@#*eLnw)_Sv|_?i7P!ORnX)SxaXh+BPpZ!Fw~yjr&#G|Jw^YMHDhV X&EsZx`7bsSXc~j3tDnm{r-UW|&(SK+ literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..4443fdc1a156babad4336f004eaf5ca5dfa0f9ab GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hIh978O6-<~(*YA|4MzBvER z|7}eQtdCVXoUc2b{PaWeaIKu7gJx>{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png new file mode 100644 index 0000000000000000000000000000000000000000..81ecc362d50ef5abbc0420aacd5345822f1f6098 GIT binary patch literal 3457 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..6f4bd87c041453ef037c4a9a1a698f0105d02eba GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2cf079add1ca236adeb509698adabbffb08acb GIT binary patch literal 4369 zcmd^?`8O2)_s3^p#%>tc^56h z`;7ykFJNMJN#e#ybz9|Ft@x`UI}T5QRij?pZ}6v#Srs793k0w~#4dRsO_y8vaKB*UbCk3l9Lh&v zS5!q|FV83GvJ|wlWy2IQI27&mA~vn>kbZHR1lRB?uEUiLWJ2Rgpr(9;PtX|H61Y%8 z>>Yvu=(<$fHnjpCX`E;Qw8u0=3KGsNhap}(`ul7lx-)UB6U7Rt{a^<^*Xbmf7)2^xf*8T2&U<6)1vO~m1F!2^L zin5`}H)*h3_*XzG*7fMOwuHkuK2hW)$!EE#jpyRaiy2tEzf~(B-PTBkPS$@K|y8w%~JYu8>vRGGA=Z$>guC|z6 zYkPw1&xf?FV0;xWt*`eV2oI-ePL2>on#}}WB8O9XBtD6GWYHw9TuY06(#pZ&TR3xK zNc7;n$4wnDC1?2MVtE1Zp2zT~^LboWF^niS1c$xMo}Gq?!`2q?IncFGB{AFxiTH7M zW6Wg6!H-Orl|zm+8G{^~&Fg2IE-7Q;uqGzAXEz)n_H1kYekmQLMJ)H_N1Ou8dug}I zg*SK#Fw;Fagf;H2=cerAvd2^*^YFJ_1850U&t}@Ts z-Ut9ox+Q;6E(XDZh@X=Gp(SPg)l4tQCH^(ZRf@E#KwlZPL;7ULUU0tSrvtn6Xt=Bl zG)w2|kn&t0Rld8d(t&f+-Jt5c7!Jl(SI2y<(E*K?=rQ%uV%4h0>FKm&7~0UnkICBc z3tgbbnW=GN@m656hHUzj6+go+`f^?6f@&?MiRslUz(!JYo`t%GZBP|O5#B?8Q!s!E z9^Ae>??aVeK~d<8G-`&+;~iK=r$D=se~1hP`y1FFARfPyp)iel=Nft8 znC=6UJHKKc>@v6^BHUgm$;1MCFRkRU9c7-T4r93DR+husFU7$gur@@f0$OZ1L9tGX zFTXe+OLbvyc&y1PF}4L`4x@XUJmE|_sn56h!ty42=@$~}wrWyVWoN^*yMa(A8bATs zAQRl8t3PnEeTy?M>ryqZSZwydvk3EmU|_Uk0Qsgqf@$HLqZ+||@PwmP+C~J3t-;t^A+ZQlqV5wK z%GQPfh`B@R4>AFJqdaImV^e(7#NPh2=V`CA9k=gtO&aqe{dJo=cvqPvaG92p)a~Xp z00|*>BOjuss)}zZTg6iEpZ?)}$XnxQ1Qg_)cP)Z6UQ6-ntKI-zNkl5kLs$#d)vS?t#w z!8oVgTG*33YBWB19B(GJxaF`p4zLTN+P(%31kt_<`l{r>rZ!6_mdb zQ2G)orW{~?O-?TSj+obv!+*!zpy&O)wRPJ8Pk81{)Oy2}-GFV2upGunf@d9Zj*xDj z7qF*O&^J3$XB&xT{P@0?J=lOEoWxAgO<1qa2@7S(ulwn5`u0ZIhxiRM`xz@Lwi5}} zFmUKSu+FHdbWSZRbH=Njjqlg3bI?_^<)xC@N6|xn{jq-rBH;45p?jA-NO#)90~=We z`1WnuC0t?^F?mXMxB<>OFqVHH<;)^|gPGvusmW>aZ#v=NEbmy8<+L~aEq zb?!#AginWl{)d^|4v}nB`B(4jVKZ7Iy1CIhSv^hQOhf!s#z}J5u3$Wazo9+lhXzoV zU?V3N$vi_HH+tN(o4dYLvo%axH{x=B;;WvxFYfHT^zTRZS-)ilGp4vP-#pjR+3 z0%AL(^7El8`jyby7DPOXkyc9c@x89GcL(I`x;OT9C2(7J_wbGq>f4s{1-f8d15uu8 z8f6E6ysykf?j%`qVZfG_d47Alp4Qq)&Ed7VJi!ZzB~Xpz+p&9z!3a}h*ZhBHMI8ME z`sT7cRIrw++gd-2I&ZoXq5sH{RaSX(4>Xgl28_+db^7dda<7Wp{^21-MnKeV;U}j1 zJlbMKy?iK~xdXZZeWGbO-RdG-&TvR$TLq8$SdU1N2V4uxE|G#`^e#F>j_3sou4UZn z{C$_N4Ze9WA?dkJU0fKh9qCKOiFvSv``rOim|N#5oQb^^FtmwEeS9tP@DabN`@-&g zimf*(7!$`vRmhu|WqK+rjfNHtN5|W0pW_z?HkS*h88fw>@(*n6h;?a81CT{n{I7>- zw)`=8;Bv=1(tJ@D7qPxosVY+7!w>N=h7e~49~ZKrd98AX6llP7)?3wvc|(^&|FRC# zm9&_;h5z)KIJl{%c3uuW{QBtIlSS~S52Hh?4HeeoZjq-G;6Cq;^mUA?2&V}!)H5jT zKrwiWx-cfD+5-NhGnt}u5wMMwtfXC-yRp|6MTzZFAQItktp4`(v7X4^_2{~i;(sv8 zGkpL3!V-Ai-ycXut#0|8oe4TJ7QUV~Do&p{zVG3v90J>;eENX2w? z$`}Ppr0ft|Zp)w~g{!onDe?@5CcjhC($cq8IM%2O?{Sub8>170^%I69aO+A8&Z&BD zgG+l-HBZPNSO59Ce~-or33^w(Q*U1mHc-Y7c>~Y9et7S1V$SEVbmSSq9Wv|A@EF?V zoP27TfvhVv%A0&@V8B4UGLGc+dc9a4FJBD)l_bZ##HH_vnc z5uC}#FmQiORque`?w?#K6-*)a9uAKX-OqHY?AUdoQYTafr%B>#SB>Q67K{M@<(#;PhLl`o?5`vwPv z;YkLv3FfS>7&%-e=_!*VvjMU8a!T+$b_h1o9(Qs@^ircOb^M0YY-y!n>Di)^q4Cgj z5IOL{sLD(nyg859i=2xJ;iPM|R!#N0a|vH zI}K@UZv9M*&=i}!VrxAmUNEWCy|T3%5~+mC9{NYcI*9J?VqXjh+Egl5Pm-Gb*!~SO zzW+D8H$3YhoTXOmc=gtYw!k@=oeiMmKJaz8r)%e;z1ORe$@QRI4oCa8Imz(dcoLo8 z^y{}ols#&09(EWKFND_xL z&4gxpi)Mk9t&j{}^_frnHu6jB_}_d{Fugq2t)_RvnL%6WY5;D&m?%xbpLEisZuPhT|(X^A|G5mlj0d)w-`54(J%ZTcX zn6>%!`8%F-ofn_`-MQ~q_jO(x>T8mdvXBA*0P-hVYQ_Kn!9N5X5QF|voqnkIKk>&< z7oqN1{p0`7a<`$p{u$Q~FxEE#Fi}Ym5*v2Lz7gd@_`uy9SZJ_NP6Y-PE$w?&eB#E! z@luJ=-OmTd`eoGEI$FYO8p~6wK7AFqDdxeGLV)RIPTBA3JeP|!l)NG{-Q6d(ZU6vU z`zLD3h~UCMwq(w@CThr_wpC?b>2)6KQ{XOZqC`#TV3HLH{4Jz8;eG{~<#7&z^Fpk7* zQg4k?n)GcUkD-v&_l+N*LmX{U+`_Ijr%kp9GT$4q!IhlwPUmIZ##tU}y2|M-tDBF{ z?(!=qt%pDjKrY6FbI70LBRgdlR5yNF0LB$t)>@6@wq&n+^=jO(?7{JMy6R(98#*2u zGm(7dhEX1h$(cz;r$Xr8<#ZH-B*s`OZ}!DW-eI$YrcFV8^J{cu9jUXNs_6J;uIaYp z+xJ`kH-W0Q(h5|r(!%ZSQY0T1CI^>?>SmZt=_%5ud)Ukw3qOdwxx}h=GMo$`rAxa5 z5n;T7oei=VlU!q)on~=+Q=zx320a>uiKZ>YbYPj)iIfKb%gA;i<`v#Gi%(K`6NIC= z+M)@C`P6{x^FT;8wcXUj>nBWjtRCf4F?$vYy$)|zu6e%dNah!uvHWYK{+9-?lcvo7 zlRgoN{~EP2D<3a;Z#DSTjppxv#L^*Uen~7pxK&$;fkiD4Lcn^?n(+F%H0x0uVly{j8_GF!7 z2T{^v)JMZ;JI|HnV2&Aj5}iDnz6mNq+3vIiiK<|wfDBiA0|J?@&j%Qn^VCZ5AVbe4 z^$Z6L`Khw*RJfPn z?^O6`8*O#=sf>4D4VTkI^)^A387UDbChOS8u>5`ZuwCFySA*==e&`ujmrX4m*^Gt^ zVflUM_*Y_Rakd!qmG45ZvfVBE1>bruP4nT({QOOaAng0A zUGq-m_0_hmEsb9ySSkm{soffYYmIG@7uPt`8z(&#+jbwJN99YM1W|=I^jtk>eq?Nj5;gGSn4ljc4PNnD`A|W@yob4WP zpqrIC4r7^?VUbtzR4|g(SldP}VU?NTo>AcUDggh`^7V z0Muht8w}9C>u<7?U_$}GcadFOnHh99cb3!E9w5z8Ed)eIU0kmXevFrqH%o#S1K+p* zx$PS7q0i#mu?T$+KHvW^8;pcV5Xl64_nKFCU1Lu9$?OU0LgKMx^ z*AU59^l;pwO$A7!(8hCwb~4Rz9yzc8o%rSJ>zgl^8TyMlGX2)hgsQ~g2xw%kxk)!&U6uOGJ6rzmLzENsEeD%bKHn^b*3Gv@ z)A!<6{2*LrvnKEYi~w=X`bl^(tfBZnxcGl^4Mk(?$>|&)<-y(SC%*CWt(U7S(_goc zb)=sU23AC6h`rr-L)lG;jScn(C=zIa8o3%1!72L(d^Y0{nYC2TpgRM|5u3oTRr^KF z5zxrJM$)+skxJOqEsB*2?7LMGRGr+PK5a=jsR@=!T|fxwvsh;+5t5y_S-Jq?maZWy zj|Z#fXn#h8Sv@=3O9}KSnE)@T6&D<7PZhIVPaKw+*w}?ab-}`c8m-qf0qw&&A?`6$ zr?e5z*XLdQ+;}#zl0OxcABrdT7l%RVn0%Frcavu2R9#B)MRWU1yRzpy!WNaw>%5;E z>&HctlyB8%u*R{0vL=d+NLV0y3??a^C~(ndfEbl6nh0x#$SwAT0_t;^`Qz8aYb&Op(nT|Ar5rEEDFbU9R%i%C z-!+KulwwQP(x9m>uw#YPl7nUwqH|8J`V8vy-8$+!x)DC1j+fvA7P3B+8Qefjtdrqr z+~m)gtx444SZYmBa3{hGw-8NPZKb)+O{{;*H4njbVjXS$qZ^Z_3%8s8T1b-)JM`U@ zQOq1(YK9^A&c8Rr@4(PzwL1;w_Fbu?8kX3qXF@}!{F%o~Qe{x`@amM4+%vO8PZ ztvZ~K+*-+9^0ruez5$#^|1K-Ol_@Kim64>ZY0;5-et?A3?^EAZu!Ue~pOuF*!;#|7 z`tza;_3twWM2T3qb#Y* zl!2*O)Sh0^y|)_AY(YYtJ~E&MVjZp+?0PIW{fXrrN9Z%{8|Mm2{;WGUzUY_fJG!{V zfH#F$BESeT;$ipxqbcY}czkysZvn0;m3KvA{1ET0iphDwxxRF0A6#vN`m^NR@WAX2 zpZc( zPk~>((LWxxV3pxm*_TIgT>eC~-p^G{C8?v?-zAXFuI*11FDXzQCHv8hq&f^Tn0nWl zbajk3fH__lg8L;Tzz64!p-B=x+-nB7^>DZ;qV-!*f6?Kc!?npiyWW@$ z0h&zOZK(@&Ot2p*y;3nr-ong$|KQeP<%=bLiN(l}N`mwHM)}Hl1%Hl@?oWafi#fMTi-&-B*2F461zYL2LPA(o?5JKglLWP(}Oa2vkG6%xHIB+nn zLNMdNzuE3z%3istR#2kwu`Zy_Bvxqk=D#7OcSJ_GH5%#^CcY+t2W)hg2D?4)ktv~y z1j54I=X?waQZW2WUJK{@S)U9RO(n4H;c50HR|dD#u|J%{}>rlcb`!GfRwHQTweec4`Ah4 z7zj(IBqfgNzGjNLCe@%3PYVN6X^gI;Qc}`c!v1tczj3m9AZ$}1pwLF+fLh0hAMbeA zrz|m|c~i2rmoR3^if4D++B3z=3DC1QU|ljPKul6w7T~R?0U3eV&l;zm>O|=2O92bi z%LV`+sy=@2XYB>(jYHAfMJ8s8eh#Z6W|p86%7TAUrctc6%_s?~J!L?zJ%}Y?ExtS4 z5>KRG{QQ$TeopXD_TSl9pcm}`DAvqY&^^EO2L{@@yP6v$nn?rL&Ml1%lWu)RptTzq@%^wx+e@+#v(tOM1qXAc zBVA87Pbv54K0BcSE~l`dRl`e~_?VCZ^Huucn2&(2-d^=qFvf4bv9v1WNxNXPag-TA zB2u0308tTnNvEj4xf9hW<2rqxL@;bySmQvX1^$QI0ny6A9C$NfUe&ab)Vkex;Q=ah z!m(xop>!<0{%&Ub`4U3)d61up+p$E=6dmln*=IGA}lKKD@G>u~sr=E)?f zo6n?*2QT3laPuV?I1W4`Ja`pyc7OT8}9@pOoxcud?Y@5{7;QvEWAARfJjoJnJDZi`}v*6q4b(=q( ziYc~W52*Uj%)b5hN+qdx*`D=Fwt1)brQKN^yU2_zdBcn2%w^`Yv5ed z6pL<8xd^fb{Fyf^s|s$@R9+8!By&JN+s&x|;MQc#UZ1S4!WQzWptg6!&t))s6koNP zBc`93Scf|bKuOjVk=qZdbdX*(KDC+w5w34qe%l^6fBg zK6ou368K0C20J5!6Mit`7k!J2@{D%Q_9T#&Ufe6R8(Y{i-$RqNXO$T}J!`>Qi7-U* z#XnlK-%$g+jfHJ(KUBXc$gHACQYi&v5Wvzc=n}0yeqWzt{_TLT_DeA!Sy+i(^t{u} zeeUl5FwU)!$V9#Uwy=%u`d~2;BJGvfeXpZCBG%XkU3o^Hh0i?{c{vVOq$(L1nr9!M zFfB%uwB1eypwCFpLM-ZEr?zcN>I@`Ht9>JqtEqW0KY5ypZ;M(EqaJOiOQc8Dh>Nrr z6G`9@rf0gi8K7ZL0{+l~1J1cKn-;Fe{aG#UphgTi4i07Dpor$!u%KJI@hMhdo8aW- zUY{ZwncM5J=UoKdQ#{(~6Z<5)ApmDmg~zXuVB#$G>Y6>=Fx+z@bbcf7Zqt-{s zPWC4lqrDFMHQGzRy*6ib`n9ag`>Oi&@sqQsvsJ5XqdVU_-gkZAKa!L+#@hWp(=#U6 zHv4=u^X?@8J%cfw58NqJB|rGxE41)yTD;`hfZ~S%OA}^h=3?UW2-N*ch8-MsJ8&46 za}U@_c|ahXVJ4>1_UNQ2x$Zk&n7oi-@PJbETJ=jfLC31!MOOS(!|3&Z`mr_kcwz5Nh&gy7G+@45H9p05OJ)J0CH2owMSaGIN$+5!N; z<11j56?ANg=9hMl-IBGX-T8hf$N$b*H?$f4Xt&I`oABt1nR=k%#z{{*a!Axm|t}hCz zJg0Ln7;M4Zjx{$mwhMW+kWN;|j>qTx_-zNX!GzqEZRa}QF8_0yk6+=w}$QD^&hM4%OkT=uh$q9;5u~NL-I+NQyaVc|3l+iWI5~|(hA-G z08i8AMr@{uY_cWTxo^y|Qyb33mlZLvc7H2Zm~>mB7&=-1X^@|D z&0*~i?GBE&NM(Pv&Vt^zWu_bD3e|R?wTL{cSFwD^Ij9v%g=aLY@1U2Bxn#Te*{>%D zOOW-O-bfnJ7T8jd<*>8`Z2DsFQi~S$%^npJwXam5>>p zMd}QEjM)@~##n$LXpz1Hkl|2UGXi-JFFePXBWL+-5f%!S>L#KL3>Vl0w#d^21Jn<~_7q zWx^Xg1(>PsPGO&cu{S;(pRQ;=Vw2J<9NdQVWx<+g-`ia=Q@puS)75M+?u>DTa95e9 zt#1T?#a)uWC>Mia!K6>g|InPW{&Kp9$tC_3*;R_Xsz6^Eu|xW1$6j#0?XLs7^l+%O zlxddE)h^|=K(2UqS*0ECuDe0ic|H_^t*VOoTCKx0Qmn_^LyJ|b8l$Jvl3{2=3x8&7 z$1ik&YG>w#@x@y~$r`fhlUDo;yXecc6$`30m`3K8s{k8G&3RVp8n#|l6h(Xw`Axw9 z%6Y^J6k0P@4YAuSd%q7=eg)&u8EMoEmq$CWj1GY|rGQWw3ida!FHk&wCqrQh_0Bcw z!ZBS3CbxgZ+}~wzgGIQ#QId%T_TE~_qdUqxjqS#8#jPxdwO@(@-5_nSP&uT?aGYYD z6km36K9=gjUjImwO=5Hl#u85VF?r0HbW)#h^SR|s_L47Tl$&Z&Rz*ksl!t*(2O2;D z+8`6$qpLn}LchhCmv*X}moGMX5?F@juGeHQAddAn}0~r zS_0|d3*0v%Y)8+8K{ zGyoYPb|W9Grm9M4E?vb^@16ePbI4omZv+(NoZ##fLUmKlB(G_jEbtDCM*27t$v`JovAZa+%*Q5dDXF*Ftt*n!O>#ohCM4lZ)h5rdKV-3A za}2AO6@!`W>ROk5FN*>2Zza^Z%}8KT%*jBGH|rml2X1LR{wZhWx8V4>|5i}; zMnLIHn3!^)`87GYh}&Y`KMwyLbA#^pch}Z!`@P_qH&N^LS9SxpEy8mc!wFusq&Z@` zeO}<6PC@VNaII|=n(^cNUiLseig*$;NjG7;IwvfYCBN>kzv@v-V2eBQZ@oIs^)NLqMR935k|1}U;5<{s(Ebdj4r`?QtrrAPfQooq zmPs_(YTy|??+nitNIFDoR7~qLPPFFCf^_~8OUt{#!|9o*3Q{!@9ZAI$7O~piD!;WX8#v&RxNH27i59$`1{o zEYU_zE{bKEI%f3BbE0Fc;f2!4LjUlC`wgh4@R{1?O78r5t$hWKiLV{#QWWq{QZiPx zm3?x$;&DDRVt0SByRiFczw$-e)GSvpCRbzk^=E zz=(+LjEc{Ps_2(OYg=G(93!oS=IeJ|WA8STv+LgI*Oj1c-QC06N~mvJ&KKx{arGp5 zswvJ6{%BvBYo>#2$%O$~TITuh?Rr^jCpAUXh)}m74`O|aOU>w2KI`k<#efwa5=-l4Xx!o>Z9Evg`RLN5W7SQp3$@D3_hY4EV!0( ztMm6>zBcgY{RvHZ{9Ey&&)jr2B4s0qDPBUh1ITaAp&>rj3ng*B=VGXz* zs@eR<;J(XkpD6Q1U3}#FR)wlafiFMU(-=&e9(eQ`isrS-9aNwJ)7frS8RiXM4*SbC zL|4*c?h^jfYvSOpn%Z$W?C|TuZ;uy2pFWHXuGW`ZkGV&kPJsKqJJQ!NswAE!!cb2k zumi=AE$YIkm})cVlg>nn&PBjBRI*@mfhhRMsa5U8k#A!ztfiw)d7I_UyAif8$5sJ9a7WUv5!o%fL z(J7-8EQzv1YIc)BNeWkLK~m%y4vqe&q@|_ZR5;eC3-9rkf*T{_19jtuWKhdW4Bn|~ zZ-YyFLN!k)0AKg{dO)|v3K?=oy+dzb4%T1F4}JsByncB1Z(`2p@O0!E!JQelouN^* z%Q^YfQUh66D$Zx-RDZvLctsr9`_+1p#tz&4SMd@i_-8()tyg3OyhU~?Gt#-a{NKFN z0VGf+AH%@o6;-_*?$$T4QX-f_>Ny-5CV8Ccq+@>gNSeovbFr0@b}RiTcJbLx>ws&r zsvY!rR{4al#MpVKut~?&kTmF>_v3UaC!gvuxgg%5-{l{20}~&F6CUarF9N=u)BG71 zoQDlAwT+T=mfo&$Xy%4-kmW;4wuh6{{ABClybHV6L>t&k4?9_Ny8A_^?)ff#dEjhL z2RbC~cFVbz^fJ`$I0%prYc0g-9(7X3eUp}^#Mzv)Z1EsGW;qr3cY$+e2HU5d_O9L% zpbljP*1!A0PqpzNo3W&y(hD87qgweq5YQWYEkxrOuSain2-q@Z*P`x*ht-9)Fr5Ho zSTKduvc9h6`S^#$i)LgjDi3_PQ+RbaGP!!di^Y;4kB0lGo$y{if)rJIaXTbpRgO#B z1El6|18;s}$0FRjgK-7~ZwmI`_1{a`32+Y>&O_iTpm%vz6hNkjGR(#*! zpfJ2>OAQbTFba9S3j9BlRHXaG{)Zt(J<3ppA?}j+7F#{bV{M7zU)5e@~R&J_xf$+GKK~ z3{R;Y9fZGe^ifEqKL;!VMXv26=R~^TG(#*2!JKCWoo&c^$utAs#Gfq-?t!c&9TH5- zj&i5L4NWbdNs*djvsY}bC&ddUbh=iyc0;3-@Y#d^s8|Ql{ax(yenFcG#i|K%lRxy| zFys4w!@EPXp2AsbMUGc*eP|7uliAq-O6~(+MR>V(EZTd&9G+MY&gF2lZ=I8j*o`OC z`AxrmOGMeD=H_9Cq47clT|h34>-EI=%;E!my;o&wU(aKV&PymBzrV9q2uA62XS@JrjKYANZAU>;8mag#BU?Nv`+ZVhlAPV`HF_gKY_O zhbV2L`8qvR&f=@M5vH~geD+L&*L2s<)|5)clA0yt9TM{X)iWtx@wJO_!{vR#|AD6t z*OAg2&P_i8jjW5y0DdtOGcqvrCHD*1Uq_q1ZQmngPnf!2fHizH%sSX>#$2Rh!>1ur z+s(*-)abDuePc6~XNG8m@|KMXHVM#G4?~+V z1z!An!D0GD-7WqXE8ddUXLkI%u01$fTEhhy&Z`mr_kcwz5Nh&g=McJ3E!;CE1E0ryV5Ro;>nvtvt zk&I==Xd;cVGZ@>q_xtnx{1uvKPTyjZupK9O(_gR$B#XePw@T6a}I(=v3sn`8+ zpUNDyH={w8<6Gn-e=wHS-vog;TPHWQ<6&jYBDZWT)nNd5_PoEhmk1KDrC*E7dj%i{ zf`2$xWA7dl$O2vpYl+q5Wd)u6poy_)Qc_zLqRa~gao)!+`5sM|Tlw)mV-;|gwjUfS zKwwwY#bM9SChM~ownKAZN|{{Bjs{ViwztSXxy?dr_?6e;sz!3*@g)#*0pdqUENlt% zN=o7_f(hulP}?@O0vc(YXaTgxHbe^(Pc26vo;~@O+MdQW3%?$J*cIgGb(s?iVBjh% zehMzl3j>)k7p|Ac6<`ra2g;adv&ERkuUYqrl2c5*jAMn-PE-qjwE5ZM9%cJMzzb|8 zH^hS1@fcoyVv?Tk*nvlC9b zfy7Zav;`)OmS6o5l8JLa`lT!7bVfiNc|rO~URvXsgz{o0*5Oap3X6VgG*d78KMnGC ztv#&!uG`7=2B{jr(N);@rrdm^LaD|9v=*6f^D<5VIR~{tsqu|v_aF3eu$FF@JpK9j zU zI8q(>AW=>Ow|e=;<_{Rxd0|NJX&^)vorf-XiogcPymbh&dc!9{j-p6(C3jvcAnoc( zIJCAW%Kx}e-wGvE;nVwi|ABaan(pEZR;Jrc5TtUsRYww%*+v%4;>&e(I45nKtiDFF zC56Qd-g(&60aI~>Uo2J>0_}MXe>|JdV-w57K@nVza(fP1W=>mMz^6d>S87R-CP>8h z+Z$tMGfn{%hP(oDq{)=Ux!JOQw&{W@CLU{Mc5`;a8SDsM>kmlnC@o^Yt2p8kWZ6r< zQ7*c{SBRPJ=@RuF9DnW0_3@JSLk<~(qM>a_e>SX{{;k6uGtHkTGgHF>n~<{S=TyN}Jq3m~whCai zb^go{s&Qp)oLIaOoT4S4F=ZpjbcnfFSGk~Gi)mtgu?n!0)}CjltzjF~#Zkm}kY7{` zpn^}LP^m3*)fl_Yw)g8$?PmxMotaL{bbGi1%j^_tR|yQ0qhfyn`-3DCb~2TwQE%O& z&;6zQ!0gt~*n7K7Ua%Oi4@x?z(9uUHWo$>4uc^ZnuDq4)wDwbZum_|I7O8*~8&6Pe zlM~9%&&Sc+I2#^nb4ZPC!Pp`gzGjcOlaCt;Y(BHT&RP1IjJm0woL$-3Fzsn1(uoF8 zfp*A5kC^KB+|aM_mStV)mKBT5UIcbgJ{A}V?Hok8ZirxAI3w*DRH$>3m$0kTrv?TE z5P)21=_&-)f!pth^e4687_-ONGiC^p(Qn|37B~)1f#O)a$YvOT3y8^zpE4%&eGLdL zUP~k$e1`i)hVK}d5vV=sf(EnhwZYZN0W2v8_?s+cR=5T{Q$#1I04y!O8BTbjB^iG{ zN}{0daE1?^mL5;c>D&d;tSEi(NREML#%#>CslvKy8#w~;XqCPZ#R6?G^;JqLVkyz| z3lE33VE_`I;QE6sz}_ey+Q8JD&@{2PKka?e=XA%-+dPw|{K!E4<_`WiOW()iy;!(b?L^4nT zO<)K71j2ozW3kJAHfmX4xKFb*LLANuEemjnT1y*j_UMbH_K;lA^hs$rOO4r6?00$W zmt5nTW#tf7hx)c-GAF<-r?TkA5iF_-_P&6bL75E4~(% zzZO#Y94?_6WO+qFA@Y`l&-cTB$K0sr-JP{{`vGrw)^*f+!=>GzZL5e}=18J<9chl3 z;g}z^r&riFJ5pyKjb?uTwwE*5fFd5pOfk$jF3*XIWGk)*7;gIa;vB;QhS>s4m6h8` z#A+BQ{0>NO)Lb^VmV+(xMefG8tG2o5D*EzL$?Suep+AAx-vd!_#k}yni(ceg?UBKa z>;nS(cI{Gbamtu{6$ktPcO3}J%xJcc?%rK;;=C!NqKxN4J@(qfqxJ+?@7`=b7sQib zh*B|7!z>U}oPs8v%VA483vRspo9jVZe5&%&OcX)kEWwph&D8w_rj2N2_^%fRQh~~N zd$uVw*=F!5BmWfN7DzT!XG}up6HdJL)Piim5?kxrp~D$U_7#h%^mzJ+)arBQwF45b zl8Yv9BU;L@!?57}OkRgr4yyc%@70JIoe}-K7`^PCCQz0!VJh=DrE6C>fhpL~p88!2 zC{MIgP>5!mp^clo^qTA(Z+xzDyeJ^z;9eu@37k^bQpH;^ud}bjHTk6zU4{bwPENt9 zw{cF*R6Z(TMeOb`_7wFT?N>cdpPuE(%qZQYEBSNOpAf>EY}c(F__S(UVBLqs2X@da z7#I<;omu(mP#yh3WNiy9iDRah(*69eYVF-(adqDt`?3;XIKF|T zNHfPdz#s0b@=!X-);t)HwRL{L-mbT;ZgO*EZ606fLQ)AtE9GX~UQ#H++|<3`-&v7F zKZ3lzs0b0RrRlfU52MbSuS6L>aORL#-P~iD$TC4tT5qUolrttSG58$06M+R_0OG4{Z# zVcIRfjqbVK@{P7!)W=7yZ&j*`75WK+y-dNRnZbvzplE)ZydfnzFoWYpwQ>H?#qd8I z!weN2)^5??eP&J`>S>)9!wYWE{W2GzU=jN{Mwc)67T}mVp{I$)WzCMm)1-o8dmr?@{ zM)`*CzFSxV%?AboDX7&gzmt<_1@?MgO@@XcsQWOdxG1n_<;@Icja{7&G>_~ln+klW zKlriKW(x1P3^r#nv2MEfA-6P9zytB=O&3a&Xx0{U^}DxL_6|^m1ftx3LMY=tSvi8Ai;h%G z$E1!?u_WpaspX~|N?No^2a>ADbZQDXAuB6;Q;lnlw(t&bExa*0F<3ugOa`^C#Nu75 z_cnNRC)M*s0`c{qt_JpKt&kzNH9HOV6<`Bpg5cNitgDB2{v_poipW5o65gS3>!T00!~UM5JH;h*}JwOx`E@)6smQe^Y;1iyM` z07#%L0j81XOPXc}{AT~;N~v%vsrPVrgyeaui-Gy>D{UD!!NXBT+O6`ZIwa({tOKsd zt9LRI*cB7M5aZ@u!l#^9L(`$R-%T)NTzqTB6@vMPe^tEC3re~lL3m(bx(N7sM*By6 zNIo{C%syJ$Rd&19sf8EDMOF+g-5yES@Rx6Z^DpdP5pU!yJM3c5?HLfCzU#O2`M#?q z1L%~r+oRxK+Q-zm?Ic7#th172c-G7O?VGGDHQw%wb*m@g5!;ENKMULx3btQ2{cVFa zKoiOiYm&pdIl;|8loTGvYe2){1jdsKzUlG61Xipoz<}zDaDO`HGsAOn7 z{0vwDbTFzm6Ay3BC-oxdaADjGoz}|9;El{fuGCVr<5UJD1O{YOd`ptuJ_xr(+GTO0 zj8AAB9Ynl#_Ekz_JOeBO#jfn65~hUG2yQDRd*hq#vyd9zpD-ol-2z z&I%{Njm@o}NKx7nvzP2`rz8s}^}1KKcEh4o@Hs>Os8}cQ{ax&{0b#pJVZ%Y@3sg+)W@e z1kJyEO+q=M=H_9CVF@AxeLxOrB-{uyE)y*M$b@ z)yG+oEMM_#kg5%m$*(!{QP56tX`S#(00%S3ci(DyE1DIul|dPTu%6Z(=U}2zLhK21 zhbUd5{!JKDcBW57e z+bzg{)aYM5`r2+f-vZGD}6Inrb9S8Ze9W0XB!s+erFh~~i p;S?2Q$?L?{?X#Wxr1tlYN#A^+gtTF>?cc9H!1650yvht6^M8WPw>kg- literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png b/src/doc/user/webhelp/template/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c53cb11904843e176e4ce1f4e7247cd90b3590 GIT binary patch literal 5355 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 t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/folder-closed.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/folder-closed.gif new file mode 100644 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/folder-closed2.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/folder-closed2.gif new file mode 100644 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/folder.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/folder2.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/folder2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 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 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-gray.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-gray.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-red-line.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-red-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-red.gif b/src/doc/user/webhelp/template/common/jquery/treeview/images/treeview-red.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/src/doc/user/webhelp/template/common/jquery/treeview/jquery.treeview.min.js b/src/doc/user/webhelp/template/common/jquery/treeview/jquery.treeview.min.js new file mode 100644 index 00000000..e693321d --- /dev/null +++ b/src/doc/user/webhelp/template/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("

            ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/src/doc/user/webhelp/template/common/main.js b/src/doc/user/webhelp/template/common/main.js new file mode 100644 index 00000000..bcc116fb --- /dev/null +++ b/src/doc/user/webhelp/template/common/main.js @@ -0,0 +1,276 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +//Turn ON and OFF the animations for Show/Hide Sidebar. Extend this to other anime as well if any. +var noAnimations=false; + +$(document).ready(function() { + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[id=' + this.hash.slice(1) +']'); + if (!(this.hash == "#searchDiv" || this.hash == "#treeDiv" || this.hash == "") && $target.length) { + var targetOffset = $target.offset().top - 120; + $('#content') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + expires: 2 // store cookie for 2 days. + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style", ""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style", "display:none;"); + // $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { + return false; + }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is active + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display", "block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 120 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 120; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } +}); + + +/** + * If an user moved to another page by clicking on a toc link, and then clicked on #searchDiv, + * search should be performed if the cookie textToSearch is not empty. + */ +function doSearch() { +//'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('searchForm'); + } +} + +/** + * Synchronize with the tableOfContents + */ +function syncToc() { + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + //Expanding the child sections of the selected node. + var nodeClass = a.getAttribute("class"); + if (nodeClass != null && !nodeClass.match(/collapsable/)) { + a.setAttribute("class", "collapsable"); + //remove display:none; css style from
              block in the selected node. + var ulNode = a.getElementsByTagName("ul")[0]; + if (ulNode != undefined) { + if (ulNode.hasAttribute("style")) { + ulNode.setAttribute("style", "display: block; background-color: #D8D8D8 !important;"); + } else { + var ulStyle = document.createAttribute("style"); + ulStyle.nodeValue = "display: block; background-color: #D8D8D8 !important;"; + ulNode.setAttributeNode(ulStyle); + } } + //adjust tree's + sign to - + var divNode = a.getElementsByTagName("div")[0]; + if (divNode != undefined) { + if (divNode.hasAttribute("class")) { + divNode.setAttribute("class", "hitarea collapsable-hitarea"); + } else { + var divClass = document.createAttribute("class"); + divClass.nodeValue = "hitarea collapsable-hitarea"; + divNode.setAttributeNode(divClass); + } } + //set persistence cookie when a node is auto expanded + // setCookieForExpandedNode("webhelp-currentid"); + } + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; +} } } +/* + function setCookieForExpandedNode(nodeName) { + var tocDiv = document.getElementById("tree"); //get table of contents Div + var divs = tocDiv.getElementsByTagName("div"); + var matchedDivNumber; + var i; + for (i = 0; i < divs.length; i++) { //1101001 + var div = divs[i]; + var liNode = div.parentNode; + } +//create a new cookie if a treeview does not exist + if ($.cookie(treeCookieId) == null || $.cookie(treeCookieId) == "") { + var branches = $("#tree").find("li");//.prepareBranches(treesettings); + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(treeCookieId, data.join("")); + + } + + if (i < divs.length) { + var treeviewCookie = $.cookie(treeCookieId); + var tvCookie1 = treeviewCookie.substring(0, i); + var tvCookie2 = treeviewCookie.substring(i + 1); + var newTVCookie = tvCookie1 + "1" + tvCookie2; + $.cookie(treeCookieId, newTVCookie); + } + } */ + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#sidebar"); //hide the parent div of leftnavigation, ie sidebar + var content = $("#content"); + var animeTime=75 + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + + if(noAnimations) { + leftNavigation.css("display", "none"); + content.css("margin", "125px 0 0 0"); + } else { + leftNavigation.hide(animeTime); + content.animate( { "margin-left": 0 }, animeTime); + } + showHideButton.attr("title", "Show Sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + if(noAnimations) { + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display", "block"); + } else { + content.animate( { "margin-left": '280px' }, animeTime); + leftNavigation.show(animeTime); + } + showHideButton.attr("title", "Hide Sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "5ChRb3=&ZQVnzlQAj!bc045;>L^T7$?XofkpSAlK%2q98 z@L9Ky!54_rZcbrXu)LLF;fhuUThere is no page containing all the search terms.
              Partial results:"; +var warningMsg = '
              '; +warningMsg+='Please note that due to security settings, Google Chrome does not highlight'; +warningMsg+=' the search results in the right frame.
              '; +warningMsg+='This happens only when the WebHelp files are loaded from the local file system.
              '; +warningMsg+='Workarounds:'; +warningMsg+='
                '; +warningMsg+='
              • Try using another web browser.
              • '; +warningMsg+='
              • Deploy the WebHelp files on a web server.
              • '; +warningMsg+='
              '; +txt_filesfound = 'Results'; +txt_enter_at_least_1_char = "You must enter at least one character."; +txt_enter_more_than_10_words = "Only first 10 words will be processed."; +txt_browser_not_supported = "Your browser is not supported. Use of Mozilla Firefox is recommended."; +txt_please_wait = "Please wait. Search in progress..."; +txt_results_for = "Results for: "; + +/* This function verify the validity of search input by the user + Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(searchForm) { + + // Check browser compatibility + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + searchTextField = trim(document.searchForm.textToSearch.value); + searchTextField = searchTextField.replace(/['"]/g,''); + var expressionInput = searchTextField; + $.cookie('textToSearch', expressionInput); + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + + document.searchForm.textToSearch.focus(); + } + else { + var splitSpace = searchTextField.split(" "); + var splitWords = []; + for (var i = 0 ; i < splitSpace.length ; i++) { + var splitDot = splitSpace[i].split("."); + + if(!(splitDot.length == 1)){ + splitWords.push(splitSpace[i]); + } + + for (var i1 = 0; i1 < splitDot.length; i1++) { + var splitColon = splitDot[i1].split(":"); + for (var i2 = 0; i2 < splitColon.length; i2++) { + var splitDash = splitColon[i2].split("-"); + for (var i3 = 0; i3 < splitDash.length; i3++) { + if (splitDash[i3].split("").length > 0) { + splitWords.push(splitDash[i3]); + } + } + } + } + } + noWords = splitWords; + if (noWords.length > 9){ + // Allow to search maximum 10 words + alert(txt_enter_more_than_10_words); + expressionInput = ''; + for (var x = 0 ; x < 10 ; x++){ + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + document.searchForm.textToSearch.focus(); + } else { + // Effectuer la recherche + expressionInput = ''; + for (var x = 0 ; x < noWords.length ; x++) { + expressionInput = expressionInput + " " + noWords[x]; + } + Effectuer_recherche(expressionInput); + // reactive la fenetre de search (utile car cadres) + document.searchForm.textToSearch.focus(); + } + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + // -------------------------------------- + // Begin Thu's patch + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + //The original replacement expression is: + //searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0){ + var searchedWords = noWords.length; + var foundedWords = fileAndWordList[0][0].motslisteDisplay.split(",").length; + //console.info("search : " + noWords.length + " found : " + fileAndWordList[0][0].motslisteDisplay.split(",").length); + if (searchedWords != foundedWords){ + linkTab.push(partialSearch); + } + } + + + for (var i = 0; i < cpt; i++) { + + var hundredProcent = fileAndWordList[i][0].scoring + 100 * fileAndWordList[i][0].motsnb; + var ttScore_first = fileAndWordList[i][0].scoring; + var numberOfWords = fileAndWordList[i][0].motsnb; + + if (fileAndWordList[i] != undefined) { + linkTab.push("

              " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

              "); + + linkTab.push("
                "); + for (t in fileAndWordList[i]) { + //linkTab.push("
              • "+fl[fileAndWordList[i][t].filenb]+"
              • "); + + var ttInfo = fileAndWordList[i][t].filenb; + // Get scoring + var ttScore = fileAndWordList[i][t].scoring; + var tempInfo = fil[ttInfo]; + + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + + // toc.html will not be displayed on search result + if (tempPath == 'toc.html'){ + continue; + } + /* + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
              • " + tempTitle + ""; + // var linkString = "
              • " + tempTitle + ""; + */ + var split = fileAndWordList[i][t].motsliste.split(","); + // var splitedValues = expressionInput.split(" "); + // var finalArray = split.concat(splitedValues); + + arrayString = 'Array('; + for(var x in finalArray){ + if (finalArray[x].length > 2 || useCJKTokenizing){ + arrayString+= "'" + finalArray[x] + "',"; + } + } + arrayString = arrayString.substring(0,arrayString.length - 1) + ")"; + var idLink = 'foundLink' + no; + var linkString = '
              • ' + tempTitle + ''; + var starWidth = (ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent) * (numberOfWords/maxNumberOfWords); + starWidth = starWidth < 10 ? (starWidth + 5) : starWidth; + // Keep the 5 stars format + if (starWidth > 85){ + starWidth = 85; + } + /* + var noFullStars = Math.ceil(starWidth/17); + var fullStar = "curr"; + var emptyStar = ""; + if (starWidth % 17 == 0){ + // am stea plina + + } else { + + } + console.info(noFullStars); + */ + // Also check if we have a valid description + if ((tempShortdesc != "null" && tempShortdesc != '...')) { + + linkString += "\n
                " + tempShortdesc + "
                "; + } + linkString += "
              • "; + + // Add rating values for scoring at the list of matches + linkString += "
                "; + linkString += "
                "; + //linkString += "
                " + // + ((ttScore * 100/ hundredProcent)/(ttScore_first/hundredProcent)) * 1 + "
                "; + linkString += "
                  "; + linkString += "
                • "; + linkString += "
                "; + + linkString += "
                "; + linkString += "
                "; + linkString += "
                "; + //linkString += 'Rating: ' + ttScore + ''; + + linkTab.push(linkString); + no++; + } + linkTab.push("
              "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

              " + txt_results_for + " " + "" + cleanwordsList + "" + "
              "+"

              ");*/ + results = "

              "; + //write("

                "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

                "; + } else { + results = "

                " + localeresource.search_no_results + " " + txt_wordsnotfound + "" + "

                "; + } + + + // Verify if the browser is Google Chrome and the WebHelp is used on a local machine + // If browser is Google Chrome and WebHelp is used on a local machine a warning message will appear + // Highlighting will not work in this conditions. There is 2 workarounds + if (verifyBrowser()){ + document.getElementById('searchResults').innerHTML = results; + } else { + document.getElementById('searchResults').innerHTML = warningMsg + results; + } + +} + + +// Verify if the stemmed word is aproximately the same as the searched word +function verifyWord(word, arr){ + for (var i = 0 ; i < arr.length ; i++){ + if (word[0] == arr[i][0] + && word[1] == arr[i][1] + //&& word[2] == arr[i][2] + ){ + return true; + } + } + return false; +} + +// Look for elements that start with searchedValue. +function wordsStartsWith(searchedValue){ + var toReturn = ''; + for (var sv in w){ + if (searchedValue.length < 3){ + continue; + } else { + if (sv.toLowerCase().indexOf(searchedValue.toLowerCase()) == 0){ + toReturn+=sv + ","; + } + } + } + return toReturn.length > 0 ? toReturn : undefined; +} + + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + // ------------------------------------------------- + // Thu's patch + for(var j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
                dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} + +// return false if browser is Google Chrome and WebHelp is used on a local machine, not a web server +function verifyBrowser(){ + var returnedValue = true; + var browser = BrowserDetect.browser; + var addressBar = window.location.href; + if (browser == 'Chrome' && addressBar.indexOf('file://') === 0){ + returnedValue = false; + } + + return returnedValue; +} + +// Remove duplicate values from an array +function removeDuplicate(arr) { + var r = new Array(); + o:for(var i = 0, n = arr.length; i < n; i++) { + for(var x = 0, y = r.length; x < y; x++) { + if(r[x]==arr[i]) continue o; + } + r[r.length] = arr[i]; + } + return r; +} + +// Create startsWith method +String.prototype.startsWith = function(str) { + return (this.match("^"+str)==str); +} + +function trim(str, chars) { + return ltrim(rtrim(str, chars), chars); +} + +function ltrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); +} + +function rtrim(str, chars) { + chars = chars || "\\s"; + return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); +} diff --git a/src/doc/user/webhelp/template/search/punctuation.props b/src/doc/user/webhelp/template/search/punctuation.props new file mode 100644 index 00000000..d3e3fcd2 --- /dev/null +++ b/src/doc/user/webhelp/template/search/punctuation.props @@ -0,0 +1,31 @@ +Punct01=\\u3002 +Punct02=\\u3003 +Punct03=\\u300C +Punct04=\\u300D +Punct05=\\u300E +Punct06=\\u300F +Punct07=\\u301D +Punct08=\\u301E +Punct09=\\u301F +Punct10=\\u309B +Punct11=\\u2018 +Punct12=\\u2019 +Punct13=\\u201A +Punct14=\\u201C +Punct15=\\u201D +Punct16=\\u201E +Punct17=\\u2032 +Punct18=\\u2033 +Punct19=\\u2035 +Punct20=\\u2039 +Punct21=\\u203A +Punct22=\\u201E +Punct23=\\u00BB +Punct24=\\u00AB +Punct25=© +Punct26=’ +Punct27=\\u00A0 +Punct28=\\u2014 + + + diff --git a/src/doc/user/webhelp/template/search/stemmers/de_stemmer.js b/src/doc/user/webhelp/template/search/stemmers/de_stemmer.js new file mode 100644 index 00000000..7ff3822a --- /dev/null +++ b/src/doc/user/webhelp/template/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/src/doc/user/webhelp/template/search/stemmers/en_stemmer.js b/src/doc/user/webhelp/template/search/stemmers/en_stemmer.js new file mode 100644 index 00000000..2117c1bf --- /dev/null +++ b/src/doc/user/webhelp/template/search/stemmers/en_stemmer.js @@ -0,0 +1,234 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 +// Derived from (http://tartarus.org/~martin/PorterStemmer/js.txt) - cjm (iizuu) Aug 24, 2009 + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = new RegExp("^(.+" + c + ")y$"); + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + // See http://snowball.tartarus.org/algorithms/english/stemmer.html + // "Exceptional forms in general" + var specialWords = { + "skis" : "ski", + "skies" : "sky", + "dying" : "die", + "lying" : "lie", + "tying" : "tie", + "idly" : "idl", + "gently" : "gentl", + "ugly" : "ugli", + "early": "earli", + "only": "onli", + "singly": "singl" + }; + + if(specialWords[origword]){ + w = specialWords[origword]; + } + + if( "sky news howe atlas cosmos bias \ + andes inning outing canning herring \ + earring proceed exceed succeed".indexOf(origword) !== -1 ){ + w = origword; + } + + // Address words overstemmed as gener- + re = /.*generate?s?d?(ing)?$/; + if( re.test(origword) ){ + w = w + 'at'; + } + re = /.*general(ly)?$/; + if( re.test(origword) ){ + w = w + 'al'; + } + re = /.*generic(ally)?$/; + if( re.test(origword) ){ + w = w + 'ic'; + } + re = /.*generous(ly)?$/; + if( re.test(origword) ){ + w = w + 'ous'; + } + // Address words overstemmed as commun- + re = /.*communit(ies)?y?/; + if( re.test(origword) ){ + w = w + 'iti'; + } + + return w; + } +})(); diff --git a/src/doc/user/webhelp/template/search/stemmers/fr_stemmer.js b/src/doc/user/webhelp/template/search/stemmers/fr_stemmer.js new file mode 100644 index 00000000..34f97431 --- /dev/null +++ b/src/doc/user/webhelp/template/search/stemmers/fr_stemmer.js @@ -0,0 +1,299 @@ +/* + * Author: Kasun Gajasinghe + * E-Mail: kasunbg AT gmail DOT com + * Date: 09.08.2010 + * + * usage: stemmer(word); + * ex: var stem = stemmer(foobar); + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html + * + * LICENSE: + * + * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * + * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +var stemmer = function(word){ +// Letters in French include the following accented forms, +// â à ç ë é ê è ï î ô û ù +// The following letters are vowels: +// a e i o u y â à ë é ê è ï î ô û ù + + word = word.toLowerCase(); + var oriWord = word; + word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel + word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y'); + word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1'); + + var rv=''; + var rvIndex = -1; + if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){ + rv = word.substring(3); + rvIndex = 3; + } else { + rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/); + if(rvIndex != -1){ + rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex + rv = word.substring(rvIndex); + } else { + rvIndex = word.length; + } + } + +// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel. +// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel + var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } else { + r1Index = word.length; + } + + var r2Index = -1; + var r2 = ''; + if (r1Index != -1) { + r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + r2Index = word.length; + } + } + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Step 1: Standard suffix removal + */ + var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/); + var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/); + var a3Index = word.search(/(logie|logies)$/); + var a4Index = word.search(/(usion|ution|usions|utions)$/); + var a5Index = word.search(/(ence|ences)$/); + var a6Index = word.search(/(ement|ements)$/); + var a7Index = word.search(/(ité|ités)$/); + var a8Index = word.search(/(if|ive|ifs|ives)$/); + var a9Index = word.search(/(eaux)$/); + var a10Index = word.search(/(aux)$/); + var a11Index = word.search(/(euse|euses)$/); + var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/); + var a13Index = word.search(/(amment)$/); + var a14Index = word.search(/(emment)$/); + var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/); + + if(a1Index != -1 && a1Index >= r2Index){ + word = word.substring(0,a1Index); + } else if(a2Index != -1 && a2Index >= r2Index){ + word = word.substring(0,a2Index); + var a2Index2 = word.search(/(ic)$/); + if(a2Index2 != -1 && a2Index2 >= r2Index){ + word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(a3Index != -1 && a3Index >= r2Index){ + word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2 + } else if(a4Index != -1 && a4Index >= r2Index){ + word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2 + } else if(a5Index != -1 && a5Index >= r2Index){ + word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2 + } else if(a6Index != -1 && a6Index >= rvIndex){ + word = word.substring(0,a6Index); + if(word.search(/(iv)$/) >= r2Index){ + word = word.replace(/(iv)$/, ''); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + } + } else if(word.search(/(eus)$/) != -1){ + var a6Index2 = word.search(/(eus)$/); + if(a6Index2 >=r2Index){ + word = word.substring(0, a6Index2); + } else if(a6Index2 >= r1Index){ + word = word.substring(0,a6Index2)+"eux"; + } + } else if(word.search(/(abl|iqU)$/) >= r2Index){ + word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2, + } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){ + word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2, + } + } else if(a7Index != -1 && a7Index >= r2Index){ + word = word.substring(0,a7Index); //delete if in R2 + if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise, + var a7Index2 = word.search(/(abil)$/); + if(a7Index2 >=r2Index){ + word = word.substring(0, a7Index2); + } else { + word = word.substring(0,a7Index2)+"abl"; + } + } else if(word.search(/(ic)$/) != -1){ + var a7Index3 = word.search(/(ic)$/); + if(a7Index3 != -1 && a7Index3 >= r2Index){ + word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(word.search(/(iv)$/) != r2Index){ + word = word.replace(/(iv)$/,''); + } + } else if(a8Index != -1 && a8Index >= r2Index){ + word = word.substring(0,a8Index); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + if(word.search(/(ic)$/) >= r2Index){ + word = word.replace(/(ic)$/, ''); + } else { word = word.replace(/(ic)$/, 'iqU'); } + } + } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau') + } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al') + } else if(a11Index != -1 ){ + var a11Index2 = word.search(/(euse|euses)$/); + if(a11Index2 >=r2Index){ + word = word.substring(0, a11Index2); + } else if(a11Index2 >= r1Index){ + word = word.substring(0, a11Index2)+"eux"; + } + } else if(a12Index!=-1 && a12Index>=r1Index){ + word = word.substring(0,a12Index+1); //+1- amendment to non-vowel + } else if(a13Index!=-1 && a13Index>=rvIndex){ + word = word.replace(/(amment)$/,'ant'); + } else if(a14Index!=-1 && a14Index>=rvIndex){ + word = word.replace(/(emment)$/,'ent'); + } else if(a15Index!=-1 && a15Index>=rvIndex){ + word = word.substring(0,a15Index+1); + } + + /* Step 2a: Verb suffixes beginning i*/ + var wordStep1 = word; + var step2aDone = false; + if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){ + step2aDone = true; + var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i; + if(word.search(b1Regex) >= rvIndex){ + word = word.replace(b1Regex,'$1'); + } + } + + /* Step 2b: Other verb suffixes*/ + if (step2aDone && wordStep1 == word) { + if (word.search(/(ions)$/) >= r2Index) { + word = word.replace(/(ions)$/, ''); + } else { + var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i; + if (word.search(b2Regex) >= rvIndex) { + word = word.replace(b2Regex, ''); + } else { + var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex) >= rvIndex) { + word = word.replace(b3Regex, ''); + } else { + var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex2) >= rvIndex) { + word = word.replace(b3Regex2, ''); + } + } + } + } + } + + if(oriWord != word.toLowerCase()){ + /* Step 3 */ + var rep = ''; + if(word.search(/Y$/) != -1) { + word = word.replace(/Y$/, 'i'); + } else if(word.search(/ç$/) != -1){ + word = word.replace(/ç$/, 'c'); + } + } else { + /* Step 4 */ + //If the word ends s, not preceded by a, i, o, u, è or s, delete it. + if (word.search(/([^aiouès])s$/) >= rvIndex) { + word = word.replace(/([^aiouès])s$/, '$1'); + } + var e1Index = word.search(/ion$/); + if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) { + word = word.substring(0, e1Index); + } else { + var e2Index = word.search(/(ier|ière|Ier|Ière)$/); + if (e2Index != -1 && e2Index >= rvIndex) { + word = word.substring(0, e2Index) + "i"; + } else { + if (word.search(/e$/) >= rvIndex) { + word = word.replace(/e$/, ''); //delete last e + } else if (word.search(/guë$/) >= rvIndex) { + word = word.replace(/guë$/, 'gu'); + } + } + } + } + + /* Step 5: Undouble */ + //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1'); + word = word.replace(/(en|on)(n)$/,'$1'); + word = word.replace(/(ett)$/,'et'); + word = word.replace(/(el|eil)(l)$/,'$1'); + + /* Step 6: Un-accent */ + word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1'); + word = word.toLowerCase(); + return word; +}; + +var eqOut = new Array(); +var noteqOut = new Array(); +var eqCount = 0; +/* +To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output. +Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will +compare the output with COut. + (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This + will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help. + */ +function testFr(){ + var start = new Date().getTime(); //execution time + eqCount = 0; + eqOut = new Array(); + noteqOut = new Array(); + for(var k=0;k filtertmp && mv -f filtertmp $filter && chmod a+x $filter +done diff --git a/src/filters/msodump.zip b/src/filters/msodump.zip new file mode 100644 index 0000000000000000000000000000000000000000..a1b6d9e61de90398da24afdb46f46058bb2100af GIT binary patch literal 115355 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

                ?yk#q~gA4hde99$K68uwj?fL~lthwX>p{PpAlz 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

                ZBIB%R@j=3xzXgodTDVwo4 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 literal 0 HcmV?d00001 diff --git a/src/filters/ppt-dump.py b/src/filters/ppt-dump.py new file mode 100755 index 00000000..a84eec79 --- /dev/null +++ b/src/filters/ppt-dump.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python2 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +# mso-dumper is not compatible with python3 + +from __future__ import print_function + +import sys, os.path, getopt +sys.path.append(sys.path[0]+"/msodump.zip") +from msodumper import ole, pptstream, globals, olestream +from msodumper.globals import error + +def usage (exname): + exname = os.path.basename(exname) + msg = """Usage: %s [options] [ppt file] + +Options: + --help displays this help message. + --no-struct-output suppress normal structure analysis output + --dump-text extract and print the textual content + --no-raw-dumps suppress raw hex dumps of uninterpreted areas + --id-select=id1[,id2 ...] limit output to selected record Ids +""" % exname + print(msg) + + +class PPTDumper(object): + + def __init__ (self, filepath, params): + self.filepath = filepath + self.params = params + + def __printDirHeader (self, dirname, byteLen): + dirname = globals.encodeName(dirname) + globals.outputln("") + globals.outputln("="*68) + globals.outputln("%s (size: %d bytes)"%(dirname, byteLen)) + globals.outputln("-"*68) + + def dump (self): + file = open(self.filepath, 'rb') + strm = pptstream.PPTFile(file.read(), self.params) + file.close() + strm.printStreamInfo() + strm.printHeader() + strm.printDirectory() + dirnames = strm.getDirectoryNames() + result = True + for dirname in dirnames: + if len(dirname) == 0 or dirname == 'Root Entry': + continue + + try: + dirstrm = strm.getDirectoryStreamByName(dirname) + except Exception as err: + error("getDirectoryStreamByName(%s): %s - %s\n" % (dirname,str(err),self.filepath)) + # The previous version was killed by the exception + # here, so the equivalent is to break, but maybe there + # is no reason to do so. + break + self.__printDirHeader(dirname, len(dirstrm.bytes)) + if dirname == "PowerPoint Document": + if not self.__readSubStream(dirstrm): + result = False + elif dirname == "Current User": + if not self.__readSubStream(dirstrm): + result = False + elif dirname == "\x05DocumentSummaryInformation": + strm = olestream.PropertySetStream(dirstrm.bytes) + strm.read() + else: + globals.dumpBytes(dirstrm.bytes, 512) + return result + + def __readSubStream (self, strm): + # read all records in substream + return strm.readRecords() + + +def main (args): + exname, args = args[0], args[1:] + if len(args) < 1: + print("takes at least one argument") + usage(exname) + return + + try: + opts, args = getopt.getopt(args, "h", + ["help", "debug", "show-sector-chain", + "no-struct-output", "dump-text", + "id-select=", "no-raw-dumps"]) + for opt, arg in opts: + if opt in ['-h', '--help']: + usage(exname) + return + elif opt in ['--debug']: + globals.params.debug = True + elif opt in ['--show-sector-chain']: + globals.params.showSectorChain = True + elif opt in ['--no-struct-output']: + globals.params.noStructOutput = True + elif opt in ['--dump-text']: + globals.params.dumpText = True + elif opt in ['--no-raw-dumps']: + globals.params.noRawDumps = True + elif opt in ['--id-select']: + globals.params.dumpedIds = arg.split(",") + globals.params.dumpedIds = \ + set([int(val) for val in globals.params.dumpedIds if val]) + else: + error("unknown option %s\n"%opt) + usage() + + except getopt.GetoptError: + error("error parsing input options\n") + usage(exname) + return false + + status = True + try: + dumper = PPTDumper(args[0], globals.params) + if not dumper.dump(): + error("ppt-dump: dump error " + args[0] + "\n") + status = False + except: + error("ppt-dump: FAILURE (bad format?) " + args[0] + "\n") + status = False + + if globals.params.dumpText: + print(globals.textdump.replace("\r", "\n")) + return(status) + +if __name__ == '__main__': + if main(sys.argv): + sys.exit(0) + else: + sys.exit(1) + +# vim:set filetype=python shiftwidth=4 softtabstop=4 expandtab: diff --git a/src/filters/rcl7z b/src/filters/rcl7z new file mode 100755 index 00000000..2af73ae6 --- /dev/null +++ b/src/filters/rcl7z @@ -0,0 +1,125 @@ +#!/usr/bin/env python + +# 7-Zip file filter for Recoll + +# Thanks to Recoll user Martin Ziegler +# This is a modified version of rclzip, with some help from rcltar +# Python pylzma library required. See http://www.joachim-bauch.de/projects/pylzma/ + +import sys +import os +import fnmatch +import rclexecm + +try: + import pylzma + from py7zlib import Archive7z +except: + print("RECFILTERROR HELPERNOTFOUND python:pylzma") + sys.exit(1); + +try: + from recoll import rclconfig + hasrclconfig = True +except: + hasrclconfig = False +# As a temporary measure, we also look for rclconfig as a bare +# module. This is so that the intermediate releases of the filter can +# ship and use rclconfig.py with the filter code +if not hasrclconfig: + try: + import rclconfig + hasrclconfig = True + except: + pass + +class SevenZipExtractor: + def __init__(self, em): + self.currentindex = 0 + self.em = em + + def extractone(self, ipath): + #self.em.rclog("extractone: [%s]" % ipath) + docdata = b'' + try: + docdata = self.sevenzip.getmember(ipath).read() + ok = True + except Exception as err: + self.em.rclog("extractone: failed: [%s]" % err) + ok = False + iseof = rclexecm.RclExecM.noteof + if self.currentindex >= len(self.sevenzip.getnames()) -1: + iseof = rclexecm.RclExecM.eofnext + return (ok, docdata, rclexecm.makebytes(ipath), iseof) + + ###### File type handler api, used by rclexecm ----------> + def openfile(self, params): + filename = params["filename:"] + self.currentindex = -1 + self.skiplist = [] + + if hasrclconfig: + config = rclconfig.RclConfig() + config.setKeyDir(os.path.dirname(filename)) + skipped = config.getConfParam("zipSkippedNames") + if skipped is not None: + self.skiplist = skipped.split(" ") + + try: + fp = open(filename, 'rb') + self.sevenzip = Archive7z(fp) + return True + except Exception as err: + self.em.rclog("openfile: failed: [%s]" % err) + return False + + def getipath(self, params): + ipath = params["ipath:"] + ok, data, ipath, eof = self.extractone(ipath) + if ok: + return (ok, data, ipath, eof) + # Not found. Maybe we need to decode the path? + try: + ipath = ipath.decode("utf-8") + return self.extractone(ipath) + except Exception as err: + return (ok, data, ipath, eof) + + def getnext(self, params): + if self.currentindex == -1: + # Return "self" doc + self.currentindex = 0 + self.em.setmimetype('text/plain') + if len(self.sevenzip.getnames()) == 0: + eof = rclexecm.RclExecM.eofnext + else: + eof = rclexecm.RclExecM.noteof + return (True, "", "", eof) + + if self.currentindex >= len(self.sevenzip.getnames()): + #self.em.rclog("getnext: EOF hit") + return (False, "", "", rclexecm.RclExecM.eofnow) + else: + entryname = self.sevenzip.getnames()[self.currentindex] + + if hasrclconfig and len(self.skiplist) != 0: + while self.currentindex < len(self.sevenzip.getnames()): + entryname = self.sevenzip.getnames()[self.currentindex] + for pat in self.skiplist: + if fnmatch.fnmatch(entryname, pat): + entryname = None + break + if entryname is not None: + break + self.currentindex += 1 + if entryname is None: + return (False, "", "", rclexecm.RclExecM.eofnow) + + ret= self.extractone(entryname) + self.currentindex += 1 + return ret + +# Main program: create protocol handler and extractor and run them +proto = rclexecm.RclExecM() +extract = SevenZipExtractor(proto) +rclexecm.main(proto, extract) diff --git a/src/filters/rclabw b/src/filters/rclabw new file mode 100755 index 00000000..f07f0dce --- /dev/null +++ b/src/filters/rclabw @@ -0,0 +1,179 @@ +#!/bin/sh +# @(#$Id: rclabw,v 1.3 2008-10-08 08:27:34 dockes Exp $ (C) 2004 J.F.Dockes +# Parts taken from Estraier: +#================================================================ +# Estraier: a personal full-text search system +# Copyright (C) 2003-2004 Mikio Hirabayashi +#================================================================ +#================================================================ +# Extract text from an abiword file +#================================================================ + +# set variables +LANG=C ; export LANG +LC_ALL=C ; export LC_ALL +progname="rclabw" +filetype=abiword + + +#RECFILTCOMMONCODE +############################################################################## +# !! Leave the previous line unmodified!! Code imported from the +# recfiltcommon file + +# Utility code common to all shell filters. This could be sourced at run +# time, but it's slightly more efficient to include the code in the +# filters at build time (with a sed script). + +# Describe error in a way that can be interpreted by our caller +senderror() +{ + echo RECFILTERROR $* + # Also alert on stderr just in case + echo ":2:$progname::: $*" 1>&2 + exit 1 +} + +iscmd() +{ + cmd=$1 + case $cmd in + */*) + if test -x $cmd -a ! -d $cmd ; then return 0; else return 1; fi ;; + *) + oldifs=$IFS; IFS=":"; set -- $PATH; IFS=$oldifs + for d in $*;do test -x $d/$cmd -a ! -d $d/$cmd && return 0;done + return 1 ;; + esac +} + +checkcmds() +{ + for cmd in $*;do + if iscmd $cmd + then + a=1 + else + senderror HELPERNOTFOUND $cmd + fi + done +} + +# show help message +if test $# -ne 1 -o "$1" = "--help" +then + echo "Convert a $filetype file to HTML text for Recoll indexing." + echo "Usage: $progname [infile]" + exit 1 +fi + +infile="$1" + +# check the input file existence (may be '-' for stdin) +if test "X$infile" != X- -a ! -f "$infile" +then + senderror INPUTNOSUCHFILE "$infile" +fi + +# protect access to our temp files and directories +umask 77 + +############################################################################## +# !! Leave the following line unmodified ! +#ENDRECFILTCOMMONCODE + +checkcmds xsltproc + +xsltproc --nonet --novalid - "$infile" < + + + + + + + + + + + + + + + + + + + +

                + + + + + + + + + +

                + +
                + + + + + + + author + + + + + + + + + keywords + + + + + + + + + keywords + + + + + + + + + abstract + + + + + + + + <xsl:value-of select="."/> + + + + + + + + + +EOF + +# exit normally +exit 0 diff --git a/src/filters/rclaptosidman b/src/filters/rclaptosidman new file mode 100755 index 00000000..661329b7 --- /dev/null +++ b/src/filters/rclaptosidman @@ -0,0 +1,93 @@ +#!/bin/sh +# @(#$Id: rclaptosidman,v 1.1 2010-12-11 12:40:05 dockes Exp $ (C) 2004 J.F.Dockes +# Parts taken from Estraier: +#================================================================ +# Estraier: a personal full-text search system +# Copyright (C) 2003-2004 Mikio Hirabayashi +#================================================================ +#================================================================ +# rclaptosidman +# Strip the menu part from aptosid manual pages to improve search precision +#================================================================ + +# set variables +LANG=C ; export LANG +LC_ALL=C ; export LC_ALL +progname="rclaptosidman" +filetype="aptosid manual htm" + + +#RECFILTCOMMONCODE +############################################################################## +# !! Leave the previous line unmodified!! Code imported from the +# recfiltcommon file + +# Utility code common to all shell filters. This could be sourced at run +# time, but it's slightly more efficient to include the code in the +# filters at build time (with a sed script). + +# Describe error in a way that can be interpreted by our caller +senderror() +{ + echo RECFILTERROR $* + # Also alert on stderr just in case + echo ":2:$progname::: $*" 1>&2 + exit 1 +} + +iscmd() +{ + cmd=$1 + case $cmd in + */*) + if test -x $cmd -a ! -d $cmd ; then return 0; else return 1; fi ;; + *) + oldifs=$IFS; IFS=":"; set -- $PATH; IFS=$oldifs + for d in $*;do test -x $d/$cmd -a ! -d $d/$cmd && return 0;done + return 1 ;; + esac +} + +checkcmds() +{ + for cmd in $*;do + if iscmd $cmd + then + a=1 + else + senderror HELPERNOTFOUND $cmd + fi + done +} + +# show help message +if test $# -ne 1 -o "$1" = "--help" +then + echo "Convert a $filetype file to HTML text for Recoll indexing." + echo "Usage: $progname [infile]" + exit 1 +fi + +infile="$1" + +# check the input file existence (may be '-' for stdin) +if test "X$infile" != X- -a ! -f "$infile" +then + senderror INPUTNOSUCHFILE "$infile" +fi + +# protect access to our temp files and directories +umask 77 + +############################################################################## +# !! Leave the following line unmodified ! +#ENDRECFILTCOMMONCODE + +checkcmds sed +# Delete everything from
              + +

              Lemmatisation

              + +

              Note: je serais preneur d'une traduction française + agréable pour "stemming".

              +

              La lemmatisation transforme un mot dérivé vers sa racine. + Par exemple, aimer, aimerai, aimait, + aimez etc. seraient transformés en aim en + français. Une recherche de l'un quelconque des dérivés peut + automatiquement être étendue vers tous les autres

              + +

              Certains moteurs de recherche appliquent la transformation + pendant l'indexation. L'index ne stocke que les racines des + mots, avec des exceptions pour les termes qui sont reconnus + comme des noms propres (capitalisation). Au moment de la + recherche, les termes de la requête sont également transformés + avant comparaison à l'index.

              + +

              Cette approche permet un index plus petit, mais elle perd + irrévocablement de l'information pendant l'indexation.

              + +

              Recoll fonctionne différemment. Les termes sont indexés sans + transformation. L'index résultant est plus gros, ce qui n'a + probablement pas beaucoup d'importance à une époque de disques + de 100 Go principalement remplis d'information multimédia + non indexée. + +

              À la fin de l'indexation, Recoll construit un ou plusieurs + dictionnaires de transformation (pour différents langages), où + toutes les racines sont listées avec leurs transformations + possibles.

              + + +

              Au moment de la recherche, par défaut, les termes de + l'utilisateurs sont transformés, et étendus aux dérivés par + utilisation du dictionnaire. + Les résultats obtenus sont analogues à ceux de + l'autre méthode. L'avantage est que l'expansion peut être + contrôlée au moment de la recherche: +

                +
              • On peut la supprimer pour n'importe quel terme de la + requête, (en le faisant débuter par une capitale: + Aime par exemple pour chercher la ville d'Aime la + Plagne).
              • +
              • Le langage de transformation peut également être changé, + en supposant que plusieurs dictionnaires de transformation + aient été construits lors de l'indexation.
              • +
              + +
            + + + diff --git a/website/helpernotes.html b/website/helpernotes.html new file mode 100644 index 00000000..d8f5a9b9 --- /dev/null +++ b/website/helpernotes.html @@ -0,0 +1,74 @@ + + + + + RECOLL: a personal text search system for + Unix/Linux + + + + + + + + + + + + + +
            +

            Notes about building/using specific external helper + applications

            + +

            The Python midi module

            +

            The normal procedure for building a Python module + applies:

            +
            
            +          tar xvzf midi-0.2.1.tar.gz
            +          cd midi-0.2.1
            +          python setup.py build
            +          sudo python setup.py install
            +      
            + +

            However, the midi module includes an alsa driver interface + which needs Swig to build and probably does not build at all + on recent Linux versions (the last version for the package + dates from 2006). Recoll does not need midi sequencer hardware + :), so if you don't need for other purposes, you can disable + the Alsa interface by editing setup.py and changing the + platform name at line 37 (the Alsa thing is only tried on + Linux):

            + + +
            
            +          37c37
            +          < if platform.startswith('linux'):
            +          ---
            +          > if platform.startswith('NONE'):
            +      
            + +

            The package should then build and install just fine.

            + +
            + + diff --git a/website/id3lib.html b/website/id3lib.html new file mode 100644 index 00000000..13bb6eba --- /dev/null +++ b/website/id3lib.html @@ -0,0 +1,57 @@ + + + + + RECOLL: building id3lib with gcc 4.4 + + + + + + + + + + + + + + +
            + +

            Compiling id3lib with recent gcc versions (2010-06-29)

            +

            Recoll uses a program installed by the id3lib package for + indexing mp3 files. Id3lib has not been updated for some time and + will not compile with gcc versions after 4.4 because of gcc + incompatibilities.

            +

            Here is a minuscule + patch to help compiling id3lib. To use it:

            +

              +
            • Download the patch (right-click the link and use 'Save As').
            • +
            • Extract the id3 lib source + (tar xvzf id3lib-3.8.3.tar.gz).
            • +
            • Change your current directory to the top of the id3lib source + tree and apply the patch:
              + cd id3lib-3.8.3
              + patch -p1 < /path/to/the/saved/patch
            • +
            • Run autoconf (you may have to install it, but your package + manager can certainly do it for you).
            • +
            • Run make and make install.
            • +
            +
            + + + diff --git a/website/idxthreads/Makefile b/website/idxthreads/Makefile new file mode 100644 index 00000000..5915e44a --- /dev/null +++ b/website/idxthreads/Makefile @@ -0,0 +1,7 @@ +.SUFFIXES: .txt .html + +.txt.html: + asciidoc $< + +all: threadingRecoll.html forkingRecoll.html xapDocCopyCrash.html + diff --git a/website/idxthreads/assembly.dia b/website/idxthreads/assembly.dia new file mode 100644 index 0000000000000000000000000000000000000000..187071ecebd819a3293dfcc279464ba5925e6fdc GIT binary patch literal 2236 zcmV;t2t)TDiwFP!000021MOYwbECE%{hq&q@qTp`B%udQlTO;r-n(=6?oQM6@y&w` zvAMi>5=cge_BS?Ly)e+B)%L$V2`XI zo+W-5&o4*6+`apTkG{V;`_2!&Z^gfP>MbpCN4%EbE=P+jTYY@q}ryN zB~g-E4_7)pi;wGe$$Ax})ohomWF3km+4E{I zNkcyJ=T4e!sMC-7)|C50xDKaLQ1|p< zob{Idb3fTv-%j3xzud0a8j9Q+CBo+c3CQUZG2euKus+hv%4r&MT5OY@AFK6hy0#Tl zT&f6m4iS0JLAuTUhZm`~wl8?w<5=D-3m-mz+o_Xe`oCb7Z43Kz=Ec63`qnqr56RQ$ z#fJzN68e{;PjKtTiGFaewpPiPCWV1b#)tvLNVO97yO1V`>9mTFiZXcdJPNib zIRqjX5Ccxe7y{T8FNlKWWR|4yzEkM4SUF7Iq3jp!OJ`yOrR*0$IA3JV`OCVpcRtYR z1~yGnKS+<2#s=^Uj%!0mA?gOVUL=o`8k2fleNRCtn!qIW{BW~wE|oA9NAfQ&7PRZk zL#WKdG30fdG%ZVoTf8na?dX#I|z~he!?KGUS1Q zqgO)I%GE|dIACsxU#?aG;bj4FjezJDkhj-&*VfJNcemF+-o5|y@$CBJTkFS9AAh~M z{aJi9ax#dVh(VLllcDs4_An|z(z-(zP_2r>*cOK5ngS6;W288IZ!<7aEM2>S2_og7 zwnklnpsZmwG`gZ&SMF|Z|7-p0=Ht!n^_>xtp@amPmuL83PjU4(T17 zV5h*rESD0|`HDfTt$Tc;T)K8r!tL^~L9dkT$`)hPNQrJK`Q2NEqAuRYe(+@dvhuww zFmj?_PVg8B=gEw@8p&)`eSo@EuqWwC>`%NjO&+TmzqCn&6tkX0 zK|DV^kx5h`j!u=fM3AprG%C^b*Lwo;`8U==kY(H3W=TGkXubSayb8S625N4G+nZtK zZnVGbw(>~*5Zdj9&=3PmbW<9-5(l|1EI3X17!n}9@*y}~DPnCZI}b__z`5b}Ka1N$ ziQDw+a2wjakXwfH^l}>$2qlao1Y2^OaEFeO0}$-GChs(EmrGb{G{yKWeY_QLMn$j;kjw#f$#J9}+EQ(Sp*y$f81i14ErX(YKoK{*Oyav32eV-C75 zi(3YncWhkmhqFv)+(^0B+C+^+J)zy@N=)m#HZ3n2?g$nMDQdrBQE{>(2a{v;O}gJ8 znn&)ZK-`B>)B>Wsr~Ea>+48!|<3r6-VefT(wYx)m4)68U7zSO^7Dh#4>rB|N%o5i( zv&=;NbVvN;3^S%k#&Vbm`5g=SHMOoNTul~98vZGolNTNAZz?U-j3Y{;^jw{zwMfh4;#RTafplfJA#g}V#bQSGApLMu@;J+P`V_9yY4-2 z<;5fnDq!RhFjO7^gM`)i`D4?k1#)wuohRbe@8aHO#m~mqV*TNY$Hkcd3 zz~P+9=}Al&G;Ykev9I998V>(bK45_X#9=S8lTgYuJkr-oG z*g|eY;>goV*dVsBzMM_=u=5!z#vZ;}dq|u2BpkPg^efpz-h(|9#!YV0(Rv&*1CSRm zb{;B}8ygUn-!wZ!#ljhjXe^?!h{K#qLGp8x3Bbl64rCB}*vP(pYgC?Ds#QN+f*{R- zZ0rhuNEsnq9zsMg)$b4Mi`j6zio(H2#vi^~f5=tBhfLKU7T@!~1$T8;`eSidXa5Jm KmGn1Mb^rjiKubmd literal 0 HcmV?d00001 diff --git a/website/idxthreads/assembly.png b/website/idxthreads/assembly.png new file mode 100644 index 0000000000000000000000000000000000000000..aaebf2362c0c9761d65f54ec5ab48f86afeef689 GIT binary patch literal 30918 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 literal 0 HcmV?d00001 diff --git a/website/idxthreads/forkingRecoll.txt b/website/idxthreads/forkingRecoll.txt new file mode 100644 index 00000000..cd6b6633 --- /dev/null +++ b/website/idxthreads/forkingRecoll.txt @@ -0,0 +1,224 @@ += Recoll command execution performance +:Author: Jean-François Dockès +:Email: jfd@recoll.org +:Date: 2015-05-22 + +== Abstract + +== Introduction + +The Recoll indexer, *recollindex*, is a big process which executes many +others, mostly for extracting text from documents. Some of the executed +processes are quite short-lived, and the time used by the process execution +machinery can actually dominate the time used to translate data. This +document explores possible approaches to improving performance without +adding excessive complexity or damaging reliability. + +Studying fork/exec performance is not exactly a new venture, and there are +many texts which address the subject. While researching, though, I found +out that not so many were accurate and that a lot of questions were left as +an exercise to the reader. + +== Issues with fork + +The traditional way for a Unix process to start another is the ++fork()+/+exec()+ system call pair. + ++fork()+ duplicates the process address space and resources (open files +etc.), then duplicates the thread of execution, ending up with 2 mostly +identical processes. + ++exec()+ then replaces part of the newly executing process with an address +space initialized from an executable file, inheriting some of the resources +under various conditions. + +This was all fine with the small processes of the first Unix systems, but +as time progressed, processes became bigger and the copy-before-discard +operation was found to waste significant resources. It was optimized using +two methods (at very different points in time): + + - The first approach was to supplement +fork()+ with the +vfork()+ call, which + is similar but does not duplicate the address space: the new process + thread executes in the old address space. The old thread is blocked + until the new one calls +exec()+ and frees up access to the memory + space. Any modification performed by the child thread persists when + the old one resumes. + + - The more modern approach, which cohexists with +vfork()+, was to replace + the full duplication of the memory space with duplication of the page + descriptors only. The pages in the new process are marked copy-on-write + so that the new process has write access to its memory without + disturbing its parent. This approach was supposed to make +vfork()+ + obsolete, but the operation can still be a significant resource consumer + for big processes mapping a lot of memory, so that +vfork()+ is still + around. Programs can have big memory spaces not only because they have + huge data segments (rare), but just because they are linked to many + shared libraries (more common). + +NOTE: Orders of magnitude: a *recollindex* process will easily grow into a +few hundred of megabytes of virtual space. It executes the small and +efficient *antiword* command to extract text from *ms-word* files. While +indexing multiple such files, *recollindex* can spend '60% of its CPU time' +doing `fork()`/`exec()` housekeeping instead of useful work (this is on Linux, +where `fork()` uses copy-on-write). + +Apart from the performance cost, another issue with +fork()+ is that a big +process can fail executing a small command because of the temporary need to +allocate twice its address space. This is a much discussed subject which we +will leave aside because it generally does not concern *recollindex*, which +in typical conditions uses a small portion of the machine virtual memory, +so that a temporary doubling is not an issue. + +The Recoll indexer is multithreaded, which may introduce other issues. Here +is what happens to threads during the +fork()+/+exec()+ interval: + + - +fork()+: + * The parent process threads all go on their merry way. + * The child process is created with only one thread active, duplicated + from the one which called +fork()+ + - +vfork()+ + * The parent process thread calling +vfork()+ is suspended, the others + are unaffected. + * The child is created with only one thread, as for +fork()+. + This thread shares the memory space with the parent ones, without + having any means to synchronize with them (pthread locks are not + supposed to work across processes): caution needed ! + +NOTE: for a multithreaded program using the classical pipe method to +communicate with children, the sequence between the `pipe()` call and the +parent `close()` of the unused side is a candidate for a critical section: +if several threads can interleave in there, children process may inherit +descriptors which 'belong' to other `fork()`/`exec()` operations, which may +in turn be a problem or not depending on how descriptor cleanup is +performed in the child (if no cleanup is performed, pipes may remain open +at both ends which will prevents seeing EOFs etc.). Thanks to StackExchange +user Celada for explaining this to me. + +For multithreaded programs, both +fork()+ and +vfork()+ introduce possibilities +of deadlock, because the resources held by a non-forking thread in the +parent process can't be released in the child because the thread is not +duplicated. This used to happen from time to time in *recollindex* because +of an error logging call performed if the +exec()+ failed after the +fork()+ +(e.g. command not found). + +With +vfork()+ it is also possible to trigger a deadlock in the parent by +(inadvertently) modifying data in the child. This could happen just +link:http://www.oracle.com/technetwork/server-storage/solaris10/subprocess-136439.html[because +of dynamic linker operation] (which, seriously, should be considered a +system bug). + + +In general, the state of program data in the child process is a semi-random +snapshot of what it was in the parent, and the official word about what you +can do is that you can only call +link:http://man7.org/linux/man-pages/man7/signal.7.html[async-safe library +functions] between +fork()+ and +exec()+. These are functions which are +safe to call from a signal handler because they are either reentrant or +can't be interrupted by a signal. A notable missing entry in the list is +`malloc()`. + +These are normally not issues for programs which only fork to execute +another program (but the devil is in the details as demonstrated by the +logging call issue...). + +One of the approaches often proposed for working around this mine-field is +to use an auxiliary small process to execute any command needed by the main +one. The small process can just use +fork()+/+exec()+ with no performance +issues. This has the inconvenient of complicating communication a lot if +data needs to be transferred one way or another. + +//// +Passing descriptors around +http://stackoverflow.com/questions/909064/portable-way-to-pass-file-descriptor-between-different-processes +http://www.normalesup.org/~george/comp/libancillary/ +http://stackoverflow.com/questions/28003921/sending-file-descriptor-by-linux-socket/ + +The process would then be: + - Tell slave to fork/exec cmd (issue with cmd + args format) + - Get fds + - Tell slave to wait, recover status. +//// + +== The posix_spawn() Linux non-event + +Given the performance issues of `fork()` and tricky behaviour of `vfork()`, +a "simpler" method for starting a child process was introduced by Posix: +`posix_spawn()`. + +The `posix_spawn()` function is a black box, externally equivalent to a +`fork()`/`exec()` sequence, and has parameters to specify the usual +house-keeping performed at this time (file descriptors and signals +management etc.). Hiding the internals gives the system a chance to +optimize the performance and avoid `vfork()` pitfalls like the `ld.so` +lockup described in the Oracle article. + +The Linux posix_spawn() is implemented by a `fork()`/`exec()` pair by default. + +`vfork()` is used either if specified by an input flag or no +signal/scheduler/process_group changes are requested. There must be a +reason why signal handling changes would preclude `vfork()` usage, but I +could not find it (signal handling data is stored in the kernel task_struct). + +The Linux glibc `posix_spawn()` currently does nothing that user code could +not do. Still, using it would probably be a good future-proofing idea, but +for a significant problem: there is no way to specify closing all open +descriptors bigger than a specified value (closefrom() equivalent). This is +available on Solaris and quite necessary in fact, because we have no way to +be sure that all open descriptors have the CLOEXEC flag set. + +So, no `posix_spawn()` for us (support was implemented inside +*recollindex*, but the code is normally not used). + +== The chosen solution + +The previous version of +recollindex+ used to use +vfork()+ if it was running +a single thread, and +fork()+ if it ran multiple ones. + +After another careful look at the code, I could see few issues with +using +vfork()+ in the multithreaded indexer, so this was committed. + +The only change necessary was to get rid of an implementation of the +lacking Linux +closefrom()+ call (used to close all open descriptors above a +given value). The previous Recoll implementation listed the +/proc/self/fd+ +directory to look for open descriptors but this was unsafe because of of +possible memory allocations in +opendir()+ etc. + +== Test results + +.Indexing 12500 small .doc files +[options="header"] +|=============================== +|call |real |user |sys +|fork |0m46.025s |0m26.574s |0m39.494s +|vfork |0m18.223s |0m17.753s |0m1.736s +|spawn/fork| 0m45.726s|0m27.082s| 0m40.575s +|spawn/vfork|0m18.915s|0m18.681s|0m3.828s +|recoll 1.18|1m47.589s|0m21.537s|0m29.458s +|================================ + +No surprise here, given the implementation of +posix_spawn()+, it gets the +same times as the +fork()+/+vfork()+ options. + +The tests were performed on an Intel Core i5 750 (4 cores, 4 threads). + +It would be painful to play it safe and discard the 60% reduction in +execution time offered by using +vfork()+, so this was adopted for Recoll +1.21. To this day, no problems were discovered, but, still crossing +fingers... + +The last line in the table is just for the fun: *recollindex* 1.18 +(single-threaded) needed almost 6 times as long to process the same +files... + +//// +Objections to vfork: + sigaction locks +https://bugzilla.redhat.com/show_bug.cgi?id=193631 +Is Linux vfork thread-safe ? Quoting interesting comments from Solaris +implementation: No answer to the issues cited though. +https://sourceware.org/bugzilla/show_bug.cgi?id=378 +Aussi: +http://blog.famzah.net/2009/11/20/fork-gets-slower-as-parent-process-use-more-memory/ +http://blog.famzah.net/2009/11/20/a-much-faster-popen-and-system-implementation-for-linux/ +Avec un workaround basé sur clone (donc linux-only). Tried it but crashes. +//// diff --git a/website/idxthreads/multipara.dia b/website/idxthreads/multipara.dia new file mode 100644 index 0000000000000000000000000000000000000000..941bf31c6969d5f15cd2244a99553a0f3eaf3d86 GIT binary patch literal 2612 zcmV-43d{8$iwFP!000021MOX1bK5o+efO{6D6c9^0K^CD+8wuXwwcW)v#z`Cn}-q^ znOlm~P?SIRVSoExka8?aqD2z~?e0J`$%G1o!wcfz9$Z|2Km2$N{u zIZ-;z!Z@9sj()rP@SPm}cy{zd7zf|OpIIKv9r#7MR9B~?o1$2Je|&s*cZZUPWl&@} zO5zn-M#ujRk|a2WLdT=CBgfgSAPkB?eYgHLD2hCutcu7QR4hlv$TrLZNha_U=PxbA)*+!sZ9^|t)-Nl0TNvg&mh*4jC zIF^jMM9{}}c{$u5>MqV71$X^=n{d(JG} zz4othQDg`1|7(ye+Za%N{f%)iW$!GH!{^CcE74HPT^trS*Y}2+tE&CMQ0=$zGM*&S zzPpdpqPOZF`l){V>69b*)6X?~LseU&iwI@JBKC3@Fzw>SY>gx>*-HKGf>l z<=Qq(_0^WcE+LZOA+E#lk9tBp3vCjXA6#oE|kiy#eyJaoQu ze#-7gPdWrtNF1JyzPRXvx*>)rB4k1ktlgTzh4mJeo zEQuabuuv!`m?IbP2u42X2pA>N{Cb+@>8@1h)2{`!<@mNO=CnhihQnMDgsV zXa=K5l1(rsx`9oyJdE-~rnv~a)dzdNi!sNf8{G0HySv^aSr7Z-m!MSr;W`h(c(rV{ z3M9sX`l~N15;n2&Lz3N1Z-TsNq$Sp+r9iGH6=i(I7lX{?$oESiiG0CMu!ktabWB`z zX_BCQSlEW60uff{jX{pWu;$i2_$`xW5rkn~yzUGF9UH5N?sr;g+mUaTX=;gb3Rf$) zHRHRwxcrCnw~Nmgm*-a>zkF_(`aPqUn#6aO7W;73_s-W~9w!fQdqKJ!Im_ZfId))w z_0wOX0I!lJy?vdU~MsacLiO!Rv7#E({S^=wa1mARi0IOomC#ypL}snD-A?^v-2;GAAvkjc?9`@tfpabX?7Z>Z=qFrR^?fhH?+!A zgjE{P^Q^`jMB{n--UN#=%%-u~Kpq)O@E$6XC&(C67~su15G|ux={t;Aja$T^@9+@w zYg!UpefL)N9n)nb2eyFrf%yYA8p3l$iNd*>cln%^w8SQ9scl&sVoI1#)`;mFBqo8G zfE{b;6&Og6*e*W_LUl*6ZT8%eMB#(g)hxrV(B5x3p z$MpkwK4l{(s+I=b#44}EPOs?-8*H2;nuzf8VkqT->-nJ`O2 zEt_n0TzBHCHK9!%|3b{#?3BnbhAu3=Q_psP{` zJ!CeqSKqXDX@i*7EPpskDo4_tILZE=lAnZf4{i2;YQQpMyVV% zMS|F1V;{lB7H)*rc%46FMd!JteXJr0>MKPjMRU^C#N-CrT0EbzMhngyy*XV0%@GF^y+>!mFb)Z>Ou1$}?H<3S$($GHKvtcTkotJV{pr~ig$ zL3cXAo?qkjugTW0$?ln$TldrxrA054#S2)D?am8vb$Cx3wltZw3%f!8< z+%ho1I&app?0&QCrdsUwUWwhZ7j~_8JhOvV2z-KFRGwJa$@esjXlk;9i?z)A0 z#U{+*%3H#&CoH@F&)Ds0v72xGn)gEQ&G^pyY`Q9E4jb>nc;vWtp1qHJK^SOKqsJ2h z3Mo;l^9d+aeb5J@qeH@16bso2R6l28gL5vYm?tJo%iZLlF6v@;fGwR<0k-xMW(`&Xi zY7E*5B;R1!hV{K9(zkNV$}ua)_RF!$2p)dogzKT%>aYQHn8dV-z!PjwDYjDVtw}N5 zM_f#$2T?=~$HgiXbruX)8{i2DjlXtaOsm=2NHJ(9Qj=oLs1&1hDaNf7vr^1Tv1ha4 ztP~qeih=8pQmDmA$^^Dj%u2CWkYWw5P9ys7;v^E63vDI?Vt_&`6v<9}#JGAnrqnwv zq{T}(HBD=yln7GWr8dSRG2~7r&t{*S_P4+P)4JFJHZQ?w;M%QAL#3J%+C%1=8o*2BT{AnQR764xW;P);N< ztP7<}6_OBwf-aOUW}Z5+L=2(}_uJW|4?CZuV)fyh)rVg5j)WHa(0e6)$a~O-pxo3Z z9izu03xs6_L4OUxp{%O-^_+1Rx}PrvI6nV3Pi3IKxDcCvARxzhbTWg WsxIKqEDz>qNB;x8>tJ*Aod5usL>im` literal 0 HcmV?d00001 diff --git a/website/idxthreads/multipara.png b/website/idxthreads/multipara.png new file mode 100644 index 0000000000000000000000000000000000000000..03da21673429c17e267078563c2bb9c9d4d6dfb9 GIT binary patch literal 36051 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 literal 0 HcmV?d00001 diff --git a/website/idxthreads/nothreads.png b/website/idxthreads/nothreads.png new file mode 100644 index 0000000000000000000000000000000000000000..aa93710d0c82857fb5717730ccdda1195f99a818 GIT binary patch literal 19492 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�Euz*_uE-pOPjwXy6jyOiax<(ygOWxuL|r2 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 literal 0 HcmV?d00001 diff --git a/website/idxthreads/threadingRecoll.html b/website/idxthreads/threadingRecoll.html new file mode 100644 index 00000000..ef927d8d --- /dev/null +++ b/website/idxthreads/threadingRecoll.html @@ -0,0 +1,1296 @@ + + + + + +Converting Recoll indexing to multithreading + + + + + +
            +
            +

            Abstract

            +
            +

            This relates lessons learned while modifying Recoll indexing to be +multithreaded. I am by no means a threaded applications expert, so that a +few of the observations I made whole doing this may be of use to other +novices.

            +
            +
            +
            +

            Introduction

            +
            +

            Recoll is a document indexing application, it +allows you to find documents by specifying search terms.

            +

            The documents need to be indexed for searches to be fast. In a nutshell, +we convert the different document formats to text, then split the text into +terms and remember where those occur. This is a time-consuming operation.

            +

            Up to version 1.18 Recoll indexing is single-threaded: routines which +call each other sequentially.

            +

            In most personal indexer contexts, it is also CPU-bound. There is a lot of +conversion work necessary for turning those PDF (or other) files into +appropriately cleaned up pure text, then split it into terms and update the +index. Given the relatively modest amount of data, and the speed of +storage, I/O issues are secondary.

            +

            Looking at the CPU idle top output stuck at 75% on my quad-core CPU, +while waiting for the indexing to finish, was frustrating, and I was +tempted to find a way to keep those other cores at temperature and shorten +the waiting.

            +

            For some usages, the best way to accomplish this may be to just partition +the index and independantly start indexing on different configurations, +using multiple processes to better utilize the available processing power.

            +

            This is not an universal solution though, as it is complicated to set up, +not optimal in general for indexing performance, and not always optimal +either at query time.

            +

            The most natural way to improve indexing times is to increase CPU +utilization by using multiple threads inside an indexing process.

            +

            Something similar had been done with earlier versions of the Recoll GUI, +which had an internal indexing thread. This had been a frequent source of +trouble though, and linking the GUI and indexing process lifetimes was a +bad idea, so, in recent versions, the indexing is always performed by an +external process. Still, this experience had put in light most of the +problem areas, and prepared the code for further work.

            +

            It should be noted that, as recollindex is both nice'd and ionice'd +as a lowest priority process, it will only use free computing power on the +machine, and will step down as soon as anything else wants to work.

            +
            +
            +

            The only case where you may notice that the indexing is at work +is when the machine is short on memory and things (such as +your Web browser) get swapped-out while you are not actively using +them. You then notice a long delay when you want to start, because they +need to be swapped back in. There is little which can be done about +this. Setting idxflushmb to a low value may help in some cases (depending +on the document sizes). May I also suggest in this case that, if your +machine can take more memory, it may be a good idea to procure some, as +memory is nowadays quite cheap, and memory-starved machines are not fun.

            +
            +

            In general, augmenting the machine utilisation by recollindex just does +not change its responsiveness. My PC has a an Intel Pentium Core i5 750 (4 +cores, no hyperthreading), which is far from being a high performance CPU +(nowadays…), and I often forget that I am running indexing tests, it is +just not noticeable. The machine does have a lot of memory though (12GB).

            +
            +
            +
            +

            The Recoll indexing processing flow

            +
            +
            +
            +Basic flow +
            +
            +

            There are 4 main steps in the recollindex processing pipeline:

            +
              +
            1. +

              +Find the file +

              +
            2. +
            3. +

              +Convert it to text +

              +
            4. +
            5. +

              +Process the text (split, strip etc.) and create a Xapian document +

              +
            6. +
            7. +

              +Update the index +

              +
            8. +
            +

            The first step, walking the file system (or some other data source), is +usually much faster than the others, and we just leave it alone to be +performed by the main thread. It outputs file names (and the associated +POSIX stat data).

            +

            The last step, Xapian index updating, can only be single-threaded.

            +

            The first idea is to change the indexing pipeline so that each step is +performed by an independant worker thread, passing its output to the next +thread, in assembly-line fashion.

            +

            In order to achieve this, we need to decouple the different phases. They +are normally linked by procedure calls, which we replace with a job +control object: the WorkQueue.

            +
            +

            The WorkQueue

            +

            The WorkQueue object is implemented by a reasonably simple class, which +manages an input queue on which client append jobs, and a set of worker +threads, which retrieve and perform the jobs, and whose lifetime are +managed by the WorkQueue object. The +implementation is straightforward with +POSIX threads synchronization functions and C++ STL data structures.

            +

            In practise it proved quite simple to modify existing code to create a job +object and put it on the queue, instead of calling the downstream routine +with the job parameters, while keeping the capacity to call the downstream +routine directly. The kind of coupling is determined either by compilation +flags (for global disabling/enabling of multithreading), or according to +configuration data, which allows experimenting with different threads +arrangements just by changing parameters in a file, without recompiling.

            +

            Each WorkQueue accepts two parameters: the length of the input queue +(before a client will block when trying to add a job), and the number of +worker threads. Both parameters can be set in the Recoll configuration +file for each of the three queues used in the indexing pipeline. Setting +the queue length to -1 will disable the corresponding queue (using a direct +call instead).

            +
            +
            +
            +
            +
            +

            The Assembly Line

            +
            +
            +
            +Assembly line +
            +
            +

            So the first idea is to create 3 explicit threads to manage the file +conversion, the term generation, and the Xapian index update. The first +thread prepares a file, passes it on to the term generation thread, and +immediately goes back to work on the next file, etc.

            +

            The presumed advantage of this method is that the different stages, which +perform disjointed processing, should share little, so that we can hope to +minimize the changes necessitated by the threads interactions.

            +

            However some changes to the code were needed to make this work (and a few +bugs were missed, which only became apparent at later stages, confirming +that the low interaction idea was not completely false).

            +
            +

            Converting to multithreading: what to look for

            +

            I am probably stating the obvious here, but when preparing a program for +multi-threading, problems can only arise where non-constant data is +accessed by different threads.

            +

            Once you have solved the core problems posed by the obvious data that needs +to be shared, you will be left to deal with less obvious, hidden, +interactions inside the program.

            +

            Classically this would concern global or static data, but in a C++ program, +class members will be a concern if a single object can be accessed by +several threads.

            +

            Hunting for static data inside a program of non trivial size is not always +obvious. Two approaches can be used: hunting for the static keyword in +source code, or looking at global and static data symbols in nm output.

            +

            Once found, there are mostly three types of static/global data:

            +
              +
            • +

              +Things that need to be eliminated: for example, routines can be made + reentrant by letting the caller supply a storage buffer instead of using + an internal static one (which was a bad idea in the first place + anyway). +

              +
            • +
            • +

              +Things that need to be protected: sometimes, the best approach is just + to protect the access with a mutex lock. It is trivial to encapsulate + the locks in C++ objects to use the "Resource Acquisition is + Initialization" idiom, easily making sure that locks are freed when + exiting the critical section. A very basic + example of implementation + can be found in the Recoll source code. +

              +
            • +
            • +

              +Things which can stay: this is mostly initialization data such as value + tables which are computed once, and then stay logically constant during + program execution. In order to be sure of a correct single-threaded + initialization, it is best to explicitly initialize the modules or + functions that use this kind of data in the main thread when the program + starts. +

              +
            • +
            +
            +
            +

            Assembly line approach: the results

            +

            Unfortunately, the assembly line approach yields very modest improvements +when used inside Recoll indexing. The reason, is that this method needs +stages of equivalent complexity to be efficient. If one of the stages +dominates the others, its thread will be the only one active at any time, +and little will be gained.

            +

            What is especially problematic is that the balance between tasks need not +only exist on average, but also for the majority of individual jobs.

            +

            For Recoll indexing, even if the data preparation and index update steps +are often of the same order of magnitude on average, their balance +depends a lot on the kind of data being processed, so that things are +usually unbalanced at any given time: the index update thread is mostly +idle while processing PDF files, and the data preparation has little to do +when working on HTML or plain text.

            +

            In practice, very modest indexing time improvements from 5% to 15% were +achieved with this method.

            +
            +
            +
            +
            +

            The next step: multi-stage parallelism

            +
            +
            +
            +Multi-stage parallelism +
            +
            +

            Given the limitations of the assembly line approach, the next step in the +transformation of Recoll indexing was to enable full parallelism wherever +possible.

            +

            Of the four processing steps (see figures), two are not candidates for +parallelization:

            +
              +
            • +

              +File system walking is so fast compared to the other steps that using + several threads would make no sense (it would also quite probably become + IO bound if we tried anyway). +

              +
            • +
            • +

              +The Xapian library index updating code is not designed for + multi-threading and must stay protected from multiple accesses. +

              +
            • +
            +

            The two other steps are good candidates.

            +

            Most of the work to make Recoll code reentrant had been performed for the +previous transformation. Going full-parallel only implied protecting the +data structures that needed to be shared by the threads performing a given +processing step.

            +

            Just for the anecdotic value, a list of the elements that needed mutexes:

            +
              +
            • +

              +Filter subprocesses cache: some file conversion subprocesses may be + expensive (starting a Python process is no piece of cake), so they are + cached for reuse after they are done translating a file. The shared cache + needs protection. +

              +
            • +
            • +

              +Status updates: an object used to update the current file name and indexing + status to a shared file. +

              +
            • +
            • +

              +Missing store: the list of missing helper programs +

              +
            • +
            • +

              +The readonly Xapian database object: a Xapian::Database object which is + used for checking the validity of current index data against a file’s + last modification date. +

              +
            • +
            • +

              +Document existence map: a bit array used to store an existence bit about + every document, and purge the disappeared at the end of the indexing + pass. This is accessed both from the file conversion and database update + code, so it also needed protection in the previous assembly line + approach. +

              +
            • +
            • +

              +Mbox offsets cache. Used to store the offsets of individual messages + inside mbox files. +

              +
            • +
            • +

              +iconv control blocks: these are cached for reuse in several places, and + need protection. Actually, it might be better in multithreading context + to just suppress the reuse and locking. Rough tests seem to indicate that + the impact on overall performance is small, but this might change with + higher parallelism (or not…). +

              +
            • +
            +

            The Recoll configuration also used to be managed by a single shared +object, which is mutable as values may depend on what area of the +file-system we are exploring, so that the object is stateful and updated as +we change directories. The choice made here was to duplicate the object +where needed (each indexing thread gets its own). This gave rise to the +sneakiest bug in the whole transformation (see further down).

            +

            Having a dynamic way to define the threads configuration makes it easy to +experiment. For example, the following data defines the configuration that +was finally found to be best overall on my hardware:

            +
            +
            +
            thrQSizes = 2 2 2
            +thrTCounts =  4 2 1
            +
            +

            This is using 3 queues of depth 2, 4 threads working on file conversion, 2 +on text splitting and other document processing, and 1 on Xapian updating +(no choice here).

            +
            +
            +
            +
            +

            Bench results

            +
            +

            So the big question after all the work: was it worth it ? I could only get +a real answer when the program stopped crashing, so this took some time and +a little faith…

            +

            The answer is mostly yes, as far as I’m concerned. Indexing tests running +almost twice as fast are good for my blood pressure and I don’t need a +faster PC, I’ll buy more red wine instead (good for my health too, or maybe +not). And it was a fun project anyway.

            +
            + + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            Table 1. Results on a variety of file system areas:
            Area Seconds before Seconds after Percent Improvement Speed Factor

            home

            12742

            6942

            46%

            1.8

            mail

            2700

            1563

            58%

            1.7

            projets

            5022

            1970

            61%

            2.5

            pdf

            2164

            770

            64%

            2.8

            otherhtml

            5593

            4014

            28%

            1.4

            +
            +
            + + ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            Table 2. Characteristics of the data
            Area Files MB Files DB MB Documents

            home

            64106

            44897

            1197

            104797

            mail

            813

            232

            663

            47267

            projets

            2056

            34504

            549

            40281

            pdf

            1123

            1139

            111

            1139

            otherhtml

            3442

            223007

            2080

            221890

            +
            +

            home is my home directory. The high megabyte value is due to a number of +very big and not indexed VirtualBox images. Otherwise, it’s a wide +mix of source files, email, miscellaneous documents and ebooks.

            +

            mail is my mail directory, full of mbox files.

            +

            projets mostly holds source files, and a number of documents.

            +

            pdf holds random pdf files harvested on the internets. The performance +is quite spectacular, because most of the processing time goes to +converting them to text, and this is done in parallel. Probably could be +made a bit faster with more cores, until we hit the Xapian update speed +limit.

            +

            otherhtml holds myriad of small html files, mostly from +wikipedia. The improvement is not great here because a lot of time is +spent in the single-threaded Xapian index update.

            +

            The tests were made with queue depths of 2 on all queues, and 4 threads +working on the file conversion step, 2 on the term generation.

            +
            +
            +
            +

            A variation: linear parallelism

            +
            +

            Once past the assembly-line idea, another possible transformation would be +to get rid of the two downstream queues, and just create a job for each +file and let it go to the end (using a mutex to protect accesses to the +writable Xapian database).

            +

            With the current Recoll code, this can be defined by the following +parameters (one can also use a deeper front queue, this changes little):

            +
            +
            +
            thrQSizes = 2 -1 -1
            +thrTCounts =  4 0 0
            +
            +

            In practise, the performance is close to the one for the multistage +version.

            +

            If we were to hard-code this approach, this would be a simpler +modification, necessitating less changes to the code, but it has a slight +inconvenient: when working on a single big multi-document file, no +parallelism at all can be obtained. In this situation, the multi-stage +approach brings us back to the assembly-line behaviour, so the improvements +are not great, but they do exist.

            +
            +
            +
            +

            Miscellany

            +
            +
            +

            The big gotcha: my stack dump staring days

            +

            Overall, debugging the modified program was reasonably +straightforward. Data access synchronization issues mostly provoke dynamic +data corruption, which can be beastly to debug. I was lucky enough that +most crashes occurred in the code that was actually related to the +corrupted data, not in some randomly located and unrelated dynamic memory +user, so that the issues were reasonably easy to find.

            +

            One issue though kept me working for a few days. The indexing process kept +crashing randomly at an interval of a few thousands documents, segfaulting +on a bad pointer. An access to the configuration data structure seemed to +be involved, but, as each thread was supposed to have its own copy, I was +out of ideas.

            +

            After reviewing all the uses for the configuration data (there are quite a +few), the problem was finally revealed to lie with the filter process +cache. Each filter structure stored in the cache stores a pointer to a +configuration structure. This belonged to the thread which initially +created the filter. But the filter would often be reused by a different +thread, with the consequence that the configuration object was now accessed +and modified by two unsynchronized threads… Resetting the config pointer +at the time of filter reuse was the +ridiculously +simple (almost)single-line fix to this evasive problem.

            +

            Looking at multi-threaded stack dumps is mostly fun for people with several +heads, which is unfortunately not my case, so I was quite elated when this +was over.

            +
            +
            +

            Fork performance issues

            +

            On a quite unrelated note, something that I discovered while evaluating the +program performance is that forking a big process like recollindex can be +quite expensive. Even if the memory space of the forked process is not +copied (it’s Copy On Write, and we write very little before the following +exec), just duplicating the memory maps can be slow when the process uses a +few hundred megabytes.

            +

            I modified the single-threaded version of recollindex to use vfork +instead of fork, but this can’t be used with multiple threads (no +modification of the process memory space is allowed in the child between +vfork and exec, so we’d have to have a way to suspend all the threads +first).

            +

            I did not implement a solution to this issue, and I don’t think +that a simple one exists. The workaround is to use modest Xapian flush +values to prevent the process from becoming too big.

            +

            A longer time solution would be to implement a small slave process to do +the executing of ephemeral external commands.

            +
            +
            +
            +
            +

            + + + diff --git a/website/idxthreads/threadingRecoll.txt b/website/idxthreads/threadingRecoll.txt new file mode 100644 index 00000000..09b770a8 --- /dev/null +++ b/website/idxthreads/threadingRecoll.txt @@ -0,0 +1,409 @@ += Converting Recoll indexing to multithreading +:Author: Jean-François Dockès +:Email: jfd@recoll.org +:Date: 2012-12-03 + +== Abstract + +This relates lessons learned while modifying *Recoll* indexing to be +multithreaded. I am by no means a threaded applications expert, so that a +few of the observations I made whole doing this may be of use to other +novices. + +== Introduction + +http://www.recoll.org[*Recoll*] is a document indexing application, it +allows you to find documents by specifying search terms. + +The documents need to be _indexed_ for searches to be fast. In a nutshell, +we convert the different document formats to text, then split the text into +terms and remember where those occur. This is a time-consuming operation. + +Up to version 1.18 *Recoll* indexing is single-threaded: routines which +call each other sequentially. + +In most personal indexer contexts, it is also CPU-bound. There is a lot of +conversion work necessary for turning those PDF (or other) files into +appropriately cleaned up pure text, then split it into terms and update the +index. Given the relatively modest amount of data, and the speed of +storage, I/O issues are secondary. + +Looking at the _CPU idle_ *top* output stuck at 75% on my quad-core CPU, +while waiting for the indexing to finish, was frustrating, and I was +tempted to find a way to keep those other cores at temperature and shorten +the waiting. + +For some usages, the best way to accomplish this may be to just partition +the index and independantly start indexing on different configurations, +using multiple processes to better utilize the available processing power. + +This is not an universal solution though, as it is complicated to set up, +not optimal in general for indexing performance, and not always optimal +either at query time. + +The most natural way to improve indexing times is to increase CPU +utilization by using multiple threads inside an indexing process. + +Something similar had been done with earlier versions of the *Recoll* GUI, +which had an internal indexing thread. This had been a frequent source of +trouble though, and linking the GUI and indexing process lifetimes was a +bad idea, so, in recent versions, the indexing is always performed by an +external process. Still, this experience had put in light most of the +problem areas, and prepared the code for further work. + +It should be noted that, as `recollindex` is both _nice_'d and _ionice_'d +as a lowest priority process, it will only use free computing power on the +machine, and will step down as soon as anything else wants to work. + +**** + +The only case where you may notice that the indexing is at work +is when the machine is short on memory and things (such as +your Web browser) get swapped-out while you are not actively using +them. You then notice a long delay when you want to start, because they +need to be swapped back in. There is little which can be done about +this. Setting _idxflushmb_ to a low value may help in some cases (depending +on the document sizes). May I also suggest in this case that, if your +machine can take more memory, it may be a good idea to procure some, as +memory is nowadays quite cheap, and memory-starved machines are not fun. + +**** + +In general, augmenting the machine utilisation by `recollindex` just does +not change its responsiveness. My PC has a an Intel Pentium Core i5 750 (4 +cores, no hyperthreading), which is far from being a high performance CPU +(nowadays...), and I often forget that I am running indexing tests, it is +just not noticeable. The machine does have a lot of memory though (12GB). + + +== The Recoll indexing processing flow + +image::nothreads.png["Basic flow", float="right"] + +There are 4 main steps in the `recollindex` processing pipeline: + + . Find the file + . Convert it to text + . Process the text (split, strip etc.) and create a *Xapian* document + . Update the index + +The first step, walking the file system (or some other data source), is +usually much faster than the others, and we just leave it alone to be +performed by the main thread. It outputs file names (and the associated +*POSIX* _stat_ data). + +The last step, *Xapian* index updating, can only be single-threaded. + +The first idea is to change the indexing pipeline so that each step is +performed by an independant worker thread, passing its output to the next +thread, in assembly-line fashion. + +In order to achieve this, we need to decouple the different phases. They +are normally linked by procedure calls, which we replace with a job +control object: the 'WorkQueue'. + +=== The WorkQueue + + +The _WorkQueue_ object is implemented by a reasonably simple class, which +manages an input queue on which client append jobs, and a set of worker +threads, which retrieve and perform the jobs, and whose lifetime are +managed by the _WorkQueue_ object. The +https://bitbucket.org/medoc/recoll/src/f06f3aba912045d6ad52e9a0fd930b95e363fd10/src/utils/workqueue.h?at=default[implementation] is straightforward with +*POSIX* threads synchronization functions and C++ *STL* data structures. + +In practise it proved quite simple to modify existing code to create a job +object and put it on the queue, instead of calling the downstream routine +with the job parameters, _while keeping the capacity to call the downstream +routine directly_. The kind of coupling is determined either by compilation +flags (for global disabling/enabling of multithreading), or according to +configuration data, which allows experimenting with different threads +arrangements just by changing parameters in a file, without recompiling. + +Each _WorkQueue_ accepts two parameters: the length of the input queue +(before a client will block when trying to add a job), and the number of +worker threads. Both parameters can be set in the *Recoll* configuration +file for each of the three queues used in the indexing pipeline. Setting +the queue length to -1 will disable the corresponding queue (using a direct +call instead). + +unfloat::[] + + +== The Assembly Line + +image::assembly.png["Assembly line", float="right"] + +So the first idea is to create 3 explicit threads to manage the file +conversion, the term generation, and the *Xapian* index update. The first +thread prepares a file, passes it on to the term generation thread, and +immediately goes back to work on the next file, etc. + +The presumed advantage of this method is that the different stages, which +perform disjointed processing, should share little, so that we can hope to +minimize the changes necessitated by the threads interactions. + +However some changes to the code were needed to make this work (and a few +bugs were missed, which only became apparent at later stages, confirming +that the _low interaction_ idea was not completely false). + +=== Converting to multithreading: what to look for + +I am probably stating the obvious here, but when preparing a program for +multi-threading, problems can only arise where non-constant data is +accessed by different threads. + +Once you have solved the core problems posed by the obvious data that needs +to be shared, you will be left to deal with less obvious, hidden, +interactions inside the program. + +Classically this would concern global or static data, but in a C++ program, +class members will be a concern if a single object can be accessed by +several threads. + +Hunting for static data inside a program of non trivial size is not always +obvious. Two approaches can be used: hunting for the _static_ keyword in +source code, or looking at global and static data symbols in *nm* output. + +Once found, there are mostly three types of static/global data: + + * Things that need to be eliminated: for example, routines can be made + reentrant by letting the caller supply a storage buffer instead of using + an internal static one (which was a bad idea in the first place + anyway). + * Things that need to be protected: sometimes, the best approach is just + to protect the access with a mutex lock. It is trivial to encapsulate + the locks in C++ objects to use the "Resource Acquisition is + Initialization" idiom, easily making sure that locks are freed when + exiting the critical section. A very basic + https://bitbucket.org/medoc/recoll/src/f06f3aba9120/src/utils/ptmutex.h?at=default[example of implementation] + can be found in the *Recoll* source code. + * Things which can stay: this is mostly initialization data such as value + tables which are computed once, and then stay logically constant during + program execution. In order to be sure of a correct single-threaded + initialization, it is best to explicitly initialize the modules or + functions that use this kind of data in the main thread when the program + starts. + +=== Assembly line approach: the results + +Unfortunately, the assembly line approach yields very modest improvements +when used inside *Recoll* indexing. The reason, is that this method needs +stages of equivalent complexity to be efficient. If one of the stages +dominates the others, its thread will be the only one active at any time, +and little will be gained. + +What is especially problematic is that the balance between tasks need not +only exist on average, but also for the majority of individual jobs. + +For *Recoll* indexing, even if the data preparation and index update steps +are often of the same order of magnitude _on average_, their balance +depends a lot on the kind of data being processed, so that things are +usually unbalanced at any given time: the index update thread is mostly +idle while processing PDF files, and the data preparation has little to do +when working on HTML or plain text. + +In practice, very modest indexing time improvements from 5% to 15% were +achieved with this method. + +== The next step: multi-stage parallelism + +image::multipara.png["Multi-stage parallelism", float="right"] + +Given the limitations of the assembly line approach, the next step in the +transformation of *Recoll* indexing was to enable full parallelism wherever +possible. + +Of the four processing steps (see figures), two are not candidates for +parallelization: + + * File system walking is so fast compared to the other steps that using + several threads would make no sense (it would also quite probably become + IO bound if we tried anyway). + * The *Xapian* library index updating code is not designed for + multi-threading and must stay protected from multiple accesses. + +The two other steps are good candidates. + +Most of the work to make *Recoll* code reentrant had been performed for the +previous transformation. Going full-parallel only implied protecting the +data structures that needed to be shared by the threads performing a given +processing step. + +Just for the anecdotic value, a list of the elements that needed mutexes: + +- Filter subprocesses cache: some file conversion subprocesses may be + expensive (starting a Python process is no piece of cake), so they are + cached for reuse after they are done translating a file. The shared cache + needs protection. +- Status updates: an object used to update the current file name and indexing + status to a shared file. +- Missing store: the list of missing helper programs +- The readonly *Xapian* database object: a Xapian::Database object which is + used for checking the validity of current index data against a file's + last modification date. +- Document existence map: a bit array used to store an existence bit about + every document, and purge the disappeared at the end of the indexing + pass. This is accessed both from the file conversion and database update + code, so it also needed protection in the previous assembly line + approach. +- Mbox offsets cache. Used to store the offsets of individual messages + inside *mbox* files. +- *iconv* control blocks: these are cached for reuse in several places, and + need protection. Actually, it might be better in multithreading context + to just suppress the reuse and locking. Rough tests seem to indicate that + the impact on overall performance is small, but this might change with + higher parallelism (or not...). + +The *Recoll* configuration also used to be managed by a single shared +object, which is mutable as values may depend on what area of the +file-system we are exploring, so that the object is stateful and updated as +we change directories. The choice made here was to duplicate the object +where needed (each indexing thread gets its own). This gave rise to the +sneakiest bug in the whole transformation (see further down). + +Having a dynamic way to define the threads configuration makes it easy to +experiment. For example, the following data defines the configuration that +was finally found to be best overall on my hardware: + + thrQSizes = 2 2 2 + thrTCounts = 4 2 1 + +This is using 3 queues of depth 2, 4 threads working on file conversion, 2 +on text splitting and other document processing, and 1 on Xapian updating +(no choice here). + +unfloat::[] + +== Bench results + +So the big question after all the work: was it worth it ? I could only get +a real answer when the program stopped crashing, so this took some time and +a little faith... + +The answer is mostly yes, as far as I'm concerned. Indexing tests running +almost twice as fast are good for my blood pressure and I don't need a +faster PC, I'll buy more red wine instead (good for my health too, or maybe +not). And it was a fun project anyway. + +.Results on a variety of file system areas: +[options="header", width="70%"] +|======================= +|Area |Seconds before |Seconds after| Percent Improvement| Speed Factor +|home |12742 | 6942 | 46%| 1.8 +|mail |2700 | 1563 | 58% | 1.7 +|projets | 5022 | 1970 | 61% | 2.5 +|pdf | 2164 | 770 | 64% | 2.8 +|otherhtml | 5593 | 4014| 28% | 1.4 +|======================= + +.Characteristics of the data +[options="header", width="70%"] +|======================= +|Area | Files MB | Files | DB MB | Documents +|home | 64106 | 44897 | 1197 | 104797 +|mail | 813 | 232 | 663 | 47267 +|projets | 2056 | 34504 | 549 | 40281 +|pdf | 1123 | 1139 | 111 | 1139 +|otherhtml | 3442 | 223007 | 2080 | 221890 | +|======================= + +_home_ is my home directory. The high megabyte value is due to a number of +very big and not indexed *VirtualBox* images. Otherwise, it's a wide +mix of source files, email, miscellaneous documents and ebooks. + +_mail_ is my mail directory, full of *mbox* files. + +_projets_ mostly holds source files, and a number of documents. + +_pdf_ holds random *pdf* files harvested on the internets. The performance +is quite spectacular, because most of the processing time goes to +converting them to text, and this is done in parallel. Probably could be +made a bit faster with more cores, until we hit the *Xapian* update speed +limit. + +_otherhtml_ holds myriad of small html files, mostly from +*wikipedia*. The improvement is not great here because a lot of time is +spent in the single-threaded *Xapian* index update. + +The tests were made with queue depths of 2 on all queues, and 4 threads +working on the file conversion step, 2 on the term generation. + +== A variation: linear parallelism + +Once past the assembly-line idea, another possible transformation would be +to get rid of the two downstream queues, and just create a job for each +file and let it go to the end (using a mutex to protect accesses to the +writable *Xapian* database). + +With the current *Recoll* code, this can be defined by the following +parameters (one can also use a deeper front queue, this changes little): + + thrQSizes = 2 -1 -1 + thrTCounts = 4 0 0 + +In practise, the performance is close to the one for the multistage +version. + +If we were to hard-code this approach, this would be a simpler +modification, necessitating less changes to the code, but it has a slight +inconvenient: when working on a single big multi-document file, no +parallelism at all can be obtained. In this situation, the multi-stage +approach brings us back to the assembly-line behaviour, so the improvements +are not great, but they do exist. + + + +== Miscellany + +=== The big gotcha: my stack dump staring days + +Overall, debugging the modified program was reasonably +straightforward. Data access synchronization issues mostly provoke dynamic +data corruption, which can be beastly to debug. I was lucky enough that +most crashes occurred in the code that was actually related to the +corrupted data, not in some randomly located and unrelated dynamic memory +user, so that the issues were reasonably easy to find. + +One issue though kept me working for a few days. The indexing process kept +crashing randomly at an interval of a few thousands documents, segfaulting +on a bad pointer. An access to the configuration data structure seemed to +be involved, but, as each thread was supposed to have its own copy, I was +out of ideas. + +After reviewing all the uses for the configuration data (there are quite a +few), the problem was finally revealed to lie with the filter process +cache. Each filter structure stored in the cache stores a pointer to a +configuration structure. This belonged to the thread which initially +created the filter. But the filter would often be reused by a different +thread, with the consequence that the configuration object was now accessed +and modified by two unsynchronized threads... Resetting the config pointer +at the time of filter reuse was the +https://bitbucket.org/medoc/recoll/commits/943de4b78818079b0eb6ffd0fcbdfdd0746b4a40[ridiculously +simple (almost)single-line fix] to this evasive problem. + +Looking at multi-threaded stack dumps is mostly fun for people with several +heads, which is unfortunately not my case, so I was quite elated when this +was over. + +=== Fork performance issues + +On a quite unrelated note, something that I discovered while evaluating the +program performance is that forking a big process like `recollindex` can be +quite expensive. Even if the memory space of the forked process is not +copied (it's Copy On Write, and we write very little before the following +exec), just duplicating the memory maps can be slow when the process uses a +few hundred megabytes. + +I modified the single-threaded version of `recollindex` to use *vfork* +instead of *fork*, but this can't be used with multiple threads (no +modification of the process memory space is allowed in the child between +*vfork* and *exec*, so we'd have to have a way to suspend all the threads +first). + +I did not implement a solution to this issue, and I don't think +that a simple one exists. The workaround is to use modest *Xapian* flush +values to prevent the process from becoming too big. + +A longer time solution would be to implement a small slave process to do +the executing of ephemeral external commands. diff --git a/website/idxthreads/xapDocCopyCrash.txt b/website/idxthreads/xapDocCopyCrash.txt new file mode 100644 index 00000000..91833651 --- /dev/null +++ b/website/idxthreads/xapDocCopyCrash.txt @@ -0,0 +1,138 @@ += The case of the bad Xapian::Document copy + +== How things were supposed to work + +Coming from the link:threadingRecoll.html[threading *Recoll*] page, +you may remember that the third stage of the +processing pipeline breaks up text into terms, producing a *Xapian* +document (+Xapian::Document+) which is finally processed by the last stage, +the index updater. + +What happens in practise is that the main routine in this stage has a local ++Xapian::Document+ object, automatically allocated on the stack, which it +updates appropriately and then copies into a task object which is placed on +the input queue for the last stage. + +The text-splitting routine then returns, and its local +Xapian::Document+ +object is (implicitely) deleted while the stack unwinds. + +The idea is that the *copy* of the document which is on the queue should be +unaffected, it is independant of the original and will further be processed +by the index update thread, without interaction with the text-splitting one. + +At no point do multiple threads access the +Xapian::Document+ data, so +there should be no problem. + +== The problem + +Most *Xapian* objects are reference-counted, which means that the object +itself is a small block of house-keeping variables. The actual data is +allocated on the heap through eventual calls to new/malloc, and is shared +by multiple copies of the object. This is the case for +Xapian::Document+ + +This is aboundantly documented, and users are encouraged to use copies +instead of passing pointers around (copies are cheap because only a small +block of auxiliary data is actually duplicated). This in general makes +memory management easier. + +This is well-known, and it would not appear to be a problem in the above +case as the +Xapian::Document+ actual data is never accessed by multiple +threads. + +The problem is that the reference counter which keeps track of the object +usage and triggers actual deletion when it goes to zero is accessed by two +threads: + + - It is decremented while the first local object is destroyed during the + stack unwind in the first thread + - It is also updated by the last stage thread, incremented if copies are + made, then decremented until it finally goes down to 0 when we are done + with the object, at which point the document data is unallocated. + +As the counter is not protected in any way against concurrent access, the +actual sequence of events is undefined and at least two kinds of problems +may occur: double deletion of the data, or accesses to already freed heap +data (potentially thrashing other threads allocations, or reading modified +data). + +A relatively simple fix for this would be to use atomic test-and-set +operations for the counter (which is what the GNU +std::string+ does). But +the choice made by *Xapian* to let the application deal with all +synchronization issues is legitimate and documented, nothing to complain +about here. I just goofed. + +Because the counter test and update operations are very fast, and occur +among a lot of processing from the final stage thread, the chances of +concurrent access are low, which is why the problem manifests itself very +rarely. Depending on thread scheduling and all manners of semi-random +conditions, it is basically impossible to reproduce reliably. + +== The fix + +The implemented fix was trivial: the upstream thread allocates the initial ++Xapian::Document+ on the heap, copies the pointer to the queue object, and +forgets about it. The index-updating thread peruses the object then ++delete+'s it. Real easy. + +An alternative solution would have been to try and use locking to protect +the counter updates. The only place where such locking operations could +reasonably occur is inside the +Xapian::Document+ refcounted pointer +object, which we can't modify. Otherwise, we would have to protect the +_whole scopes of existence_ of the Xapian::Document object in any routine +which creates/copies or (implicitely) deletes it, which would cause many +problems and/or contention issues + +== Why did I miss this ? + +The mechanism of the crashes is simple enough, quasi-obvious. +How on earth could I miss this problem while writing the code ? + +For the sake of anecdote, my first brush with atomicity for updates of +reference counters was while debugging a System V release 4 kernel VFS file +system module, at the time when SVR4 got a preemptive kernel with SVR4-MP, +circa 1990... I ended up replacing a +counter+++ with +atomic_add()+ after +a set of _interesting_ debugging sessions interspersed with kernel crashes +and +fsck+ waits. This should have left some memories. So what went wrong ? +Here follow a list of possible reasons: + +- Reasoning by analogy: std::string are safe to use in this way. The other + objects used in the indexing pipe are also safe. I just used + +Xapian::Document+ in the same way without thinking further. +- Probably not how I would do it: faced with designing +Xapian::Document+, + (not clever enough to do this anyway), I'd probably conclude that not + wanting to deal with full-on concurrency is one thing, not protecting the + reference counters is another, and going too far. +- The problem was not so easily visible because the object deletion is + implicitely performed during the stack unwind: this provides no clue, no + specific operation to think about. +- Pure lazyness. + + +As a conclusion, a humble request to library designers: when an +interface works counter to the reasonable expectations of at least some of +the users (for example because it looks like, but works differently, than a +standard library interface), it is worth it to be very specific in the +documentation and header file comments about the gotcha's. Saving people +from their own deficiencies is a worthy goal. + +Here, a simple statement that the reference count was not mt-safe +(admittedly redundant with the general statement that the *Xapian* library +does not deal with threads), would have got me thinking and avoided the +error. + +++++ +

            Comments

            + +
            + + + comments powered by Disqus + +++++ diff --git a/website/index.html.en b/website/index.html.en new file mode 100644 index 00000000..80c85a0f --- /dev/null +++ b/website/index.html.en @@ -0,0 +1,338 @@ + + + + Recoll text search finds your documents + + + + + + + + + + + + + + + +
            + +

            + Recoll is + a desktop full-text search tool.

            + +

            Recoll finds keywords + inside documents as well as file names.

            +
              +
            • It can search + most document + formats. You may + need external applications for text extraction.
            • +
            • It can reach any storage place: files, + archive members, email attachments, transparently + handling decompression.
            • +
            • One click will open the document inside a native editor or + display an even quicker text preview.
            • +
            • The software is free, open source, + and licensed under the GPL.
            • +
            • Detailed features and + application requirements for supported document types.
            • +
            + +

            The current Recoll version is + 1.21.4 + (Release notes, + known + bugs, Release history).

            + + +

            Recoll is based on the very + strong Xapian search + engine library, for which it provides a powerful text + extraction layer and a complete, yet easy to use, Qt graphical + interface.

            + +

            Recoll will index an MS-Word document + stored as an attachment to an e-mail message inside + a Thunderbird folder archived in a Zip file (and + more...). It will also help you search for it with a friendly and + powerful interface, and let you open a copy of a PDF at the right + page with two clicks. There is little that will remain + hidden on your disk.

            + +

            Recoll has extensive + documentation. If you run into a problem, or want to + propose improvements, you are welcome to use + the + mailing list or problem + tracker.

            + +

            Recoll user ? Maybe there are still a few useful + search tricks that you don't know about. A quick look at + the search + tips might prove useful ! Also the + + Faqs and Howtos on bitbucket.org, and some contributed + result list formats.

            + +

            News

            +
            + +
            + +
            2016-01-12
            It seems that we currently have a + relatively frequent problem resulting in damaged indexes. If + you are experimenting heavy reindexing (incremental indexing + takes longer than it should), or missing search results, + please take a look at the top of + the known bugs page
            + +
            2016-01-12
            Release 1.21.4 is out.
            + +
            2015-11-09
            +
            +
            + Recoll on MS-Windows + Recoll for + MS-Windows. Still a few things missing (like + real-time monitoring), but it does work, and it has a proper + installer, so you can easily get rid of it if you don't like + it. Have a look.. + This is an almost-native port, based on Qt and the Windows + API, no need for Cygwin. Thanks to Christian Motz for + helping with the filter interface (and the rest). I would + love some feedback!
            +
            + +
            2015-10-17
            +
            A bug in the verification of configuration file path variables + generates spurious warnings from recollindex when the + skippedPaths variable contains elements with wildcards. This + has no consequence except for the spurious error + message.
            + +
            2015-10-01
            +
            Release 1.21.2 is out, and replaces 1.20 as production + release.
            + +
            2015-06-30
            +
            A new rclpdf filter, with improved compatibility with + recent poppler pdftotext + versions. See rclpdf + filter.
            + +
            2015-06-16
            +
            Recoll 1.21.0 is out. This has a new query parser and + should be considered an instable release, please do not + package it (1.20.6 is the one you want for stability). It + also changes the way + filters are executed for better performance. See the + release notes for more + detail about the few other changes.
            + +
            2015-04-25
            +
            Recoll 1.20.6 is out, with mostly small fixes to + compressed file handling, which may make a big difference in + some cases. See the release + notes. Of course it also incorportates the Qt 5 + compatibility from 1.20.5 (Qt + 5.3.2 ok, 5.2 does not work).
            + +
            2015-03-30
            +
            Recoll 1.20.4 released. This fixes real time indexing of + the web history (when using the Firefox plugin).
            + +
            2014-12-27
            +
            + Unrtf 21.8 has been released. This fixes many issues + in unrtf, some with possible security implications. You + really want to use this version.
            + +
            2014-12-18
            Recoll 1.20.1 is out and replaces 1.19 + as the main version. I have been using 1.20 for months + (along with a number of fearless builders-from-source), and + it's as stable as 1.19, with nice + small new features. Packages + will follow shortly. It is recommended (but not strictly + required, see the notes) to run an index reset when + upgrading.
            + +
            2014-12-10
            The aspell command used for + orthographic suggestions is broken on Debian Jessie (because + of an aspell packaging issue), and this will not be fixed + for the Debian release. See the + simple workaround here.
            + +
            2014-11-09
            If you are still running anything + older than 1.19.14p2, YOU SHOULD + UPGRADE. In + particular, this index + corruption issue leading to repeated reindexing of + documents, and possibly query problems too, can be pretty + ennoying.
            + GOTO download and + install 1.19.14p2 or 1.20. Reset your index after + upgrading (rm -rf ~/.recoll/xapiandb).
            + +
            2014-07-28
            A nice new application to complement + Recoll: recollfs + implements a Fuse filesystem where Recoll queries are + represented as directories, the contents of which are links + to the result documents.
            + +
            2014-07-16
            Recoll version 1.19.14p2 fixes more + resource management issues in the Python module (only the + Python package needs upgrading for this), and the processing + of Bengali characters (no more diacritics stripping).
            + +
            2014-06-24
            An + updated filter for Open/LibreOffice documents. The + previous version merged words which were tab-separated in + the input.
            + +
            2014-06-17
            The source tarball for version 1.20.0 + has been released. This version has + a number of improvements over + 1.19, but also some incompatibilities. The first minor + releases for 1.20 may contain some functional changes in + addition to bug fixes, so they may be slightly less stable + than 1.19, and 1.19 packages remain the "safe Recoll" for + now. Still, if you build from source, there are a few nice + things in 1.20...
            + +
            2014-06-07
            Version 1.19.14 is out and fixes a + handful of minor-to-ennoying indexing glitches (see the + Release notes).
            + +
            2014-05-06
            Version 1.19.13 is out and hopefully + fixes the remaining (rare) crashes of multithreaded + indexing.
            + +
            2014-04-03
            I have separated the code for the + Recoll + Unity Scope from the main body of code, in hope that it may + interest someone to work on it. It's Python and simple, + mostly depending on the Unity API. The Ubuntu Unity API is + apparently going to change *again* for the next version, and + I think I've seen enough of it.
            + +
            2014-04-02
            1.19.12 is out. It's mostly identical + to 1.19.11 apart from a new parameter to change the max size + of stored attributes. No need to update in general.
            + +
            2014-02-27
            I hear from time to time about + recollindex crashes. These appear to be quite rare, but they + do happen, and I think that they are linked to a yet unfound + bug in multithread indexing. If you experience such crashes or + stalls, you can disable multithreading by adding the following + to your recoll.conf: +
            thrQSizes = -1 -1 -1
            +
            + +
            2014-02-27
            While working on a + + Recoll-Mutt interface I discovered incidentally that + the Recoll + Webui Web interface works quite well with the + links web browser + inside a terminal window. This appears to be an interesting + solution for people looking for a search interface usable in + a non-GUI environment.
            + +
            2013-11-19
            A new + filter for PowerPoint files. The previous one was + based on the ancient catppt from the catdoc + utilities and usually extracted nothing from more recent + PowerPoint files (this is about .ppt: .pptx is handled by a native + Recoll filter).
            + +
            2013-05-18
            Sometimes things + + just work...
            + +
            2013-04-30
            Thanks to some of its users, Recoll now + has filters to + + index and retrieve Lotus Notes messages + (some + + implementation notes from an early user), and there is + also now a + + Web browser interface for querying your Recoll + indexes.
            + +
            2012-10-25
            A problem with a simple workaround has caused + several reported recollindex + crashes recently (for 1.17). If you store and index + Mozilla/Thunderbird email out of the standard location + (~/.thunderbird), you should add the following at the end of + your configuration file (e.g.: + ~/.recoll/recoll.conf):
            
            +              [/path/to/my/mozilla/mail]
            +              mhmboxquirks = tbird
            +          
            Adjust the path to your local value of course... + Without this hint, recollindex has trouble finding the + message delimiters inside the folder files, and will + possibly use all the computer's memory and crash. Apart from + crashes, which only occur for very big folders, this also + causes incorrect mail indexing. +
            + +
            2012-09-11
            A new user-contributed script for those who use + real-time indexing on laptops: stop or start indexing + according to AC power status. See the details on + the + Wiki.
            + +
            2012-04-07
            We now have a Chinese user manual: + Recoll现在有中文手册咯: + + Recoll中文手册,HTML
            + + +
            +
            + +

            Thanks

            +

            Recoll borrows a lot of code + from other packages, and welcomes code and ideas from + contributors, see some of the + Credits.

            + +

            On the side

            + +
            +
            +

            We rent + a big country house in the Aude area, in the south of + France (see + map on the site). If you are + looking for a wonderful country place with a pool to + spend holidays with a big bunch of family and/or + friends in a nice historical but very quiet area, this may be it.

            +
            +
            + +
            + + diff --git a/website/index.html.fr b/website/index.html.fr new file mode 100644 index 00000000..7705f051 --- /dev/null +++ b/website/index.html.fr @@ -0,0 +1,261 @@ + + + + + RECOLL: un outil personnel de recherche textuelle pour + Unix et Linux + + + + + + + + + + + + + + +
            + +

            + Recoll est + un outil personnel de recherche textuelle pour Unix et Linux

            + +

            Il est basé sur le puissant moteur d'indexation Xapian, pour lequel il offre une + interface graphique QT facile d'utilisation, riche, et facile à + mettre en oeuvre.

            + +

            Recoll est un logiciel libre + gratuit, dont le code source est disponible sous licence GPL. + La dernière version est + 1.21.4 + (notes sur la version, en + anglais)

            + +

            L'interface utilisateur de + Recoll est traduite en + Français, mais pas encore la documentation, malheureusement, + et la plupart des liens de cette page pointent sur des textes + en Anglais.

            + + +

            Caractéristiques:

            + +
              +
            • Installation facile, peu de dépendances. Pas besoin de + démon permanent, de serveur http, d'un environnement de bureau + particulier ou d'un langage exotique.
            • + +
            • Tourne sur la plupart des + systèmes fondés sur + Unix.
            • + +
            • Interface conçue avec + Qt 4. (Qt 3 est supporté jusqu'aux versions 1.14.x).
            • + +
            • Traite la plupart des + types de documents courants, les messages et leurs fichiers + attachés. Peut aussi traiter leurs versions comprimées + (gzip ou bzip2) de tous ces documents. + Application externes pour + l'extraction du texte.
            • + +
            • Fonctions de recherche puissantes, avec expressions Booléennes, + phrases et proximité, wildcards, filtrage sur les types de fichiers + ou l'emplacement.
            • + +
            • Multi-langage et multi-jeu de caractères, utilisant + Unicode en interne.
            • + +
            • + (plus de détails)
            • + +
            + +

            Déjà utilisateur ? Il est possible qu'il + y ait encore quelques astuces qui vous aient échappées. Un coup + d'oeil rapide sur la page des petites + recettes de recherche (en anglais) pourrait s'avérer + fructueux ! Également, en anglais, la + + page des questions fréquentes et trucs divers sur + bitbucket.org

            + +

            Nouvelles:

            +
            + +
            2016-01-12
            Version 1.21.4
            + +
            2015-11-09
            + +
            Recoll indexe Windows ! Il y a encore quelques éléments + manquants, comme l'indexation temps-réel, et la traduction + en Français, mais ça marche suffisamment bien pour être + essayé. Il y a un installeur standard, donc si vous n'aimez + pas, c'est facile à désinstaller... + Pas de traduction Française pour le moment. Il y + a quelques + explications en Anglais sur l'installation (triviale, + il faut just installer Recoll et ajouter Python 2.7), et + + l'installeur est là. Si vous l'essayez, dites moi ce + que vous en pensez ! +
            + +
            2015-10-01
            +
            Recoll 1.21.2 devient la version de production. La + principale modification de la version 1.21 est l'utilisation + d'un nouvel interpréteur pour le langage d'interrogation, + autorisant l'utilisation de parenthèses. Également: évite de + réessayer l'indexation de fichiers en erreur, fonction de + sauvegarde/restauration des recherches.
            + +
            2015-04-25
            +
            Recoll 1.20.6 contient des corrections dans le traitement + des fichiers compressés, et la compatibilité Qt 5 (Ok avec Qt + 5.3.2, ne fonctionne pas avec Qt 5.2.
            + +
            2015-03-30
            +
            1.20.4. Corrige l'indexation au fil de l'eau de + l'historique web (en utilisation avec le plugin Firefox).
            + +
            2014-12-18
            Apparition de version 1.20.1 avec + quelques nouvelles fonctions, principalement dans l'interface + graphique.
            + +
            2014-06-07
            La version 1.19.14 corrige encore + quelques problèmes dans l'indexation (erreurs dans la + vérification que l'index est à jour pour un document, + possible arrêt de l'indexation pour 20mn dans certains cas + rares, et autres).
            + +
            2014-05-06
            Version 1.19.13. A de bonnes chances + de corriger les problèmes résiduels de l'indexation + concurrente (multithread).
            + +
            2014-04-02
            Version 1.19.12. C'est la même que la + 1.19.11 à part un paramètre pour la taille des attributs + stockés, qui n'est utile que dans des cas très + particuliers. Inutile de mettre à jour en général.
            +
            2013-11-25
            La version 1.19.11 est sortie. Elle + apporte un Scope pour le Dash de Ubuntu Unity (am I still + speaking French here ?), la compatibilité Python3, et un + nouveau filtre pour les fichiers PowerPoint.
            + +
            2013-11-19
            Un nouveau + filtre pour les fichiers PowerPoint. L'ancien était + basé sur le vénérable catppt de catdoc, et, + le plus souvent, n'extrayait rien des fichiers PowerPoint + récents. (Il s'agit bien de .ppt. .pptx est traité par un + filtre natif).
            + +
            2013-11-11
            La version 1.19.9 est disponible. Elle + corrige quelques défauts, en particulier un problème dans la + gestion des dates dans les requêtes.
            + +
            2013-06-18
            La version 1.19.8 est disponible.
            + +
            2012-11-05
            Recoll 1.18.1 est disponible. Cette + version peut faire des recherches sensibles aux majuscules et + aux accents, donner un accès direct à la bonne page pour les + documents PDF (uniquement avec evince par défaut, + mais il y a une ligne d'example pour qpdfview dans le + fichier de config par défaut), elle a un + historique des recherches complexes, et plein d'autres + petites améliorations. Les notes + de version (en anglais). Cette + version utilise evince par défaut comme visualiseur + PDF même si recoll est configuré pour utiliser les + préférences du bureau. Vous pouvez retrouver le + comportement antérieur en éditant la liste "exceptions" + dans la configuration GUI. +
            + +
            2012-10-25
            Un problème avec une solution simple peut provoquer + des plantages de + recollindex. + Si vous indexez des messages mail Mozilla/Thunderbird + ailleurs qu'à l'endroit standard (~/.thunderbird), vous + devriez ajouter les lignes qui suivent à la fin de votre + fichier de configuration (~/.recoll/recoll.conf): +
            
            +              [/path/to/my/mozilla/mail]
            +              mhmboxquirks = tbird
            +          
            Changez le chemin d'accès pour le votre bien + sûr. Sans cette indication, recollindex a des difficultés à + déterminer les limites de message dans les fichiers mailbox, + et peut arriver à utiliser toute la mémoire de la machine, + et à se planter. Dans les cas moins graves (avec des + fichiers de taille "raisonnable"), cela provoque aussi une + indexation incorrecte des messages. +
            + +
            2012-10-16
            un nouveau filtre + pour les documents EPUB.
            + +
            2012-05-24
            Sortie de la + version 1.17.3. Voir + les les notes. Cette version + corrige un "arrêt imprévu" de l'indexation qui se produisait + parfois en traitant certains messages mail. +
            + +
            2010-11-20
            Un petit script pour activer/cacher recoll sur un + bureau gnome d'un seul coup de clavier: + + recette d'installation.
            + + + +

            Support

            + +

            Si vous avez un problème quelconque avec le logiciel ou son + installation, ou une idée de fonctions à ajouter, merci de me + contacter.

            + +

            Voir aussi la page sur le + développement.

            +

            Liste des problèmes connus (en + anglais).

            + +

            Remerciements

            +

            Recoll emprunte beaucoup de code + d'autres logiciels libres, et accueille volontiers les + contributions en code ou en suggestions, voir la page des + Attributions.

            + +

            Autres

            +

            Je loue une + + grande maison sympa dans l'Aude :), et nous produisons aussi + du + bois de chauffage. (Il faut bien que cette page me serve + tout de même à quelque chose à moi aussi de temps + en temps !).

            + +
            + + diff --git a/website/pages/Makefile b/website/pages/Makefile new file mode 100644 index 00000000..c41a0cac --- /dev/null +++ b/website/pages/Makefile @@ -0,0 +1,9 @@ +.SUFFIXES: .txt .html + +.txt.html: + asciidoc $< + +all: recoll-mingw.html recoll-windows.html + +clean: + rm -f *.html diff --git a/website/pages/recoll-mingw.txt b/website/pages/recoll-mingw.txt new file mode 100644 index 00000000..46849ed9 --- /dev/null +++ b/website/pages/recoll-mingw.txt @@ -0,0 +1,274 @@ += Building Recoll on Microsoft Windows with MinGW +Jean-Francois Dockes + +This document describes building a Recoll distribution, starting from a +pristine Windows machine, using the http://www.mingw.org/[MinGW] port of gcc +and associated tools. + +The resulting package only needs Python (and optionally 7-zip) to be +installed on the target system. + +== Installing MinGW and MSYS + +Download the installer from http://www.mingw.org/, and run it. + +In the following, a number of commands will use a command window with an +MinGW environment. This can be easily created by executing +C:\MinGW\msys\1.0\msys.bat from File Explorer. + +NOTE: you should take care to use the gcc compiler which comes with Qt for +all the following builds. For this, you will want to execute the following +command in the command window: + + export PATH=/c/qt/tools/mingw492_32/bin:$PATH + +== Tortoise HG + +This is needed because there is no source package for recoll or its +dependancies for now, you are going to clone Bitbucket repositories. + +Get it from http://tortoisehg.bitbucket.org/download/index.html + +Then clone the repositories for +https://medoc@bitbucket.org/medoc/recoll[recoll] to C:/recoll and +https://medoc@bitbucket.org/medoc/recoll-windows-deps[some of the +dependancies] to C:/recolldeps + +You can change the target names, but there will be more script editing +later on then (nothing much). + +== Qt + +Download and install Qt 5.5.x (mingw version) from: http://www.qt.io/download/ + +Note: it is not possible to build a static webkit, so the installation is +necessarily dynamic, which means that the Qt DLLS will need to be copied +into the installation directory. This is done by the installation-building +script (using `windeployqt`) + + +== zlib + +Download from http://zlib.net/zlib-1.2.8.tar.gz + +Don't forget the PATH update if not done yet: + + export PATH=/c/qt/tools/mingw492_32/bin:$PATH + +Then, from an MSYS command window (see above): + + cd c:/temp + tar xzf path-to-tar-file + cd zlib-1.2.8 + make -f win32/Makefile.gcc + +== Xapian + +Download from: +http://oligarchy.co.uk/xapian/1.2.21/xapian-core-1.2.21.tar.xz + +Don't forget the PATH update if not done yet: + + export PATH=/c/qt/tools/mingw492_32/bin:$PATH + +Then: + + cd c:/recolldeps + tar xf path-to-tar-file + cd xapian-core-1.2.21 + +- Edit common/safeunistd.h to neutralize the sleep() function definition as + this conflicts with the definition which is part of recent mingw + editions. Replace the "#ifdef __WIN32__" with "#if 0". This is + already fixed in later Xapian versions + +Then: + + CPPFLAGS=-I/c/temp/zlib-1.2.8 LDFLAGS=-L/c/temp/zlib-1.2.8 ./configure + make + +== Recoll + +You need to use the source from the repository, there is no release +supporting Windows at the moment. + +- If not already done, clone the recoll repository from: + https://medoc@bitbucket.org/medoc/recoll to `C:/recoll` + +- Start `QtCreator` and open + `c:/recoll/src/windows/qmkrecoll/librecoll.pro`. At the bottom of the + file, you may need to fix the locations for the xapian and zlib dlls. + +- Build librecoll.pro + +- Do the same (adjust locations and build) for: + + c:/recoll/src/windows/qmkrecoll/rclstartw.pro + c:/recoll/src/windows/qmkrecoll/recollindex.pro + c:/recoll/src/windows/qmkrecoll/recollq.pro + c:/recoll/src/qtgui/recoll-win.pro + + +== Helper applications + +There are a number of useful files stored in a BitBucket repository, you +will need to clone it on the windows machine (the final script, +mkinstdir.sh, expects C:/recolldeps as a cloned location). + + https://medoc@bitbucket.org/medoc/recoll-windows-deps + +== 7-zip + +7-zip is used for all decompression tasks. Install it from +http://www.7-zip.org/ + +== Python + +All Recoll helper scripts (data extractors) are written in Python, and not +yet compatible with Python3. You need to download and install Python 2.7 +from https://www.python.org/downloads/release/python-2710/ + +== Python modules + +Some data formats need library modules not delivered as part of the base +Python installation + +=== libxml2/libxslt + +The precompiled binary is from : +http://users.skynet.be/sbi/libxml-python/ +http://users.skynet.be/sbi/libxml-python/binaries/libxml2-python-2.7.7.win32-py2.7.exe + +The useful parts are stored in recoll-windows-deps repo + +Slightly newer dlls, which should be compatible, here: +https://www.zlatkovic.com/libxml.en.html + +This will be copied into the installation by the mkinstdir.sh script. + +=== mutagen + +Download and extract mutagen from https://pypi.python.org/pypi/mutagen +Then in the mutagen directory (e.g. C:/temp/mutagen-1.31 where it is +expected by `mkinstdir.sh`): + + python setup.py build + +The module will be copied by mkinstdir.sh + +=== epub + +Download from: http://pypi.python.org/pypi/epub/ + +Extract, then execute the following in the extracted directory (e.g.: +`C:/temp/epub-0.5.2` which is expected by `mkinstdir.sh`): + + python setup.py + +The module will be copied by mkinstdir.sh + +=== pyexiv2 + +I did not attempt a build (needs boost-python, scons). +Used an installer from http://tilloy.net/dev/pyexiv2/download.html + +The resulting site-packages data is stored in the recolldeps +repository and copied into the filters directory by the mkinstdir.sh +script. + + +== Non-Python helpers + +== unrtf + +The current unrtf sources can be built with MinGW. + + hg clone http://hg.savannah.gnu.org/hgweb/unrtf/ + + cd c:/unrtf/Windows + make -f Makefile.mingw + +== antiword + +Use the source from recoll-windows-deps (C:/recolldeps/antiword) + + make -f Makefile.mingw. + +== Poppler + +Did not try to compile. Used the binaries from +http://blog.alivate.com.au/poppler-windows/ + +There is a copy in the recoll-windows-deps repository, it will be copied by +the mkinstdir.sh script. + +== libwpd + +We use the wpd2html tool from libwpd 0.10.0, unmodified. This depends on +librevenge 0.0.1 which has been slightly modified to not depend on boost (a +500 MB install if you can believe it). Both files can be found under the +libwpd directory of the recoll-windows-deps repository. + + mkdir c:/temp/libwpd + cd c:/temp/libwpd + + tar xf librevenge-0.0.1.jfd.tar.gz + cd librevenge-0.0.1.jfd + CPPFLAGS=-I/c/temp/zlib-1.2.8 LDFLAGS=-L/c/temp/zlib-1.2.8 configure --disable-tests --without-docs + make + + cd .. + + tar xf /data/source/00DISTS/libwpd-0.10.0.tar.gz + cd libwpd-0.10.0 + REVENGE_CFLAGS=-Ic:/temp/libwpd/librevenge-0.0.1.jfd/inc \ + REVENGE_LIBS="-Lc:/temp/libwpd/librevenge-0.0.1.jfd/src/lib/.libs -lrevenge-0.0" \ + REVENGE_GENERATORS_CFLAGS=-Ic:/temp/libwpd/librevenge-0.0.1.jfd/inc \ + REVENGE_GENERATORS_LIBS="-Lc:/temp/libwpd/librevenge-0.0.1.jfd/src/lib/.libs -lrevenge-generators-0.0" \ + REVENGE_STREAM_CFLAGS=-Ic:/temp/libwpd/librevenge-0.0.1.jfd/inc \ + REVENGE_STREAM_LIBS="-Lc:/temp/libwpd/librevenge-0.0.1.jfd/src/lib/.libs -lrevenge-stream-0.0" \ + configure --without-docs + make + +== chm + +This build uses a slightly modified pychm python modules: for +simplification, the relevant C files from chmlib were included in the +python module itself (in addition to its own C extension file). + +The source package is inside the recoll-windows-deps repository as +pychm-0.8.4.1-git.tar.gz. The build result is also stored, and will be used +directly by the install building script, so the following instructions are +for reference. + +To build the pychm module: + + cd c:/temp + tar xf pychm-0.8.4.1-git.tar.gz + cd pychm-0.8.4.1-git + python setup.py build + +Will probably complain about a missing vc++ compiler, and indicate where to +download VC++ for Python 2.7 (an official Microsoft location). Do it, then +repeat the command: + + python setup.py build + python setup.py bdist + +This creates a zip file inside the dist subdirectory. The contents of this +zip are extracted and the chm/ directory is stored in the +recoll-windows-deps repo for convenience (under pychm/chm) and copied to +the recoll install dir by the install script. + +== Building the install directory + +Once the builds above are performed, edit the mkinstdir.sh script to adjust +the locations, and use it to build the installation directory. The +innosetup script expects it to be c:/install/recoll + +== Building the setup executable + +Install Inno Setup and use src/windows/recoll-setup.iss to generate the +installation executable. + + diff --git a/website/pages/recoll-windows.txt b/website/pages/recoll-windows.txt new file mode 100644 index 00000000..414cf124 --- /dev/null +++ b/website/pages/recoll-windows.txt @@ -0,0 +1,107 @@ += Recoll on Windows +Jean-Francois Dockes + +image:recoll-windows10-thumb.png[link="recoll-windows10.png"] + +Recoll for Windows was built on Windows 7, and tried on Windows 7 and +10. It now seems quite stable (12 November 2015) + +Recoll is free and licensed under the GPL. You will be asked to accept the +license during the installation. For a regular user, and in a nutshell, the +license means that you are free to do what you want with the program (use, +copy, share, etc.). If you are a developper and intend to modify and +distribute the program, you probably know the GPL. Else you should read it. + +I would very much like to get some feedback from actual Windows users (I am +only a visitor to Windows...). Is this useful at all ? What would make it +more useful ? You can use the Disqus comments section at the bottom of this +page, send an email, or use the +https://bitbucket.org/medoc/recoll/issues[BitBucket Recoll issues tracker]. + +Procedure: + +- Download the Recoll setup file from the + http://www.recoll.org/windows/recoll-setup-1.22.0-20151202.exe[Recoll + web site], or (probably faster) from + https://bitbucket.org/medoc/recoll/downloads/recoll-setup-1.22.0-20151202.exe[BitBucket]. + +- Execute the setup file. This is a vanilla installer generated by Inno + Setup, and it will ask the usual questions. + +- Download and install + https://www.python.org/ftp/python/2.7.10/python-2.7.10.msi[Python + 2.7.10]. + *_On the `Customize installation` screen, select "Add python.exe to Path"_* + +- Optional: download and install the 7-zip program from + http://www.7-zip.org/. This is only useful if you need to index files + compressed with Unix methods (not needed for zip files). + +- Start recoll. It will ask if you want to customize the configuration. + The default is to index the content of your user directory. Then start + indexing. This can take some time. + +The default result list font is particularly ugly. Change it from +`Preferences->GUI Configuration->Result List->Result List Font` + +For those of you who would like to build themselves and possibly work on +improving the Windows version, the link:recoll-mingw.html[build instructions]. + +== Recoll Windows tips and tricks + +(not much for now...) + +When filtering the search with a `dir:` clause, an absolute path +should be specified as `/c/mydir` instead of `c:/mydir` + +== Known problems: + +- There is no real-time or scheduled indexing as on Linux. For now, you + create and update the index by using the `File` menu (or executing + `recollindex.exe` from a command window). + +Changes in 20151202 + +- Fixed mbox parsing. This was getting the message separators completely + wrong, and taking a lot of time to do it. This should be especially + welcome by Thunderbird users. + +- Fixed email attachement processing. A fault in the code which saved + attachment data to disk for further processing resulted in a practical + fuzzing experiment on the input processors. Especially, frequent crashes + in the image tag extractor caused very ennoying Windows popups about + a Python error. + + +Fixed in 20151115 and later + +- A relatively rare crash which seemed to occur mostly on some email + messages +- Forgotten MIME settings for .cs, .js and .css + +Fixed in 20151112 and later + +- Forgotten dll prevents the unrtf program to work, so no rtf indexing. + +Fixed in 20151109 (hopefully?) + +- The GUI sometimes crashes when you click `Preview` or `Open`. This does + not occur often, and usually for one of the first tries after starting + the program. Don't despair. This seems to be fixed in the latest version + (20151109), but I am not 100% certain that it is gone. + +++++ +

            Comments

            + +
            + + + comments powered by Disqus +++++ diff --git a/website/perfs.html b/website/perfs.html new file mode 100644 index 00000000..ad7312c0 --- /dev/null +++ b/website/perfs.html @@ -0,0 +1,114 @@ + + + + + RECOLL: a personal text search system for + Unix/Linux + + + + + + + + + + + + + + +
            + +

            Recoll: Indexing performance and index sizes

            + +

            The time needed to index a given set of documents, and the + resulting index size depend of many factors, such as file size + and proportion of actual text content for the index size, cpu + speed, available memory, average file size and format for the + speed of indexing.

            + +

            We try here to give a number of reference points which can + be used to roughly estimate the resources needed to create and + store an index. Obviously, your data set will never fit one of + the samples, so the results cannot be exactly predicted.

            + +

            The following data was obtained on a machine with a 1800 Mhz + AMD Duron CPU, 768Mb of Ram, and a 7200 RPM 160 GBytes IDE + disk, running Suse 10.1.

            + +

            recollindex (version 1.8.2 with xapian 1.0.0) is + executed with the default flush threshold value. + The process memory usage is the one given by ps

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            DataData sizeIndexing timeIndex sizePeak process memory usage
            Random pdfs harvested on Google1.7 GB, 3564 files27 mn230 MB225 MB
            Ietf mailing list archive211 MB, 44,000 messages8 mn350 MB90 MB
            Partial Wikipedia dump15 GB, one million files6H3010 GB324 MB
            Random pdfs harvested on Google
            + Recoll 1.9, idxflushmb set to 10
            1.7 GB, 3564 files25 mn262 MB65 MB
            + +

            Notice how the index size for the mail archive is bigger than + the data size. Myriads of small pure text documents will do + this. The factor of expansion would be even much worse with + compressed folders of course (the test was on uncompressed + data).

            + +

            The last test was performed with Recoll 1.9.0 which has an + ajustable flush threshold (idxflushmb parameter), here + set to 10 MB. Notice the much lower peak memory usage, with no + performance degradation. The resulting index is bigger though, + the exact reason is not known to me, possibly because of + additional fragmentation

            +

            + +
            + + + diff --git a/website/pics/00REMAKEALB.sh b/website/pics/00REMAKEALB.sh new file mode 100644 index 00000000..b90c0ea0 --- /dev/null +++ b/website/pics/00REMAKEALB.sh @@ -0,0 +1,2 @@ +#!/bin/sh +onlylist=1 photalb . . diff --git a/website/pics/index.html b/website/pics/index.html new file mode 100644 index 00000000..3eab3b14 --- /dev/null +++ b/website/pics/index.html @@ -0,0 +1,44 @@ + + + + + Recoll screenshots + + + + + + + + + + + + + + +
            + +

            Recoll Screenshots

            +
          • Back to Recoll home
          • + + + + + + + + + + + + + + + + +
            + diff --git a/website/pics/index.html.head b/website/pics/index.html.head new file mode 100644 index 00000000..32eed3ce --- /dev/null +++ b/website/pics/index.html.head @@ -0,0 +1,27 @@ + + + + + Recoll screenshots + + + + + + + + + + + + + + +
            + +

            Recoll Screenshots

            +
          • Back to Recoll home
          • + diff --git a/website/pics/mario.png b/website/pics/mario.png new file mode 100644 index 0000000000000000000000000000000000000000..773946b027686007789eb61342b522762576d2f2 GIT binary patch literal 1792 zcmV+b2mknqP)T00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-ae1O_-RcFB4s000J`NklWEUJ@=mHJm=gS1tA3g%UVL%kX1sV zP;YPV^XJchgX?fO?%ut-yuADm7@N)3+S=OM+S<|4p;RhEq0q089*?K7vC-r4tjG1r z%1U!{v)OE3+YC2C`uh5Eb93|Z@_vK+>C-1NnLIW&_A7uwp(rjcR;$$>kH_!#_xARR z#p02Xku|{vgMmmS8VrW@xVGEvR4TQ-y?ssV#)Jk!D3M5hFEkKBkH>=#LZOgIB#Jb( zx3?cSaA0n34xcVBFGC1@K3`c`ncZ&3l^BNA)z$rdwe^VC>kWlM__(pL(dl&lQ)t|7 zH;SSbizSkeqUhArR3vO}ZVpA!@czP~K~dCfHb;IL48xpGCyJsjmkUDZa5zvDb-UeR zjMM4#`~48Yn>TM}W@d)<7K-B~=2_c-EoSc}LSTi(!zaJ0ByLa#6;^Gz;7sIC2wPs*opsK2>rKRQA zv10;(007|idM{qQXfzs?N@Ybw1ppur2-MftfBg8-X0v5yXTN&&Don4ftt}}jVX;_R ztu_z{h{fWxv^1GaR$N@1pPzsH_;ICDSyEDxo10ryR0IGRA0Iz|{ydw_HknK_GcyK* z!R2x(l}fAC3IOQp>cTMW)TvVdfHP;#?Ao&l+*;%Dh zX)>8ADk}Ev+o#v-7Zw)E%E}HOKHSpMQd(NNXV0FtwzgH3L?94wI2@Tw77PY;I-S?+ zRjE`%LqluSnx&B-5- zn>TL;05F-%Z{NO!^%)r%L?SUWGm}cC(&=;rL6}S?fj|fbg9w7qXtaNAC11aON+c5F;^G(#1^|G?V)_04Rd^bWh9JnV zoW`u`kz_Ktpr9Z+IvN1L=ksyBN~Jn^^5omMZ*SeYb^7$_+1Xi_%k>9t7Ww)4_wL;T z08l8D(b3UhFnH(AokNEXkw~QW_V!DcF8#TC&6X`&3JlPAs1&1;%448vUm0HQ@AQP@DCP}0-WB@)TQhY!2EyYuq$xLmHo z;gCoqDJdz#!^43 zbV^E!Mx&XSn23#y-MV#aXJ==Be?NghpwsEy-QE5D{Ro0ksno8nE~C*%B9RyjMrvwm zeSN)Ft7Ws<_~Db2let`OO-)T(Tig8nd~a{>qeqW=dU{TrI1w8g8}1}^b#(&+11uIx ztyX{k{vAP(goK37&Q6QPl8}&)n3(wD#S5#|%3`s0?%c`e^NB=aVPT zI-SX6%H?vIOqP(4kdu=G0Eqhg8_H}pFD@?9Xtc-zIXpa!AV@feeLmmV*jRLQbb5OF z#-=g8ES*kYrMFlt4u=B(ux;Bmyx2#I$z-BXDBHJhUylpB-5wtwPbQOB>1SqU>~=ec i!@;Lf|35E(C4T{pyw8jP)=H6xH+o{i&X~ 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 z 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%0AG1I1m~FT6 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 + + + Photo + + +

            Prev Up + Next      + Image

            +

            A customized result list, thanks to Michael Croes. The html code follows, +it should be pasted into the +Preferences->Query Configuration->Result paragraph format string entry. + +

            +<table border="1" bgcolor="lightyellow">
            +    <tr>
            +        <td rowspan="4" width="40px" align="center"
            +                valign="center">
            +            <img src="%I" width="32" height="32">
            +            <p><b>%R</b></p>
            +            <p><a href="P%N">Aperçu</a></p>
            +        </td>
            +        <th colspan="3" bgcolor="lightgrey">%T</th>
            +    </tr>
            +    <tr>
            +        <td align="center">%M</td>
            +        <td align="center">%D</td>
            +        <td align="center">%S</td>
            +    </tr>
            +    <tr>
            +        <td colspan="3"><a href="E%N">%U</a></td>
            +    </tr>
            +    <tr>
            +        <td colspan="3">%A</td>
            +    </tr>
            +</table>
            +

            +

            + + diff --git a/website/pics/recoll-HTML_search_results.png b/website/pics/recoll-HTML_search_results.png new file mode 100644 index 0000000000000000000000000000000000000000..918a596baa2e4c274aacb533ee935dc3e7096ab5 GIT binary patch literal 64035 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 literal 0 HcmV?d00001 diff --git a/website/pics/recoll-HTML_search_results.txt b/website/pics/recoll-HTML_search_results.txt new file mode 100644 index 00000000..04cc7845 --- /dev/null +++ b/website/pics/recoll-HTML_search_results.txt @@ -0,0 +1,28 @@ +A customized result list, thanks to Michael Croes. The html code follows, +it should be pasted into the +Preferences->Query Configuration->Result paragraph format string entry. + +
            +<table border="1" bgcolor="lightyellow">
            +    <tr>
            +        <td rowspan="4" width="40px" align="center"
            +                valign="center">
            +            <img src="%I" width="32" height="32">
            +            <p><b>%R</b></p>
            +            <p><a href="P%N">Aperçu</a></p>
            +        </td>
            +        <th colspan="3" bgcolor="lightgrey">%T</th>
            +    </tr>
            +    <tr>
            +        <td align="center">%M</td>
            +        <td align="center">%D</td>
            +        <td align="center">%S</td>
            +    </tr>
            +    <tr>
            +        <td colspan="3"><a href="E%N">%U</a></td>
            +    </tr>
            +    <tr>
            +        <td colspan="3">%A</td>
            +    </tr>
            +</table>
            +
            diff --git a/website/pics/recoll0-thumb.png b/website/pics/recoll0-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..e403f4b0a2576a6d55810da941733f329d2cca90 GIT binary patch literal 126689 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 AvH$=8 literal 0 HcmV?d00001 diff --git a/website/pics/recoll0.html b/website/pics/recoll0.html new file mode 100644 index 00000000..c5208800 --- /dev/null +++ b/website/pics/recoll0.html @@ -0,0 +1,13 @@ + + + + Photo + + +

            Prev Up + Next      + Image

            +

            Search results.

            +

            + + diff --git a/website/pics/recoll0.png b/website/pics/recoll0.png new file mode 100644 index 0000000000000000000000000000000000000000..62c64a99ae7e60c9917bc063f493b6db32772bc6 GIT binary patch literal 130557 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

            MM? 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

              23%$Md{|QjZ@fNKL~puT+5MrXblnm1 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 HzNG&E7Jdc~ literal 0 HcmV?d00001 diff --git a/website/pics/recoll0.txt b/website/pics/recoll0.txt new file mode 100644 index 00000000..9009b211 --- /dev/null +++ b/website/pics/recoll0.txt @@ -0,0 +1,2 @@ +Search results. + diff --git a/website/pics/recoll1-thumb.png b/website/pics/recoll1-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..a675fb9f267cb68975b6c0c5f20bdb30cd7f2e92 GIT binary patch literal 157729 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 YoAfk%bO+O)I{vM*G%wGe9ND%%+hp>S zI2K0Syt|~sikOa=#u{_~wuYrR8d-p?*_iJEMeH|q?BRs9Qe2Xv0!sqMuc`j>lvB}0+(BHO>`c^|LvM5Mz_j^uj8q<# zd*4AlbN#v~`2(qWm2ryPL4MA8@)_9j2P`lvIU&+fve<#`Z8HGI&HjRi*?)*N|H~s< zaM%L`$3{KhDDcpgln-qoITig&beH>sIzsRo z4H5RH^8|mpzF%Nf3cy>Vyi=}pmlI@R@)|(=N87frit_2JJMF{W0Q@OkXPp*xPkcX~ z^@fbKOrsYyU0r`NNKei7t09JJa@lm5heT^h?}ZDlyY)uCLfD>q&^Tg|P|0x@B|y8_ zEa1@S+YIO+%h)e$koWMrES?k zPBT7;RGR!Q*9GuPVJ7Rh9;$*a@mAM3FUU0>Feh_!M!Lco`hX;gptX^6je}_heW|Ho zysnoO$N+-7Bzel)Be8GurCaj0k|98YOQarr$>!rzT%lxFY24euTeDU%*5YVB%_Y{? z*7f|aDY|v(R0#0zUw_y0lqo_y`}EM4EV)-if?}DoA*H09suZ}xw)#cdo88NvC8!xn zpMx&Gzt#J=UFf|lR*S-Iseyv2BNf%m8&eX~R{#JiW2?8u02 z+7ztnj0QVAY1W?)sqxw4HDOQgX^||mk{&&bY&~9OjZ2>^8L$(IB7;x#dIpfbsP=jH z0p4awVT`Ie!H- z$yd9q--BIFOln8%g4I8ee3=4v36Fk_Eu^`@?}xfZ2qdwfi;KjPb`aGRtT-8DB=%U> z-vv`ac#*fqxZ~Y5#kfDChTh@KB}5w%j>2O$;d$J#(L(Kn4IecS?=3?D7;}s-Ioe^& zmaxb-bnr{`bxJlPBqWzJG*dCLKH3lwCb>XMz7i1WZOqFBCW_-^?`w5Ir zi%TJs3puVzB!$sZ&@$SACJnt3zal-TOqC42kuOr9uAck=vl*J)19jQAvN119w*DX) zW|tbqZzh<7w6GwNJ0X7HllGSRmiZeQ$~9_$e70oFrpPzkj{ja55)C(*trV!Ab4y(- zUAzUya|vX^ue|HNT+FN{O=0w?5_~hNF-w4!Sy@;$3%Ej7 zI1SzS?Ao^Ra6z0)oZygMzgGj%+)aGI*liQQXMjGBgmzuQO|?HghJ~{k=ip|Bk>hMq z)tJ=CYuOz%zo6;jdtaeA0DiB_PpQilZVjW^mBcTxmYO8%5^`0!#*${u-{%_y{v>fP z@SJ;;yp@WcA%7&TH1Q;&t9vcz@L1Uu{3D)Xt#%tEgXdgZ>zWx@>%_gErP0Vwh2^|y zCbHy}--GgFzXn<0Y8P$C-5>pUg1G)}=?e2PZT|V1+pn3s#Rn#SDj9x+ty29<EBXdcVCyUrI9 zuyrkW;iRzfS=)V5G4e^I89fu8$tt12H~g2&j~BQ|UGWv2hxBHkb9K#4%^RB3rlKv^ zlwHM<@1x8}LF7-l>%IL2e0kdE1ou@3b@8JJrznm^%26~a#3{SQ29<38{*-w$|Iy9x z!)#7#N5hMs6tH{HCBOX4EaZuki~g9`g~Mb+Gl~00&b8vl58ZvHqdDME@(yne!}umi zp53RRc<8F<>g1}>g70M2m^)d&)o;`ON9{@5Tk8zCxAJngwDrv^y+;O8$m_BCOxFo` z!##V=8Wsf0J>~9$U|OFTdqst~^uFJ2G}fox&B-UU-Q

              EwCo8THAiZeeWaap&W_Q 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 + + + Photo + + +

              +

              A result list with a preview window open.

              +

              + + diff --git a/website/pics/recoll1.png b/website/pics/recoll1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6104b22337e1a9a25edeb7344cb87da99952e03 GIT binary patch literal 185674 zcmYg%1yozz(sr<-1%gv365O>AibIg#THLKrBxr%6#l1jqD-JC!)cHoq^g6*4ejS?ZEc^gm*1^0HotTK-rjue`*Jw~ zdv{}MXC`>&>L%u|}~zHGL|1-%1#z09@~HDs5?@ZRHV@y65m&d?g*Ph(+^=+uCV` z$&Z*~+zNHrB4?Le?5n{*-ruYUOHLkH`uUp{(#dGeNlJ5!Lm;D)>P>-#AqzmzeKfs0I$9Lw8f zGEB^>I;2S@+a}|Zb?;?J^{Q=63ubWV#Xqxu6R+Yo)5Ppz9u4=GWmW0Cc{UvSAoZ8l zx^RMlw-~7{KZjlx$FVG??Twqji_uDk)LCNPOI+QrMu%~9qaM5}c$^qjUn&7C*olwC z6*f))<=6~thj{XtK%EwTe$tRy{4Nr35HWT>3kpDuY0h+Ww}#n4iU($j^o$4-?CgN} zzz31Y?cUL)I>fhqB$C))a~B=Op;Nxc0%p&Q6BqUfD_qe zfBj0rYKz+DrMBvy5Zwc;C!MCeK~{i7OosA9ns5~^;lwZ@CUtya_}kIas;_}G`bA1I zS@OZb(x#@Sf_7UPiI2sJ^Tgbd(GThBe7{l=5fhjE#Kps8=nz2Qt#HU+h(rFkaN(aP z>0zem`ZM6zQOs%hyX^-M6>c+UePvERlB2~cMuIId6*{`X)F^qts04VM)O>J9YVl*f z?5)4bfhIG=-#zXkm8_S+(Yx^CrsNyGkxTCQ`5B^mhS?vieeo1H!jZVW={Q}ldaWU> z?F0;cX;K?yaM8h1f9~?h9fOIK-W-sRMUNSt%Z@FTco+knHyb>WN@SE}z#+EhlFOz2 z<g7jl8vn7d+rHf9H;SGRzO4moB#d~;^hVZ@s^ILG!! zobob?Ld8M}Kcad4&Zq@x@O)0MXN7*2(o_j36l<$yb7WWTog~5A1VK+MzPyPc>PkUb*k>O(N&$cvK+>Tj5JRGqCszBLLFJH+N%ad+J&5wpsY;3`Ri|WX z*4i8%8HL|%BU8FQ{w}Jz$fxeTE7P4ab2Pv+&q=BvMI6&@<}_`ky=05gMEUMk%WpMZ9ytorWe!N+;FU+Qa$(|+y|N2YgYKy$A9}Ed zP9M@d3`M-9V8D@j;LpkmlTg+vIvLl=l9xe8R*|BuzKSo3RhV~L8s&CXCjU{TiKVS{5Fmi); zm9Jmu@2yd5J6Hvj{SuHB!aT{;%T)EXt8hxH^RTh6K zg803BYC5+|{`q5O;$pT@gPOvc{l|t|P6Vg9DO!{nY@IxcWy#M{)c_KU@@)pP7oiX9@2DLnJ-x7fL znpSa&8O5Uhz;p0Zpr|9}w00q0*iS25wDW^HV}396a-Op9N0OnkOp2Q&~Osi)5xnUQmxPDjxR6AGofb3C*pn=V*H_&h{jAV1}Pl( z2UJz{;h6_#mXwe7UIDl%NDMIS3ra1Vp4w z4llr{6UsXwN>Qw}`J)Cd`(?vL+bqs)XM|FEM}5z)aLt||8yP< zjjz55F*+|*ygB}y|4Thu`n__3bRd^Tp#6k$ctWX7a&Y-3;)$nk!!E}O|NWrO#8?r?p$+1;_X6QI18SWXy@#!= zJmH4Lj=t~?QQP;hRyyParb$JKr|9@chSeX|KSMPz{Mwb8-u51J6n^gNibO)w1wGfW ziT<40?9YqWIeex1b9&l+u83Kg;mp55^2a6UA*MqcBQ4vZ6oEFk2XnFAp;WX+{}gxr zQj<*@1x9y(54j_>Of|8zT88$88pD%aooAOK#pXXuX|VWTri-G zUXkuQ+b-T#QE0~PrF|+gSB85HJJ}eind;Fl5YNd?d5M4*B9tmE0J#5WF{yo$VzR92 zi4HtT+@*=tPk-UkDdP(_;PR*A51Cc9>Dmj^+6yx@w9s?fQPCQ1B%Qoz^BnCx)~rT$ zGvNvb_PQpsrk#6|rT5HXLzFrh;d?RUpwpQ63#l*mdhrsT4kK+d>o$CJOWwq#ZD!96 z7xEd8j(>AgAVe{#RulUic0y*w1>6E+=nZDE_Xp_T? z)$&YcRn*|2B_*f7HrM0x>vImZ)0l#DA?1J0xO%FSOi8&s9c$_ACEmZOP*)&LF!oGs z7@5tEg(!_3)|$dm2q0I|Sq9xgLt<5OffhDK-B{~bUsmlkZiJn?Xd_UDsIoe*ki2wgoe{jP}=!3G={f$ zBYX!kRC=sn(nw9434w#OE;PJonjI;7xja1`GsQe|+_Kq{1n-C~IF#^l_@@1;ZZg{@04VFwYAP)*{KXP;VoMA5EO{n>7*LpX?u?tYkti7u+QkuxUgp@a2AP zy?ZOXOT%(VGx0keuBM{4sXQbl2;Flv(!?-(mY_t)I!vNIfq&Xu1^!;^qw7#3)jRn(ejB!x`4t)HaU^(+9pwC$rJy(X+_W7 z+TVTFp|y_t|L1jLN(*yBRF_ghSA;cW<`t?$>0)1z#58h!|MTN;fsj>hbDud5&u6{w zC)qMzlQFSaa7xdSs5q1XN^Po|v+!AP@Ypi*+{_ILU;VZ|UCLPyfU-lX_iX0+GMVhS zcPF2n*%r96;hR@4Kh;$WUtjbq7NrD_IF!yjdYNT_F`v21lE{F__Eawk(tATD5Cvxr zE!!Y9epdwSO{3a?kbbFgVH>T6{T*#9iPqCiQ9zdm147`mJ|ZHb*B!FnlhzKT!s=-g zSy#AmYbyBirOkJz)|OOi2LjC@IIlP^3=h!AGGNEcCyt27ShC@Ud3wS7*EH*cmB~&z&_WPHPN*E~pn3ju&aDGwTP~R;8#WWD7-a&lGUpXYJGd_V|se}> zC6w3IH=F0>CaS6N_ItG`rcvSB8HJ6>B5F2h!Q&3MF&-igO*6jF_zdD7F74KBfCw@I zivV1;R6&vIeGbDk|Jxodr)GukBYb*FC{htIE`y*S@IaMg$=dz_kAsjZy z*vW`TNa;r08an;fnOP;`VT{>tpWy$D0CdYC6BaTr(`5cj>t<&By)7q{{dE z#pQn>;bbp(Nn8LxT}!6? zYM*fJ}R)+HlkfONffa#$C# z0ht47G-iq{?>>O`Oj3YFsI`y-7(izcN`yUoo?$-M3|&&~ti#%~ZaUTEB&b~6Vh48- zk%hYAww~J1A!{wO{d<7K{Q^iVaZzwFCU7T7Jkhi9iYA7LYy-!p}(A47I=|7r zU*>YCfL12k1$%)06!%iH(wbDs5(jPh+lEBF486b{LF!~xpi;($3H9BuZ>mZTth$2r zhs@jtTSlxQY)OT_#YH_Ti zpez(@D?o~O!A-u7XX`xVw6|+76G72 zsV%BzPP#mL^zs@ww%WmP(JDhYK0_9X@@AGP|E+PMsQifHhn<_Xv~igD@n3 zg}fS2J>T)CmPt2vAdZYg^Vl8&f~5vo41qCdLp}_ewc%<-`Qu`Sv%(gC)h2A!L+#6A zb0m3&3oeAncx;2+%WNaaZFHUnz@d;ZO3zZ!y_m*CO~gSKYi#DQW9k!{jZt>k;<8wy;S z3z{D1A!&19$};)eLjH+6ne0jmcmRG24i;NGZWt(2Tqilw;Bfsdh=Ntx@2z8jnhIuF zhAP2(bG>#y3?PnQmd>ofWtl`fYq$s}yh4vnQ)3eIo94D=>gW+SjnyWOok~YeG56c3|-F@m25YoVYGGP^PnMscLvQJIfmxQ3nPFj!#a$ek>UX0PMTD{RW`F z61;~2-fiEmlzBPxxcR%Xu>*s-v7R$n*HPHIkov4EHMT3(m?RIS;Mnb{7_R@WsP5y= zNJp*dw}x1GjYv+Vbv05+n<-{P24`-VsxGQV3JhuYkYZCw_6}#NqXetFk)Pc-*JFsa zG#X0j>3!FDrAHH0R^C75Q$cjEw{(G&j$4YNXlv`fNXNey1|(mPGuvv#7MTmJtgJ%lPbD<3-B-7v(YUt({6t zK**o;B3tyGvvUgxj4Kx+(zgh^WDLM!z*sORRRZFquMMM*e9lLkpp@wH5I`5PH@VGwDV^$g{M@6Z<1XkecbdpcBpC}igu&KYaQB<(T! zY*ls6vtG>RjcrL>UK<85&W@7PbEluJ{uS951G4IG5`P`CGw9d|zMa;Go$xiUUEiOR zn_tdpV*p0MrxY6vCX1ba#4pBG?r3vdsjl}WshtW!axKq3>1!$TXY~e?@b*P9wo_=1 zXkK&$Z2#IhkUcPm0Z}O_Qt_<^?Idm=K3sHNZm+gG6>UCPMlYJNEtp5Ym&2AUItJRg z7BIqELws9L&rP=TjZVOvisUImZuUJ=+F6G4i@iTd^xJK?Nk-$zRdrI+aNxQ*tWY+Z zA!^Dj)Ee^&*8-&w<|BO+Ju0_fpb3+DVT$Z~C8)_fXm1)! z&h-l@@s@k)!yhi2cVT+<k%nwNzkvR8<-SOufZuft~ z$dBWJ(J*rLcdl&bAj9W^)n@JCG;jg_cGM;ut`|^H@Qr^8JBlS0*NHr7`1<>#I_SLx zdlFus@T?jq3{>1j>&MHkD-xFx_|3+tn;DeImSZ|}n*?+$i%Q|B&IX94>LU@kFH^$C z%QUZ(CMRDOX>AwDUu=JKmX`DbgV1U9KX!QDyQ1(+(@lm_-)T4HdDz~P%I8_$d*4gCXr)O+&@~BBlFqv6@;-BRC zsU8OKb4-pdJRCc@e!@m<+UhW*#bt{&OV#AVB+}RB{M$0)f2ZrO-F?i?U(n*S=H)Io zp!Iw@P6v%%Kn z-B6M1$-S!)q)Z+*|32m10y+NXn2fr@3$pmCtR$kB?7$N(IXn|FXsOs!k;OcrF1u+j zp;Nt->~M2_T(H9bu~8k&G3j%9Dn4^?$!^eD%Qo3el}GbFgf)3bSgk)>lroXf1*i^u zI&S7Tc0_jhElmfusla7qDop*6;!>5Sy!__G3xSQ7?>QE3|w z!yd1>k%B)KuIuiwsi>uxf5Yoret}sYQl115Zzez3RA=@$q5+U`yxb|R=F?u=C7z*9 zLnQtR7wJJs8~W|a`2FKa^jSGAAF*$MD?r|luTy{Nle_6A`eJ~5wVo5dHfhSQ^7tG@hdoc;1!obV%RAWk5iUB+Gx zxu1tc4M?Q8h89~ZFO6mj$_-^NX9O0{Z0o*GggCpw=zTuuf5j{-N74kwXu1;BFi zIkCu16!63UkPXwA@$4ExRlnc5moukf>$N)O5~mN*gA=;s9qQ+H2_I^x+CNWg@J)c5 z2w`GZKXmJ-U*w!hj0w&wOQBIzc@j>??)l~o^3fC-J-j7u08dJ}yn#c3Eg7hZ;w()@ z{!OO;SX;(h_?#BJXH8bl_eXYX0h1j#c5dplU|r`)p@Al<(Xx<}1BH0dGm)K~E`;ec(d$3N#s#Faex4~rJ*J1P zC5;lqXX}RbT9b*DccrF9kS9E18tUbPs1nl}-g-b{g5S%4m3wdGGT5HC>OTd84IVN_ z(qaGOj+o&~(|DKy(J|>}yApQtS7Eh}YFsgKvsC4`hw_u}2r>j&)v92i;M>J-o{jJ) z?ycJWc=U|Q;UbhzMf8|PT#<yUZBK+GfDM=CP$wjUqVwe zmiimF(bqRfT~d$_V?IY5-HDW&ivlg7CTuaP8qJ6Qv0k%>y&An$BpcDG(EKFQ>E-Tc z(T=u=LwBCvU929eaU_5=e)xmdc-7paStc(VD)VW@EG9eExH9z{o0Nue0&_J13+VA< z{S{R;c-ZPw=S-vA`20;vsG*EG4VxU)SP$y(3Gn2bM)qEmov`*e7aHuh9((SF9HRNf zU#p4+WjwcOFsHFG-siy~RyADJ7-p`ky{mK+g%l6?@>YGB{(n~&&BS;TLR8l!Z z&Jj9E!?ssjn$|VP1}`KEb(+tZBs{@ZS0X|X>i=(rhy#V7&{kdcd^NRnUd=>Ez@0J^ z0PPPxT^F8bV>z*T5s=*Mr4y?CSNYH5k-0z?m?LeuG^FAMhZ=UkKy^0lT7l17-eA=l z1~7Cy4DpWYv`cAh0Xx|gqVoLzYy5A8ER!kY9tzGbykp^QRyAoPPsp4`D5mx} zvIo5w(CG3S6>W*6#C8Y2@Iqd#M1s8PMl{xV`IHpsKH_Sfb}Dhxrz&OEhl$&yzzwya zvESSh2n0tyg7vEt$Yo2ui#_)yS12(@RKe4fA<5k0YV6R*Sj9F)^xd3Xo{eV(F@~XL z9RqDfXJxnT_u=IiwJ$oOM@L7cT@qJ54lLiIR{zQTbzj>?>WnBzQE6THJC??ysgtaF zY&qZRSotoEX^tLL5VD2A?n~zT;Zm(I=|x!SCkilQSh>xN>zBNbiFJ z1+Bj0shjzh^Q88K$LjjQ-TA_d-9$-L=s7khWc1;A8;k8e5v~P2u>ScZL$^* zmXL?!JVnz&9zCPsQx)v73uglq;P>>RS}0d1wGZ$dUQPIX^Xd-w%y6FWvPnM@nfpd( zs>BjZs{fHCwIrG*ycELY>hdKl_M4VZK*a*c9Z*!KE{r z$Qb3Pnrcs`mKnN|$ke{m;>nZoh5xcl6{#3zO0{)YD5(M4a=u{RAuM43a3`T~diRb2 ztQMDw%Rz}qOavYZKf`BZj(%(M*H=*I$2`n}Jr-rh5~2fbg4Hr@KM z5EB0Pleg5oJ+w|m30YPFO4cR)V9uji){G-z{u)nTg0Q- zR=zJ_pwz9H8L!GRU`vg4)zJWIy>~YtNBr#PoVbMvzFK{|RnF{br?IkI2&U@CgAka* z9p0`z{Q3O8;V^C%zK9UBpQH*<+!}?PB>nG`7Wi%XqBwuqOer zYt(Glr#?m^X~|<1BERy!lZST2rK$LELtlIS%*?&ts>q*+qYy^lamZ*jIn{B}e&6^0 zy=CuG=N-=7Ve5+Z$=1j}bDR3~zVL2Wc=6>-?a`q}XvFA8{+qFvcQdzAKmW-cg73zq zVQI*W&%-m=P`DGUjEtCrcannJse-3s6;vIY+Tp1f)i^}A-J^qC`wcH%8*GtBX>?K` zk4MWfIYiO&U2|-@685N|un zhVo*9N;~W-rQ_+FLTWOxlz?1B04<3nJJzs58uf$Mdq}iFaQMw7T}Y7@1xnGyE=7_ z)|RBwm0(Qwj-7#Q3A+aX>(ksP2vjfiYHCcV*@Ta`#Q=RLHnqitO+M_VJ{xS)!+%h! zU}5o?*!&ZzQRp3kG!^<+01UV52ZAAsVCfauy2I}mjRt7nXmWeLb@~D};ZTG$#3h!;`}mc_PD5Q*mD9dNN|R?!I16u8xeVZv zAs{`zpf^lZn(EJsnbOCAN8^w#W%9df1`ECa?rgDb9l}JOGP%bp*#6Fl-Yi@5{IZcM zch;oDotv?*9La7F|1*HXI`Oqm*pRT==S0WpXVYN@JMgvsvH*NLYg+BR98$F;>qDK? zgh+_4nRY%D6y2N2XXZJdb1*@-k)NgUu9nhbX(?OG_g#pT+b;tj-e%#ISjUvU7nwFPI7v( z8zRy_!}{`j^7b^Beod!j>zBpmq<_&^RS&DjPWS>y7sL2z_5v#jsN7YL)to`|JMS`9 zWyTX$sCj-@)Jfk6WZLI7laBnB>K7#fGZXy)j|w3tkb_*R56hM%)WdqL=(1@6PX$bT4K~jCpPQhBGcUoMgmH`q}@A^)o@6PksFS ziW?gVXUwmkjla|I& zsmE3wXYXe}Ig|VS`GcCTwKO{VvXXf8Ve2NLsM+drUVQxf_oR;>-OaDR*RFq>(yH!| znEP-2Pc1UXR@6%{k8i6PJe!Q zzG$&`%zM(wp2@1rt62)KsvQ-TS|u$OR?!pbc00}_V|g36SVN`;5yFJmp5x|hd+MwnJR{i$@P!TuTnJvF8jsEou1O8{$tlnkzM7Ct%x<>&bf87{TI^DClvBS&Ln>B z?hZiJwUC{bA=TH<{>>Kt8&u5&|m+Thz;gD0s>Uh!Q*%Ais* z1)|LnQI)u1?l_-pA`2c9W3?gs?B)SE&UAu&QN{Y?;@~~-HcI}DyQ?r5{Bs#f9QtzB z;||nzyw>Q>^e>N8es~#VdH*3%^P@TVxkZEb=&4extxivyfRm~12zB#r^MU$#*U|H* zY0B(h&Xe-6wIC86neWT@6`aW>dd+ckiRnc>D0AyvK5GKPcU3PnFAri$CrW|Kya zz`hJ<*MKfl!O2yfX#$J-Ae2X`6Cm<}U+)Y} zjv&L&bJQP&=4Hewr{sx=)F-RhLrR2E3dau$7BZP&lO2%r>51nZRV2x3Mrz#Ns5I>4 zvI2|-pNy|G1eU`E4Fl(jd|K@u@1Yk zycXoWRs-3aDWuMxm_wZ5WtdLy9fp-eyox`)ngq=Z*}r*Nf;&3PSe-;`ul4+@oI-}b zWZw%fCo5BiA|6jyaZbbzdwN9!=Q&+@`Z)7)u`@oK&1IR&$T9T$iDQ~fNu2RCA;0XUA=m040ro2=v=MniyZ%V#oBygcFDFC0!Pf|WZpzOI`TLl zk*Tw0h)qRC5|#}RJ@3gX=`txB*Ey}3QLf4A26DmhIlg)!!E52MN=-xA09)y28!4oi z+)(;-V)z$aeq~hbaF~eKx`IQ}^Gc{%)uw8-IVV@rHys07$C?aXM%mFQgS8SfL$&;W zX65g>_ouM9ekvK|IM}A@rDwUOv~z|uL2IQZm#ZmrLW}yZQ(9@5V`$;8sCDH#GpQO$ zUBBw{Y?^CrvdDBo;0GiAA$6d*CTg$CtubFOl~1x$6LRap^z><$-Ed;0GV2I;sX@EP zFoHFyOR0Oga67zVd={dK#mvOkg5WLM2>%_mE>HWnTJ>K$WcL);Wd~|@Ir^1|UN;Wq z%g;i135b+y!UFrNoG7?f*Pe;W#dpU)-YZZ*3FdPV*1ztQc$?AAX_gEZ62Q+A$@qK$ znG%fz6;g6gf**a+2}}%wVv$cRB8hGvB$BDCvCWA<^I828!-XF7lx*X(>Hffg*jAR( zL=C1+{uLPhYpwWjI)~$2DUh?Dsd*Yvp9riNKfkVF!Fsc)Z(35lIAT-T*jl2+T1EoNIVanM{_0c(xkG*zbE;V(E9`+u0y#LG zOyFs>zenCFF7)eb@_9|YoNU1iEEPkTc#RB#(@XBGqi>kQP}Y1}oH|oiFU7<@1-U1@ z{sG3!^$dFymqcN$0?!=E_WRPQpc@@B3zRDKzMuY;qhgjahD<&tc{Wk8xJA2^7N*3e z#=dT%)Ybc)Zf*?3st)js-Rv?U$QPV$)=7<^y?98&&LNbBpMlF^Tb?c~BL|c)k#SBA z8-At#k!}8g62xHeSExRAGN~k%mJ*(-H(4Vtx=PqUogDol!E42K&Vvg(d7M*?Ne^Yf zXfd6RyPGk1lt~N^XN(j#QLB!l7f2`H=Kn(<-D`DsQzdD1Hg5N?AYJ#$Q+(G(Eg?VS zvVx^+TuP{GqOuDY}V^6=se{%R!oxoc+}+wb0e+KoUQ$0^}CQ+wuu1 zS~8R$JCf>?lQ_)ImH5_Uy>N&Dth`Q;|0_J5ozqL^6fDeM4>d2Fgi?;4*tf}vK7KHy z!E&f@)^!=q82!q-lv-;rkEhb-9{`I!&uSv_$EUdqy6_jeSigu{us+1m;&EC0B2Ecz zTudWW>{cvG<|63B+N5&kbOceUCHX%vhs;mgF^E7{g)n0b;vei|kX?n5+Kq@w#1AtV zj^*WRM22WU;kOkOUe}zqS#RZGNNr$SWS|f3_Z;SF7%x^>3nV-GpPBeD%cluKb^Ybbt z5tw4Qh~d-E9y_^tw@)=n`qwYLCwK&Z$ghcxuK6N)OF#9rQHJZEE6~ZiV3E(=D?3op z$DMXf7>9|cva@Ak4pco`jwL!}&qXQ;VeQB-dtwT(+7P1X*x;t&>&2MVFyfW}e=T}Q zhbO!@0=Y|J8V~1zo^3TWVLBo4%5Vbmw9?e7^>?3KEiie{E0A$84g{`Dcd*&w8l2@Z z0d>PabVV&B=s#0@PsRz|(6Cbx!P3I8{nac&M-_ z5|pqp29gV909_LY`9~FdGoyC^o*$1Pw~3&l zuPk{ZuZ6BE_Rvm1gBF!~V{E)PBlfy0IwUFW0R!L8CF1*FM8dQW#!7!<|AS-vTXhg* zqi|5vp3>Ls4X$@DG)Teeu51Qio4{&#BCZbh=$=`^K__S9fJ=cnu0O{No1XKdVJWlM zT_()SexdX%zyN*pJ;4b)Fj4tsw9L+xF%nDhRxK(09Rr)e`BcWMhw)uUVZ8!WK#JS( zuxOQEdEC{1A`S!VekM$?dDg!Cqb{DsN}$Bpr=a?F*rq$bzO{{!aC<-FD##-g10X26 zVYd`L^4!h2r!+L!Z8~;wI9Y!2YT&~~ulLf=9j>rz4F8FkLoCq^ykxWKXp#aktn2+J zTL*W&HLb05bYec%ue3>`A3S&x#{z%*@guRO=18`10NMP)LJg`Pc#B~@^618QPQ{XSU8APco$NI1MuV^asVwZxiH;)F@wbzg@(9dDtu{1<0@|82%g(yvBDtM-U<&BE zTra~D_f*Z|xSYpg3_xKePAryRU7&af5-)#8G42!5p24YRhPK}3Q?6GlOpH_6m?|c4 zLTWBwq~4m3RM;FA2cw9xZ;{!CGHvQpLj~FvoqntE9ZYUgY>fCm%y^|0f>SL{SRX*C zsCT>6TnowtWz#Xo8`5yFLu=A}SM<`-STyw9UFTRghtZ67-IcO>r+y|D@1Jp>J)TOA zzOV3iJ$exrd?ZD%vOT!jV>9R=;=f%IeDu@mUaSP-z6}^SJ$FS)Yx~K6nzs9fAp-kZ z^XyyUVpw1bYUjK3?4b+C?+}+Kzm2ar+O`oxh+lRm6Vut3t=D+FySu$F-W%EVUOlu< zEUvFdKLM1|m)$RPC`Hm996VcZhuh@3^coG*(alLX-do?~Uo8x#wk$7OO4a?5zj5nR z)5sPiKG`1WEyE|*F|xuPmGJw$r=&8VTw~EpJl0u9k4rDesIDc2(Xu$0T5T3`3HsQ2 zS8FUOiZOL=6*)Jc-5=?Bio%@z)WZ1nnGdS4mVe-nhji3f@S1fHYVq>-_1J&#lZ|$T zrx0eA%;UH)_fze3QT`f+&x7BE8Ezgck<1e0%aJm1=TS7Rs`^M5p$eHjMerGzmUxoB zJ?&ajrB64??zFDG+X zeFZ@ZY&=BRfj5lb@6vXW_sNTUcPet3f`K%;v+k{cre9fOfi#gMDxbru z0ESFn8H|(db}UUz%?2$Acr%9eUE9mI?_22v_(So(W(f@RCnx#eUv3vyJI@#xtZZLQ zXOOIJUB9$m9oj~TY>#xeZefj_%8>#>02HsqTz7KfRV<~jo0nS1vVuLi3jJNM?yh+f zEON^KgHC%Hps2k<@zeZG8T{6le3lIOw4_P?`C&@Lsmm-*2qmu!4h{fb$^M;Y2H$)W z6dad&P4x~YZyp>`-^s4<0KhL*zi9JpURb_DILrl+XO>szrQ~u6sl(Pk1mY|#7 zB_t8*Gqs_~?a98QFX5xJnVx2m7MsAH(%eRZnQU7hi_Y0hcnYuCGn%`$(>~#FUeI?4 z=nx^qBCE5Jd=j_PKi1Joo8P{zA$tmSFfjujMZ63)HYeMl|1$r%mymY7(n4KH|0v+F`R7 zHu?1V^AC-UK)*kz?dIj^{%GZVpGn(qg-;04%J=LSUmk)e+dsV#tngD`U+^E)%aYIK zINDN|6z=W&em7G%_Xzd)#R1tyip~p>-k4eho>530L%@T!CVb;|AkA^_7)A;P?Sr=K z$6c@6w^1>T6>HnF_c-xICh-TMy9Vc)|0t?;1F7KkwdG-l#w0DDoYK)Skwq>|TS_xe zz3{0-Zc!njL6cea$}&Zi4_|yrl{Bki? zIV)_kEs_ZYgU=JtmuirIR!y~g%Ro4yS;qLf8UdumBesx+4*PT~VGZHL98l}RvH5w6 ziCDw+9pLnRVWmG4bc#j#J8a3$QSF^g3`Xyfe8zQ5rn-F-NPEO{d+b#y_V{dsITS5-3?417)4_UHJk z@ooPjQE~C89Qr4uEw32;0fkxJP!7I+nO6r%qoe%T@>LxH42mya@c8Y`hTnx_0OX2| z0p%1^m70q6#z=B)nK<0gYsq|1Q#Z)3=pz1Jw@$_$S*s(Ppd&@!pNkkZ%fv)f;mh*Y zYG(eO0g_!bb)Rtu1G{ATs|VhMGPrkMRvQ1AazI@4;YrDB%pY(VBc{_KX4E7s5<@J{Coz;^IDE=rtj7EH#`jHSijFi{tf3Npe)v;w`}U1 zd^pLF01r3>TZ>#0!Vfnyd%|L zPC}^K41z)!prQ%T1yrV!Rr^nJ{_C6+ie%fkQhsfMU)0P=vHg8Vo=IJsa>#h?3joJ? z=S8rxmvaYRw-1!m7Zd9?Df)LhdmB{^XH1&#$n}QCP+#PAN<0U)5LzMt;2QjOOV{on zmkXySg({xiviT4DXm`;Ydb~Sh_OUTuyx=jub^lh@5y zzFNK9wnEC|G8liJ8>$$Q^jvB#>|S*W!7Gw#CVnrDk@ph7fD?EX4t48l{o9U3B7#!-sT}Q#JWBdaH}TK5O~UF8#7{^SXxz}FNkzqXF$=Tm zPPviA(f|`Sn~nynkVJ=KOKeKKjH9t}Q`pG^`1Fu>r4ICE-%gOfA`*s~iyvxG$fvWx zEA-37c!h=qxP;aKJ%!@RESQxB;#*46FaR_SQT8IPxF-&rH5Dn27j)4F3X;`BfiS7l z#8$RBFBU<_t+y$;WJbJK##0j!hPyP7Yl>;@LFPP+EAZhv+1P=DTf#!bu5wNAZ3ec@ z_0Gsk7x4nq@pCTsR0(qS04#ee^KKRXZJXzVDjrr<4fetsx|uL^bM^7d5WF4QTrKL_Kg!>V&95wa?9_`)Xvnd1)H z**V;{4q9tbgHvmMJz7WjOT;UIw~O;opUUJK7Z?@U8p9%eF{u^T4WW z_J8>9toKhd{9Yh~{zN2iAGvA36jF=F$C0a4Z-dB|THgnrSFY3r;mw!S!p!KghdjvM zOgF_4#j}2-&H_>nQbh)Q62KFp=PX_WOnb5Vl)xcLv;=hJ6F1J-$!HOp?;*9?)mCxtHWm8q}3OTNHYPC{X2COpJ5)rTR(iH_Qfzmgev z58kV+%a98>=sh?McwPLuYgC4K>$_didUAh$d&Sz%;7ZK5^QjFwyb7?rG%}|(Ir^v+ zlyE+1lvg6fR~R{yPEuBXExADF zA^qJB{7sj|?QK!6xx1MTwvs3@=1-MTMF?$mC;;}gXc2THI z$IYg|`mgu3Kcw9kn%t3a+G{k5vy^+~jm3X?!Qpwa8nb>hz&KE2()dT%#gwnz^Lsu| zlmf=WtH3v7+uc$Rtd#L72ytBZ_j;IdJN1R0{5dBCKDGFjMdB&Uwson61^?ty3p}3obhdOF@}iaw{dLu(-*Zi`(J#E)q$Tw znV8_9qOs!k4-a4bsEM-T?fGi3{Pm)X@rT_?1hw5tb=S&|n2jXDx21HP7hNYFI;eA; zphE;N4GZ|>4Xn_iHVTrgYwblhF8qQy^X`cGzXHS=D}j?(_0FWKF%S?>lwARu&{M8z zj?HrF8GRkm;!3l@huvcdo^9(LO-%SeoqElx@+s(NjBQns&8`JEu!=Wg$vn=4fM#m51$802E%$2M% zK7%Dpt7?x_0wW?wRTuLwby1ZNgI8;Xmi3gbzc8{znIqc!g+%pH-`(g()}@IqFk4(7 z`w@RyJ@w5K@*aj*+-(Ux5M)BNZHf0Je;fgXU6JP<0?ng~P_GdAZH%{_kFkk3&bnXM z-t%9j{>mJ&4s`EL=ykh``JOV@855P^maZEWm!xngu|z_Z}o zX49gh;+Ng~)fQtG&mG`elyA!%7!s3`c8fj30W(_Zb*jTdhczk?}EXLt^qzgip2Ko+Y%zN!+b$z~T@+u_3HVhFF+isUT1l3>gmW(xoH z?U~SLn>nj>VfEhI)A3-n&zA|W&{sBDsHGi8L!)#rp$TkX0*FMLx&l}L)*JA1ghR_d z9E6vQUA|jXCvWz*vCnO-lC&ukVIXb*DM`KGiW2(pMp*ocwNE9dDs()BRPB@`f#f^3 zc^|26G5zcnLAlFRujP}$TS7P~2i@LFBYebZ;a2#5w-y~%I691p4_?KJQ}QQ&m-$be=!}dhd!N?#Diz93 zk+S={fc?Xy6vQ8H3xvex^VwGd2FE>06!BY8$NbbTrGdr@+t~;7TV=!AW0Z|wIZgLE zAlky2W0L9@aRR(4&4r9%Z3o2?*5n`k2ok3t;%R;1+#i;hAX?V)r3S}0BKKYOF0*K6HHh_IF zIg>h2UlVb#NXGzwul%M=R;CIGe&PU2Od%L!<&FI^yil{iQPRlP1re>sd{e;SfAdNs zgu{EYR1!Vklb9o^i1MO+B}FB^BlRmxoyGb5h!0-RRR-6Z zoGvO?<*Estl*ci2ej_70BI#`4#MT$;@LfyL&QJm^(lwVBaP)n#{j68HY9ho&VGAWG zoCFyhmN=XUyZ7R9YthojV*4!k@e%Ql9q+NxxIT9YG1$jut3-TMYzv7<3 ziLEO8R<;hgfkV>6V)5;XG1`{n$K`japs#`DntbT~@V;Z(HxOv<<{!qo5@GoM%4o1FNX15eLXX@%%eP{)Yyu-A*0PJnefK z2L15e!M6T2WKv6gp3bl2E%^5hfv)&kH+Aq%V6mZV*bQ|t|2gr;?~Ui8NbMD6e^Kz(%}GKclICZ1Lc zOA<{_7#cp*96n59US#J!P-+8;X2kf&h&WC=#qqW!(lljCV`EUPS*Qgro$A{N&X%q> z_B*<$Loy-+4Z=xvpGzW)kXN;z_+405>v7y1Gee8s$8W$Z0Y)cn$t47>P>RuS7U*8# z5$-pdp3L|}pt!~J6YKczv;3Ra=?E#kMn^+hbAzBH zbYC(OkaJ$jpp-p_<~5dSmkp(hXzE;i;!eq0jW1N>~FuMq$IWkWyXk3 zd;8OhvAetdjFY3ncR|kuL(E)^e~^T(F7czK7CfMT*4&F^nh5#(Y0hkVN10$~E4N6M z)%5Z14Wk0`)FqJ^+Q9*H5Lt_mqzKj(Ve}rm_k2U#+GX?GAI{eQ;k{x1_nBdJs z);i;V;^${EB7t{|UE|^?@RS*B)ETJnNb3H#;+`;fm1B1H>b+Y%9Y zV-u_~iSx}~Q>uD>Lltt^+GhHhm0>O*J9cLDJ5uh_v&LO)T)##+ALuQT^K2RJoa_G!6QZ@Kx* z{Qmu-9FwY!1e(8(8pwxzzP(gkCDPx%4?`e-ytLRmRMdGLuo^*uG-wIZig4iL<_^aG z{PYCBeAxsnZd!5?lX|aF2de`jHJBATHT|DROi(TI9tz;^A|e18rHRYQxw(kDI{|K< zxbg>oyE6_uR>_-d;|Aqw$vL>Qfw{VWJrxpsSFhk_c7s2yU?{JV-{&Mew?%vvBYO8P zSP5mmwww@e02E7MaN6%X?Ei_W$v5*`rZQi{b)%8bdrKo}qxi)1wa_SjHzLk~=QHpV&=p24@5JEF-_bU?n ztBi9qdm1-BUr!i_)+sMA_e3CzobD@ruQx@m-9tC>XY;);UoY08LE11Z?^Hwv3#7Md z;RU^Eu7@?l^Tqmfj^|xmF1v0M1p((crm=M2M|i7OKMw>wzwP)(Vba}ke~dU@WDJ(@ z9GmZ@ejCvlPSe?f)yn>!i12|lPj)*1d}UXXR=ObH2=+81$qT%ALmD`vG{gBB1}L!R(Qig)LE(2AOlKdxn!$bcg* z*b@Nr17NT+-5CuhW@18-&gO@LO7Wnwb$GaLRS({SNqgVbjQp?|zmuwvqod_3;ftMY$OaZG`pDD%i)GJqizyn=Z*XP^8olEe=AkA5C%7=oVKLxeQ ztzykS*)Y(5$d0sca;45XCyE!cB_%glgtT9iMeK;&&ym4X?!xDbB7@EIorkAu?x8z; zNURjuC~62>m#`fjfiqwRo;ad<6Zbzj80G9V0oHCj4w!36u(lKll0wTm+Y{~`Wvm3z zNNEw%6&aHL1w*p#g*+NwB?j+(RtiDOT5w8+g$2nLtiEt$*BM!Vl`66`MJ0i0Bw&ms znn?&scP`lFFr1Xsk|l$CCt-R4Nvd~TkYH5pug$!iNl4>Z;0G~Xsdu%5kz3!wg@a&> z%r1TtL7M`beb}E1f?G#0SoJ1mTMSH?eN+)I^{HFu z<#Ht~_#Ub*jssO-um030n#Yabc{gJ+d451JnlFmu5&LzV=GzV9#p^*iVqG*?nOJxP zLjjyLC7_kn_R#yTGSHXDvGwFL4he>qw%v6vQ;EakY@96_-;nx_j37fiXEaj^gPG(2 zN(B~Y&d}E&Q@9DCd(s!~;q9F-cVola9w!ijGw0r#2t& zjdBJ~kKwnm#M1z*8>vJe@`j9T(2{H3X*EDx7|YFiqPxx}PdO24&l>``x4W0e=A>l0 zX8Yr%N*=_-a3h%kfNSJW*>;NAH{n-JLE4RM}-!_D75%q_| zu|lrbl>d#4Ix=4($^qpL+C8^04QEdC5+f#_}v<%rDHT${NN zVuKmTpe2I2Lb_Z-?PMfapK-r@D_y3b;|yWWc`Xdeq<1PcFB?@VWCgQ87d6+EevhG@ zS<6(435meC*{RNtnxU<>mWy43*8tH60}yEYs(S@AzpWox(U778U&a;Zw^C?%-$ZnDilE>>o4N8{#%}}^# zkgr%UY*#D^&wf!PIN!tvRRpj^_TBnMb@IWvvt!DR`?!yCJLGpB3owhw6tXkVgx^K= zw)p!|HS4D~E5X^tNR8?9>@=L3Sfmsb(MBD7fi)14X3%;|Mv-*z=T zqT6YPc)eib3K1|a6ix-DH`y~f&5ogOutuZ3!1-a9y zh!&Dz+&H+bhX02p;`cTxrm!}Q*242N=U9v>v^|%DmU|i|b<^oW>o;eL3l{WKc^s2| zOY?Q8FgGvzgnomTq5u3f2n9f}-?Cu;ZL(8Gl}sy=IWa&-7pAdLa~^tY6#L49VV~il)xF}ugy}$V8?AD0b-k$V9vIpTs%VK zCErXzzjxM3`Js}SA{?9n&*|d+2i=IA0qf=S7c)+0f0lL3E~0b_Y6FII?)uM#K2t_2 zFnguJm<(?x?k#R@DEj!Gj*Sg3tGJRJ#%LsiNs$kTeq7bQAzBoxb?z$uQK=rf!yqY$ z>N0lAXR5Ah-c{q*L8F?tIc=X>oQnXEC#tgmjtR-|@GV=UI+C^m5GIH5OB_fwOT!TZyt@|(%j zAmaG(aTPMruf8XYC1$0R!CEz)@m&ycR{rx)Be03}W?Mzx0N023F13M^I9_;r60{MA zd!#^jQSEcO|;B!uW}C|q&10lS&oanb{I!lq7;qjHL3zGajP0^ z&|h*(h6x|q0Ow>K>Zt+jp1D68e1qW-^O;%$(6eT+`iA)gU1V<7!a&$~Aj!LT65{>n z{~#1$-Y<;^f@6|-Ozgm5yNK~eL9~RCZ-9o4(BCUAg3VpSuR*eW+QPmxyzcI%!&HhK zS9_1%$4`epZpw8E3p~0R@tTJL(;+Lzkq18gEjoKj5RLudzqkAEfskq>!|Br!-@U$x=|Rh5iHnQVXft@IlpG*d@sxu>+ zIEnvvT2z(7!JH0qNTrdK?D(@Dw_E zD%Yet0+zT?HEQ%CfE3B{{daR}N3%CN9R@ycza?g_=6dFC*bZH&K3($pXmhBq+{RqD z+GsFGCc!SSI)4jN5lj2Pj6ev(3gzak)tcfCYnTD&Txu(Ae5Z4uXSKmUj-^SYn2uf; zc;LzlI(z1L>u$cY&OqgTB>oU|-61p{y|MD7xe9?#vr2@RxzJWp$3#yc-^BfU%^o$P z@sK4a^`_d?T*^{yBfLK{nsXxY+xwkz7r!Z@G%0DExnPvuFll1dS$G_2>yzVZK{$n%dfdo3UNhMn6seVX44A)wDx=PCH^wmRk$l%2aHZTN|lT;jt!vl)!(Q ztLiDs4~)J(u5iAH>cP8j;n`bg#DBVJeagImy%Ksd6-Id;xcTAL$?SflYUjG?+R=MA zQJ?wKmWE)|C>-%4a&>#P==Vj9N;rrZB{rHMT@;s(6ZIByL0u^s%@+=*eMUa@KXjRD z6ggxR*bD*GC1vAuP9QU9Tn2ol@GTisf3DKfg$G$Yo_<)jm5`J|Zq(Z|`|Yte57sh1 zF-r_wb|)#U>g&wRsR(74tFiaR1Hn>HIV5zjQ44};&hCM`Opnz9UrIk!nPrDIHriUxU+#Q*-FOjo`y#HSZU@0i@|Pc3~e)aB%u0Dc(uKm9Nb zP6Q!rv)o`!%kiO^dPN2eC8b2!g8Ff*`edl^cNWfd!rionqx71N?s~53f$xnZQ>p<{ zLlZ3F(b2CAJ;ufadr92IIx(S}J2Wl>W3uMcrK|)UotWz1DNm29S{9xCFiH<5nBf!ZRBm#5IpAocu%NMf*k)~(j zjpDK@H>1r)8&H>n?<(SO8i)fOK`@}2I~O=b{q`8ieRSg?zdmn-XiNWv$(N4Kr$^GY;#VGARykc0c zgw8C14?97>A`KapYYd5m94?kIrU&!CPQm`Ei$V5$QX;%rLB|rP$ob; zYPE3AMaV)iZTrdc;b)>4BlLQjBIPtlnTHa3YH9@=h`A4ZpMo^rg2yC^etocxi_%_} znsFk^&O{@Am$l_@>Be8uj|`7sLP_{d2uxKeA|>S$h~7bZ3gHrtPWNN1pWuq@#d*04 zFK4%y(OZHIX2E9-G|N|6TVv*rq(*ox{^KpwTi!&Zc&CeM*(aHEE&$gBn28FO`Kyc0 zA%a?Sr>LD*E zVI0=H(+T4!pRKdkZt^iEU0x}V{OKU<~jhmO$;I}hfN%pQkvk!8qpSmqMJ6SV3h5KqL^ zt;OOFbSFCQT(xHzgQpQQ(1*U*41*efTDBsfM$8j;6FM%E*NJRmtPD0p}-`a+R1?Q z8OCQ#59rhlhPfa#-9}2W9*8^fm$++n$6+TjZLt;Z`=ml8F$Hs1l>ghNNZq`2F1$n0 z3RGzb#hMM=J$OZvx;{?fGw|4k*?YkaPkiYTC=TOY>Q4g}h(e$8Y^++Pcj&W!$Zu-z z_W`Zut)<*rrh{c+Ph0yp)baW^N|g_MUM5xkeD~gLh*5o2Sz0dnNHZ;p}*@qann%H_Z9OJQipLVY z?OR%|Ew)V``g^uCSl?jg!Y(&LgssVDsQ%w}`Ds*!l2_(f2x-U}BglidcLdp);9ZdM z&O4Tp(8cGS@W!7=D*b4=BD+!>|KkFo#|j&kmZqO|-y4pe(W;!0;xoKHonBn?GPcdsV1nmz8{p?9oQWwi(q*-+b_$J24%X*$Qz2zpztyua&v5vpxhcXEF){ z;<)xkCZWgK0$o}>g3X&y_WT+66$$2@(H1x?gsnRMEmx7c1=hM2xCK^O(_9uURe_D9 zH$Uochz#lCrCZ!E#S?HG>5E(ysa^ippqOGClx!)TB^7nJ?3T zHkP-YuMA^!NdA6LR9Hh8f_y$}6I;-IuudfrJ020r+hcPLi~95YXhK=`+F;ns~E zVj;uR@Z3Mb=#WguhENu#R19pXLeS60xBa(VN%>7Eokfj# zX0-Q)sa*g%NU4_|F(VIUc7Ixbnph3SOCa&*>&!4sf*W{^2uFy+H2pnp2rC6ZGT8GQ zE(fLBxZjI28}_mFuVP=2!KtP{IV&=>L+^{zhIaP7;U|s*F1!EQURW>DTWpPCLsdOu zHV~;%6~F<`9CXQ%I1RSsZh4=uLaU$)wDE@=POGwOsDN^k?cmO2<|djH5nQ|~L~={Q zE`gI)-FNMm0;8V7tv{ATB%!uQO-_S0ewtfrv3UxY*KqvmWl0R( zoYQdWj$+sjK%9pDg5oyy9B$kh*#3CAw29GKK@Qh)VgJJg@WUO*cW0)2uzohK>+*;V zo@}v9S4XViR;MJOWczXgoVpAXJ&Ge3vI|90+z3x#`a8Nut*wStprhxqRQB>yww(W9>qZH{&3e!(KMCom_B1AlxKpNFR$g zc@EE6*w5O>=JA}AXN4N`k<;Q8%^OHce1SZ`)`W$?Qq`^NMe6uf+5}_>~ z2$tk}pqb%;(Q&?m^&MgqXz>McCZ{cxTr47Y6><_C+ezKz6LzF9)!YmjN-Sh>-+$3u zHeA01Y1_la)U9TY2aUY-EQlR6n!nfnjIb-9A%i+@ZaEQe6}-KNPR4{SpnBJYkfEXH zY)~hHz^FhMJn_-quM}GuWHJ^hsg>kTo+KWDvz$u()d!Ha_5z-j&-|Rm%znoY^(iTouWbuXP)IG zFq%W>w;Id{UA!zzbkO3pOH=YqLdZCf7?Q9^QH`=Fc!x@udHD@`XsMKzme#?eYyQuw8xI>pQ6PjIu}=Cpsj&vT`)&YA2!aHq zINUuB=KXYzq`|=Klg62RMrckARNn2g{yKrv65uH_?6O%58l>J@r>R=A5)Mz|(^bRz z{FX)=LRb26iw;(reHUoE8Q~q@LMhkK5Ty4W41*2XgPm}|vJfu1l!Nqcd@?>Yvo9Z% z*J$f+SQju*S(c1Ostxct6K%gO_V3jJ{qNnhmEasnUFi9rmCaVJyc#Eg>IiZdKrys& z;XS^gSI6#YY)#*n#{l(VXb{P&?90*5*LLP)e+_pI!NPujdnSA0yJ-?c ztaspTuaEg|t7x6RmM+W!?W%JZu!iCU6WN>cd;f6O@C;BU;aPC|lM8Cwf{AONqtW%hJSx}KBM)a@miW>S&RI(8!ga*J<7{$N z{|w2zO(5g|^fr1{LLyA_AF+Cmbapd$JGl?7NIjO$=j(MuNx@gn52um|{x)*CmCkrG2>DgUUjZ!7?e35|35=Fw;cRa6v!h&}KkX6B>R}wp2 zX`d>R#aaruS++Lj&FRbJv`{rLi23tJKbB08V8OoW=yBM(9=esRINA6~=jw0{%WK&~ z$2_p(_^9*wNw>}t9nhpW`2EsY&sORo!oB?FdNnA>?dWDTNE8K&JXYn4zDfH2Zx7>BIJN`{F_aJx~4*%eQ;Q^G!Ak=D~aht z@}#UX2S=bGu#ZLha7me!#OL&LY>hSUPl=dRqu%7q+*H%ei49iFAOQUQhUS!|M9*3_ zN~xg+QIbY(dxe#k0dHaa_I0&9X+7GP7AhPTn0;Mp{~w9&;=vr%9ZthA@5@OD=pY1R z?H=AWFu0#Jf&$GsK%}xwL`z_(o677Y{rE!OEMp-2(Ou~;44ohWGx#@#UAt$ou}(v* z`jf7Yu*)rbbk2e2jc{jAXvM(#APuH$3<28@8wWPW&g1l%m;-adQIC;~&816rvHW(F z4Znc9%_E8gses43&xA8$0R?}SHt$Y4cQ>OsGm0z*mZ$2h6iNLjA>L;YQQpJMZC8H7 zn+g&R=hbJJG2%^M(5he${|RvMf?U=ndunZJ0*S8k8O+!3Pn|BY`u<7pt>*iYmp$!8 zfRAS=HnME;S?)J{w=WXLf&wVuN}sR2yq(r1M*XktSiN^mzS+NsI=D)fJU^b^X5Jo6 z|EqK?&uR*M^d0rP_lW&@K?vQd;{>)+20B-ALtJ#85ax`6iu6t{SgL!|L@8pVPbUUa z5=1|HJw2YD_GZ{N3;U(<1bpIjS`liy7-sqRa5(`F*Ss1ixHFNTpkwTVteDO!UZGv( zeB3yfy1LS8Ds^@s18P*uE-nyOd7MR;3_u(NUH zY8-#GVgEO$ygu%AMwjr^KXhr8xwY`~ZayFGl~eTXZxYh2QU9^;zN<`^jY z?lD%ng2+W*>lg`}{fs{x4SK)>K0pjW(!T945hJ1=#RWZFhS4*X`Tt9jb$RqiQJZez z@?5YYjO{$g@OIo$+T~ASFbcsW697*Kid?%kIR1VmdbiFr|7$Y1HpAp2`Fo?gTD>MM zE4tY#qlh>8LGjf_t!r}{PIoGdF8RON#{51pyJErdt$5Q2cpll3i~d^+fo`W8yu_j- zfK>?vwhhlmxh8;6DRdE;wOVZ?xa2;qY`wCXAR3?J)It3F_wT)#a=cRDq76_4wH*cc z9@P%u9@eVa3Ida_9smNjmRs7JDtZ%@!(|gMx#9TpnAd&(7xK@eIt=!oM<7;U$;2Zl znrsgEuqc{%FhZ4nqXeLG#OZTkISOq0Y;95js2G`1)U*^EJKR=|aUL#e(GM`vxN9Nn z@Ur?awJ^(#^6Ff5a+cEk^p5m%7DG|8yzu*;N$Sl4>dma@rn~g1kHCP+4u3pV+ggaH zrcmN9Oz$9D9Z^^|YFgOC@tH)C?qhlHSY(9$G5`>Y2A|%CL(9cZDcuVj5ZdE#39sw< zcV#m=6`E01`ZYCK)&zwI4LVgSMP!%vh!T<_rKZR#axX>z7!zPmDCl1&bqa+a*5t&p z^Y8#zrV(f0();s=(V)!R`lnkVOkqn#eJ$-mVdLjNAG6Pa|Mu*@IRf)qL?0_Puh>Ghm*rGKdhq zS(?`SP`=22^rPo&T<~=5u%@$rsm0Bu4_{~PxOr7ZQW9}zEGMD|Q*cyh!ZXr-xs~TL z<^1?ebL}sz$5HSTu z6V_+8>h1;M#HQhoxh$JD{L=W9j21%KzaOgr1IIy?OIyy#{Y|At*q6d5HpU@uQ)jmd@sE`S*tX%L%>>ubU_GqW2x7AB1mh z>*E$$?*NCAy=l9zK}Uyc_+H6fY-te7Vos6w_i)bQI(P2u*GSFUMQvx~3LHNE%aH0o zHH@k63&_E^?BL_W-yvBbV7RSp|C%MtPd_~u2|-=&Abx(sL}wgm#arF>QD~?A@veC% zrY=f*#`1oq#m(m7GXGgBgWc$2yr!Z;5~yDAF27e))cW7LULBSD-X0trkfzma-ME*j zjQgg)H!;5O)NlM4mM83I-XBX$1hPc?)A%U@xEF*sD}L|qu8(7ehllHK%I00-NcnO3 zmYfk^vPpy8Gzw58$pBN7p#e#tN)_z!nvVWJP}F3zIJF zAdmWlO=K>H!<@WWhBk<=l4R)2v1)cnWjYn`1>HuoQB}D<`|!2dG+pwP zMg679lL3G4*d)cK>dCuIG$V**er%-l={}uP za|K=XWvnmd=Z3U6jdxun5Uz(HpV||8iQD(MD%@*p{U#Ts@Z$&4$`8GPN(~R5^cr2Y zI{n|8n;krahd}`cb`NK%DK8&3e%wIui2XtMvAHhD`QN{k54m=`51lwfe1X)!IYTJX z&ZY|cpjQ_x*+(N=fYo8iC5r3!BE_j|t4WlXfMZ{-WaI6A@gfK85CSA=Dl`QDvo2I3 zo{y~NM`~B;7u40^ z0!y(Uu4eHCU#iV{y_YYBOyPuY*MM%=I|+9mNPQE>Kb)>S3n&NoLhtXzC9Y~mDMq;dYt`GzVYapKu`AEh-SCwqIb!N(FqRG~<_ z2!UUR86U;6MZk7yHofC9QH*HlX_0Ay3Ol&a;xUET)e+zwLV1WpK}Tsk++%Xy?BoGd zjvd=`FHzUBo`2>y+d!I5+y^?iyU#7vj{N?s0}&K#-ELgm%fnIPpdpq(VKV)YXcz? z2=QjafB78oaGQBH@8rVGvZnhRw+CU^)}V^&Tk^fA~0l4qT5kUVsc7Xq6Gsl4^O4|fvS_R zB+uj?HPY3Xu*CdmzLrS9ol%8<`>p%&AN-efns6)%$DIVg^a1zReP$74;V-Va{L_o? zl3qDG6lfjH1{0}X+_u$y|8o=`LwY;bOVbmw0u^*irbYe}=;qmWhKT^} z36Sb~T?WXSwJg-_{ie%441}WNO;#E30SmP9;JvRQ!vgo|`%G;adcj?5gpk;_5};rf+E5E9%= zb9fn!BeB*QB#IamxQA0|pp%fddI%X|Zy{p%@(&RXHX76sOyZawoyMY5;I^ys4=}d# zaVp8^<*^431JIeq%2GU;#FBc5*C!k*)*JVqo_vAaVi0_lj!6f|n$NICJOqaC$D$zVinBl5(qWv{N{0^MgQR@oA}gwa%-6_wcYk z69>*+bUJJQhNa_43ZyD4IdZWHcd0q!`^@3pPYrbShs;MlN$hfd)8=7`7OSw)&$3X{ zZD!7&u}aCalEQtLs#~zqR9_sA!y&%nY=KCvRV{^JBT;j_b}1JH@O0N>@A_#%QgTm= zs7Oo|EimDmhYXTo#C4I360oh#At8mFzoMXTF7iK_($n_&oyUDQ(pnkI7*q-u{08F% zF3^BA4;=LHs`pD*0sTbmcMDb2;653B*Vu!em_GrB*+2e(d5Xr*uWR#Jo01AOeEBF7-z9gPdazTxR=V_d>)>n-pFH7YojTp~y;Usd)bBi?k2E zv2>}>Jze_DvpJVSS#9q%&~lB!^*~WYF&jHRm%pIA6Hr$i$}=}^UBRAP z`@+lK0AGq1Sl$eHQ05!Iq2Hy{zc!nq7QSn5vF;}d^vW6OzC)LiVTf%hNy&=U{v%Wt ztDYn>0ir`k&#?(}kGORbI2_|DNgm}V=tU!qp=e`OS_{RdqQb?5#K?V7UoXbSgrulK zR&z179>li0hQ5W2Q5g|H@NlC>JNyHjFc*^LK^dkNOe3W@(5>mBJxH=VsnJ`$iJXl7 zMxTByXUzP5j|iC@BZKwn582gHzse{iUxp-;nyXC8&TrJlZ*XIXeQ6b`FO?GvnH}OS zQ#sJK^@&dd+-CSDm`h^uc+*w4l!!|P)_^v%Q#mICHWU_v2J|$jbvF?cFM zc9jtt!5F)9zHb|-B;S|ug1=mmMXNTL*a-5hxO!!fX$ zZ<9+@NhPogiG^ubFHg=|NSKud9JRucpJI+9afY15^Lxq`=S?JTGrV7@!8#uNDz(=?{x$N2#`tcJwZcC;J{pLW=v`%4O53Wd=bpPTq3 zUwa+blI4k%IL-1vRK4Huy+tM4m$sp;)~YZCY8Ur&Ny0S2Md(M(rj;<1Bf(&MNuR9X ztJW8|w>$o<{cRGIP98+i56=;_IeV$&3`Eq)tz=k~uD6%_Yo>Nb*M0BhgU}xTa<|3iXD7etHO0`{HxB{gjns`}bW#Tg#w~I(B`N2) z3OiSw(vOa%QopqSWJW0Ua}~d5yNUCu{WZj0NWhYjiW%Uhr);T7o$KtV{6{G$*TNn* z`%CC0CC*Nli{&F++yV?6yh*0AZIFJ+^h$QH=YCcGMtN8a%!YZLEEX>&^nhp9C$F!&_jHNeh> z^ujx)8x+QZ9!{nC?eAQO%8#KRtU<=Hu(0S{we8AZLzC_5Rean6<%3(t0n@!8JMBWZ zqr!capxi1|{;e?(6%K-g^I7muVW;dtyTUD~D07dfh0i;zBETQ!ic2{p>7n?Q+XN|l~@BOyalf_ z13h4fRyWZh$)*J58UlYl4IxsJUX)U}cMd6dYr-l-65O*L_Q@O?KkPw?@DC<8uv94UA0I$_l9kG-^(D@9J z?;W{-egLKC*Aw0J4_c`^W3q>;uU&-s7_c%>yJbf*^^Ko|jJQNiq9O|!8ut#7s&cn2 zE~JM_(;r)ypPct4@QrU0Ax`fwf#g@PSti_XlzEQ+FWrYmx5Ly)_tA-5X}@SU5zHb% zNkE9b-O;DO0N)%6Dk5VPuIDN}1>n7se+s3zP=8dW62-Mjdp^gvU}72I`zP3f>MD(7olKx2~Lo>6SAc%1piYa{g$UN(u0`Q|gsB=Ad! zeKCibVE5%x2lxlHR=yaB0S3PsdiO&tzBhoFM=Vu>n|H0&tXTiDEhQ9_Sml-u{lZkK zuqpt2?=l%6yP!dbyfq#jW-mC&_e5r05WZuv=KxbhWM~vQ0LH#1*081$xM3S}rc(~6 zZ+5D1A`p$s%cr#Zwc!AAVXgL&A5FvEUtjybWE8Z1YByX#Z5ZYXuT@HG(3twl23=}X zc@(GUd7&b@H3_^Hxpmyc zMAJm2(hN0$=mL5J5U_W~g``q?)mc(Qh^ZHI)4_jW@@heGGxYzSQe-G%N!2&vP27yH zKAeqgC%pS%y=>JmX<}yrGhlRIJ_AYf6eHMAB7kg)6H&qV!B~jxRiscU8GU2iqI9fK zv=K&r|91AOZoTbPfUlwS%{f~MUAfM(t_{ZpmtL)|0%*1jKeo^*u&W~fU%DKj=TI@d z?T=vw;rAc*i=`)zz;HTI7|P1#uSj!+S_j{80nd=iZ1q`*!SO&vlYEGuuidFNRXy@Y zC1?~x)e@Ew$c~zWn988lC1>nhc%WZBsa<|DW4i5alvx7Quj?Oo(jj#|hdc$^f`t z`dQORqxDZ^JDqmOehDh3Wa-+evYSlMdzb+1O^M2H0up;r;Y7Vbhgi@Je-- zcBPVzn&i0@&Hx1{5Ig=7Xr#)MfWatLC$T2#j`E7P@3!zMm=(fA4?HBvl zKMiZ*Vel@AMbnk3bGQ56{S759ck);H}4V?5& zFe4VbVVWGB!Vu-zd_gZ7f!i>-)yI|+B|6Kdg9xFmn#>CVi@LB8rbVyH0xy#P_HGE= zTFl>1XX~;tXS1K`6$8h`Bgi37et%h@v1Ej%DO~Sa!$x(Pvk9$Re6%g$HUL$qp{QLu z>RsZ^w+x8v=1O9f?o;7Chrb?9s)YEIe>L2d`mP>b$lGloQ4jYdcX^`+7SED}`Zxn& z7!4mxg|ppF6?B?If{V%0j46#~Xx5GIm6i$;{XMoQtD_*9D~(&u@V{w*5k4ChN5)sa zwY%gp@)u4uanQVWIJGQN@=5rc=$d+wIUaU#IGIPCLF{I9r znN3zn0Tpz}6I(G6@w}IL%JtZaqLJHL-QIMb4fy|jGYRxbqD(`O`_)kGQkvRWG zdawv-U04ZLs(M;^qNeE?Je9<<0j5yu=wyr%KBm3oxytA}rWr^Q(1_g~Z@NxvfUyv4clfZ_)>2B}MR+ zORq<$!ZPtSHZSgjhNZyZ{~M;ME&5PsLs~rygVq0-rcfGmP4Cd9FQA8{!AC@n?i+)d z6uBESIHj32``w+Jx1uYN#lOK^wgt-Lls;3AhNN^0$0y1uz_G@fT0|<4mdwy)BZyN@ zPVUi=FgvR&I4@%`q(PzvC0E?-gWrNU+bMkz)rUb=d1wERt+x)#YHRyNDe02#4(XN# zr5ov%20^+zq$H)02I-XU?nWA6<;=X@1PH^(D zA_Mpj8J4;v=;XMrJFxzTR+YMqAe@We-pxM)-#N1mO^K7x)DC7>@+4vGn5PygqnAjV z@)_^YcLq-WrpeLny6e2EO{G~GUN;a0O|fUyftMvIHKOA*EwI>WH~@wF9{3{T-oFbd zv9*HP+l_3!F_-(6q2Qh|i&@gWIxN&E;q$KJ*yfcPbR+h+wYST7K#u}o{vUx9N3k9k z!}Nex=(O;S_DeT>8Rzj^FhI!gw6GfG{I}|d_Ojp)-Fc7Oo`M9|Gasl|yo1xZ97q6{fiqiQo9rlz7H*6b5fga2tL#(ICRy@{@Ov zQ*4mD#|%J#esmz)gUMi`#0DA9j-ph*o*zT1J2p6E7$Da_s(PuX7@Cl=pPM}ll3BnNh3cP10S8x@HzTw#m zw|Bna+KvN+mN^X#c;Mp*_#7x$oBv>y>(-a*46vaQzlFM4fn9M#@co$l#cBo^&jQ&x za;ic3u#8tP>}4w)K0})*la^AP#kaiC7fFRM#zJLXXoy}&$|?m%<)lV3UDKZe)Kz76 z?>%b0*IbYaDDA;PThOj0`Wz;FDh#xHFdaWL-ZaN5kp#rxVxl+4EB$Kt+N?}>v4OSx zE%lpBsTrPhqUOD!GK2VQM7 zKr^?%Kl}T_vCqM^P5%tV2_89CerzW~AaUq&|MxgBdD(um7AeoxjsuY1o_Jb$2jHmO z&J82$d3o@Eu}_a)&whr>a3lIvfYOd3|Gv?#3&S7r@othE4^&#qx!$%IQ18Bd^lgmk zGpE7^2Tz)DW+C0rSHsA8UT$cZMZxUpIKm7p23MOg(CVMiTwa0`r=3P#7og(u1$JRz z!uffiC@h(ECEerQLi6oOm6*_V2^}m%o<{fn?BNT{AkX0#6{k-4`rWZ4sJ*^9+-H!3ll=s$cUoKT6q|8dlX5!AxQ=YP+D~&F{&iyRcx(NY`a!-=+_=TK&-x9AaSz72tjQZ`U(*%e42+r013ZnXc#RM|vz%CA7&sXDO_DAFKkSorUgKlq-X-8T}|R;(t4 z5l~4G>uiv&{z5-)Vw^m_JlpfMo68$@K0!UWrw&MMd_f6tJDxr6L7C%*`a6T5T_>|@ z*o<{1^e!@n+&6!>sIxL4`x$4^RV$|u9=zh!)4e(@WpARruG{l>MM_<)tx%SkuY9hP zT94|iy2!kXeM>9h=YNJ>^XF%^+JVZ`Sqm(EHBUV$DsG6QiaS)ea$B?HGjvnioL67}lYB^X?Y;u?J23zV4 zXEwi_6Hb2A{ufTgny5vyB^o8{aMN$X^Qo2OgW>Q@(>WZz_bv(`A$-KwLvUxt^0j8P*4AiS(_xjg* z3xF*7c;T1f|9l6ML|LED!bFXhYRqr@+57_6U!HHwNq?d};J-A%d>Cm+11EC&a6+zo zdHa7C(@1goAIz5A{>}Tw?)}dOBms!pr|O76W+GUyy1;_u2oyA?t1YhDO%9ZFN*P~~ zu<5?<*mXX+f&Z5LXWIobm{eZ?qqh0`^H0}#p8ub~M%yxD+f>Nw>JuR6$g=(J8M1u; z=>RoPqwL^CFt!pDl+fc@?O3T2Y4b-U zYtM9ne6`29379Q|8AYl$|7X}5H$O}R6^P5hEYiz4`AeXleLHT)DSfgPxGI>cP*6pE zIvQEF$xcdpfW8OPqkbQ}{%Rv=cC)X7$MmAmg$gPXmj7%v#(7uo*g8?${t;Cqbku6ZJ8x8i+TB_iORFxahVob{o^8LkyYw;YE-7y9s;A8OIxKcxv^ zIAYGZh4Krt`|USG+PfGB%x#`$E^HZD1445*$y35kS>YJJkW=tW9gPw7i6j+NcBYe~ zW#rTaN>*r_$thAUU;pv>kH<uif4clj4jYhU_(;#r2=+*;vPvjK8+Nn=6DwzGiH^Q52)W;Ys(Q9i@L&E+Qy#7;ev|gn60d zASK=%^<`g(ZQgJYUG$F;|3f|RS^qtcMK@@OB7g&imLxo zKr~*Ek_2oSbn^yB9+ATHZyG8Jfz4IJq!ldw@+qvlB>zs=$sx&!z|ChqaQr7hc>v5q zC@2DUBd9E|0|u~gx8`3j&y<#yo(d z%=%5gmUh>l|MAw@uZvVehPb&<xpc;y>ifUZ-#7 zKu!tC`GVXbM6KDl>ZZ5V2Kx@|C}%+G1ksyF8eSGe-Gq_*eN9VCYkQdc@#@zvD0S_R zJ@xfn8d@ba-6yN2hI0znQ&z_Iqj&{PRv&*?q*GbnyI1x{g7fU4MIICwd@w{1g|1?$ zY=YpS$$fIvE4U`rt(X0uEuF|)-L(#9$zj3pf4Y}6l#8PE->)mW{tG>pQIZAwhN^K= zq$`bQs)k7m<{roY0tqngUDE~DKCCT>d>1m3Cr|}P^>%1~oLmBd5h)GNeZ|RliQiGo z;c;g(i~|6zyF_}X$Cj>58}UqMm+c)@Uz&BkqwJ-2*^yEj{eVTK6vLs#tgfZei5!<7 z4^LoBK;w*f{Xy7PWr7$(-JYnCgdv2r7Ils{z4=p$;-qQr!5(eTz&0{21|N|#G?BA@ zvx;s(jJ^z<>MBkk3X-PK={TQM&7<}A>)<+>FMRc`vkfpYiJZzyX1^s;vFPa4vf>J# zlPdc5gQ0}{$E(P!wRR<>VdS~V`eD#upL@w@z($_-GijtGTM zmedqs1M*^E*8GSU+jL62w+CT=c2<7fShg>_v(m1G2L}YMxF!cBF$F@y;;4+9smm6! zM$cC9drfA^d3rxOUYqlOPS$g}@5i@Zfk1|qfqTuuw!4l4T)f*dR<8oVjZ}r}zD5`s zYUda;L}^l;`vTQrzY4=MzS87JV$q8Py*wsr?LUL&D5JI2^8`|7%73l^A;vpI#f?N1 z^PJjEF(4(k_~%$0HpVFyxKn3!UDKZ=aBNMuZ_NQiPc1DM`GJ3c;nnL(t(MR1K!8=s zz*5h4p2lz^=?3b5sCQpJwBgK8lDPbOKjAVyd;Lm}1{|vMMz`2d_ z_8aK6NO}8PS_E7`7^u+6N;4Pu5>yv7R8#^(L*Xy^44btX{(?VU^F9>@;qYX{Z*95; zqKP}F?yoSQF+?BPlUWTSAiJR{IL2DpY6vUahRfqO|u%*DH{b{ z3D%Hl3L19(H^3|z)4LZ@X9bI;xY7iS5&9QFUz-9`U4PSzvY1CDy~m?6LV7i^O2%BH zy|K?RfN%IFq;03VefB}+Z8$MleSzHc>u>`7w&BY?KCrER^nY?y$PywT|DB>Mt9KpteWyBhW{nsWZ%)Kjns=zXAOf<(8>m1%8*eD^!e z({0ba%rJ04Na+ZiW#m3*&{EMv8W)$#^`BGNTM2oraqw7l;nr`&iS;_>9#VGg_>8)s zpt?Yn_GMr|N(iiKPyz3Q;0r4A7Paw-C+kd^-HH2u{eRR|yrTJuwHP}Y3nt4sO{_Dqm41Hz-rT^>3Ta-b_)gdP{iVnrgVGwju+qS+lO_nZ@qYv>QMyHkB@s1 z>Xmv$^Y*6Mz5&a2Y7%xkauknE^&q;! zV4(MXjaT`))4b>9;{aD_dgjxB!f)LcbJ5!SjTKhz>o+X0iio)~>E!=fLJrcMexNG6 zq@ObFuqbWd5JuaI)}OKtP#3`AkM!kJ7A5krs@s2u>N#_;wJ|a8kzMGM7)X3eF%smw zN@Y$pGp?}~9}^!3QzT>F*N!aBlP^WTsIEBj7`VoH_dyr6*#=7sm^E~2EjEkuVtSPQ zF0diuWk@RlR)q5|Sd0zu!#%2$EkX(rSV5o~aSUPZIWO<4zf+LD6pvXupu_jU1b{jN z{{b6VoAdLZ2th#ue6za~nUNr36q7}-VZ|Ct%SP1iA|ZRD<*-uR)|N#{=v)FM?FHU$ zlfP)spAR_BX=vpdw7Nm|CK6RmFoHu$OBo^Mxipz4&6>wHn$XkL3@E9pQbnz%X&`?g z9*Wu>ODPVqrGOr3YK)xMjszmf1X^2Eu;{S0=%EP!#EJg-`KB`uphZBz?IUYmc?Su= zMI{x$Davp{ZgD$~xSSLv2hYrQcb8(|MhKDqSw@9{dW`(#cJS|f1#xBjKiw5zKY2A+ z5}W>s=%n+-FT>|zxas-+5VA=>9%yy;Fcf8cfqbUxor$S|jnGU?^@=S{FPK4)4&UW) z9*sWJMODm`&76FM|7U-L)?bq38a6j1n@+zccJ~u~$l3r=k3ww}i9Rtv_To^;G{TtK}Hf^S#zwy8GYUQiREYIW5>Q zQg{;Ya>f^-2OIMtRaC8yC111K+cnB&Ju;oq4L)HZ2JdzolKC|q>8S*>CJG#->!?6i z^|mJ1RCEb!#x@qiDhj~K=^msrMAu!e!!_MF+}s<)cSq!qlOyVWy$Z6ZgUJHH(U z=va!bV<@}GE=Tb%CixJ~tdRCZlbWg^B`nb@gCRtyUxpC5j~j>DMKU>_b22>oSbS-K z&Z={a+;vt(yYAC#znj+e)c9)KR}=hRHz(0HZzCbECJdRF4hWkHyAm1XJRe34-Lia@ zxVWsWSG<2RBDC)$fBKzjS^C^EoUrc-1i5KspsExec)mEe$i6u&c@?cVaJo=TLMO~d z^FDbPNuN4a=!EudG$%hSvt5F5lpxjhI6)#@i++4im?Mme1Fv)!Z7@#BLEPG_$w5jGiqha0V9di5G6p3R_W|% z7-%gfGQ!z9Zec_pmL@?sD@fG9-CB1ymON2veHjnYvsYBA#g<7+R{&qwDH+VV)=2^- z66cMlQyTO9pU9!bz7tQ=-P*(*OB)$VHO)@_Hgcv249vn8MS=y{(UADEr#*cNL^S!t z2eU7B+QfB8dLvnK?l%SMaIAYw_#^LRm|~Y%bE6V@T3yueC>_wPSmL_+SE)uR9XQz- znA+5xWOa-jg|{x!6ZoJO!HlT}Ag1jz{BKAH=d>dSa7k!LYvTI@d{y?iZWb3)8FD11 zj8_j}6aV!&6p&MH)*f^sP%g@~5HgldFOE>015Y#dEz22Kevkm5t1 zA~xT06O9s9>NQ`)JEL&&3z8IRBnQ?wH17=4z>u>xJj%w;k~$rLyQn8m;@ zL9)YJ&3RRh)`9bB5yfwTYuAFduhCfYM*V1v?e-N4-mlgya1R}(aEXaLFo9>bL76WW zWb~hO?sm{r2!F(|IEySco|?>-kDYOCT^I1Sy00+8Z3XxK2ZJrEB*m6|MN!QIJOp*;RAI2Ie2Qql z%ty*C&8VD$$%Os(&*8Br+>)%F2XtdWd`qVPgSgGa;@r6>dmR_2S~@M8i^G@FW_2^{ zK**~2FP%#9E?OAXKJNEeK2&YpC^0RjL*^^|>y~r&gLf3W>9cBI5^baidqLO!stGV{v>Qfr^`i;W zz_0=pBatsOE6Bd7=qk~W*!-Q_9R8IGA+g$T)|<{e3$=~AMZ-kfeHfn3?UM)6M8ch% zpxP*(4mU+j7gO;6c>KJn=J@e9xZ&(m&|(y4LBSVzuleU52AbjaM%wz`ICv6-Rv>vr z@#{D+_Z!7k{~gws`QsB)&ZcmhuCl>xWoj&%5rvpB93?)TSM;dDMl*UqYjAv-byls&Tr0DlK zgo2vjx3;!+`1KxPYVSX(5C2Q@QR5$ceD%qIm-xgejyK^6538QyYfmeXS?6Zb+uq2Q zXt3tTQ$^}Z#JLs*Pt&GNv-6F+5=h8w5IK4e8HBhK+w{@jC}p~ipZJ33S) zA(xW4qq1&>RH_BkRy42G;AVHk@8%56Ii;g^1NK|044QQqrD+$lBX;Y{wrG{ zrfv(c2=OIjX~>reiH#_JwZg$%eYqCAVSH!ySER&y+RPYV8mYJmW_-iuRm>7HiM(%2 zVrekvAqt#W8mC+y2oYHlyPz|hMW8pk&=pBd)$}rZ$IqQsz|JMOC}hw4PIhm}z%qUh z=Ok!$G+AORKk?H-C5wpuzVWzJOfm}%k+U@clTav&4m47D1hSF5=8l@WS^lu!&~74Z zG^(Ku%g(zs^;h~ibXrQ_ zcnIS;71z|sNK7SRUs1p%Vi)}U0oUZ(&c*_pP>jIpmDQ3Zjl)`*oj@UYH=HhhYl4zu zqEA(kG@>rhkF0rLfGumGIBBVDia=C#wIIt^CV^FC_IvUzqRnmm_F^}#$LH#A228?N z>v=F3?bBaRTD|#fPBlHYqQ{5sv80byk(op>eiicc)}Gp{)K^kcZs&@l?G0Or$@I@R z(^+i#Jb3QX^|%%j=}oMfAMe3)>Na9x>D9onaCY5EH>kz%XUxze{`Y$otl~>2s3xHO z!mtAfZdC+ly^{o`7rjr~Siv_>6g0k^ES(CwT3g(MroV^aN>tVyIkyqS_*I-J5V`h( zB?ly;%#b9^lcfR^_RW~Sweh; zir$1x|H8!v`W`DPud&nyQjMcblwj7kll# z1A!fyG<00YOj3$55s_)icrB zO|4PzVl&=6;)hR`!?V3-HN8o7W(4sy=j6!q_Pc+lyT!W#74_iU?6-5}!%#Kt|NLF3 zpcTIv?tyQD4FF+>Yqd z>0S*Ns*k0ps*5yX`c0v_uFd>QFDZaCvJFn3!GRy$f$X|Nwk&E|bKXn{Ly0Lw6^~A; z=2!jWJZ94)lY-W>>YIWk%jH{|R5Z(}nnaeNw*0jI3Hf1RMuO2IokXg1Rnp25Ykd%6hWo4>;u4>^h%jFRS`|;8=A?_e;|`Sr!FP zJJ{7ktR9B=5)(NNI|X>n863r6h&$pv_O_w)--Oqhhy0G4?A+3B=IAOqgsrni@~Ptt zQ#5ogU&qP$@x}Nl1^SVKlXA*D#!A?6M7YQSU_+Io)OlHaac_!HgO}~;gC)e3DDY$P zr2i|SJUJTAl>vc$gsF*$it|w@wBO_y#fkkVa09V(g+(K<_}m4!;xni|*+n%XKLF?M zrVndC#?Q(MUskk0`BuV@l$d0ee9VS>(g9#<6w>1bnb*&7T%%l0Y>VDZXh()@r zo&(GjALgSosOmF|XVK$@Tz>wsZY7DxJlxw~L9}XBM{dth$_T3`W%|~`?ILFe8<_j_ zTMY9XHKv=~Uzu0{OeD7{Ficui`Yx#qZ_48vQT|-r~hm4pUQ40_-+1vNt z1~z<6r8~g`J-8X;<-?gw4pqzZ$QCwK~N(CoHtB5Vj zc3rt)Fz&0bu8xKd z>FTb^@?JH;VI<}$VanWYDsuRQ>l>|#?ax1AnB9I3keKhdyYGBApYmx8$?PfTkA4#% zUkKjE()eHqok4x{KIUn=+fDb_j^XXl#AYBVQNPQ4G>JW#EF$6Uio#Pb%- zWfih&8Tnd`9`629J?qCe+<-(pKy(yxA0Ym}v@{~%={B0qm-YCY8wLe6n#|IxB25}% z8p96{(j1@yAZ<3locfXIGd{Sqg5%Wsn;f?tre*1K!CAO}*V}SB;W#Gql6UrD>MZKynji-wWSg89eXgn6x8?8$9 zWrKP-;pe~9JpSH*Rb+Hz;x<4Gw3;b|C^!H~I*{`|$N~7r#Sv9pGT%aAw$hi$wbVgr z74zd4?=nFYJql*ZV3s2lJRNbLvs=*4-6f$tsOs|?yY^sD@O zo$2UFh&$D-f+wl2F7dDUJ*F7md@%E>!Oe}dtHyfi8Y3lzwXjdbNvWRe;hJ6})AcO> z9)D_T6afcJ00>b1{E=M5hadn*L}F7@3C*v04sE7>yaENY*<7iHih1}6|K;v@p8w0U znYsB?nHC!v@LV>DoI(NV*5kgiKNUSaz1`FBKmqHMYm9OE^Lzs-9hv{5W7z}%z}P`b z0(xq~oOyQU@@idUVPPnM)Rzww-Nv`Z=^Ga=fRt(@ife*GP%s@FzY+%;_*v`nnEq2X zdipTg1UeNpwFC#&1-CKNW4-kI1cONJV>hl&ECYO8LAN6axMpTy;k531(_FbeE>t$! z-W3#fFTrkv*%Tl-{{=2+plFlRN_!2)_)t&LV-?jgg8t}rx)@(prtS2#+bg+rS{cuw zDObc$H0C+V%p5F#dTgN->16i6-by1vHZEf1Tw+^%r2jj89J=1sH78%kx7s7|;fp?mHt%IQaMpDJjxQ zO6WjNX8Q8{R5@|Hdn*AXh+9Cy(=c}`AuEgY>eVY$BJN@(Q+yO~IAp~!#vZ_MN3Q`b zDRHc>qKoXlhU9y{*!WWiHrwBBB@ybRgLuA@r{Q=B7L5o1ZD6AODkprr>5Ma7_r~Dl z$~%nGLg@NC1#H;^H~ufg)6+m55q*8L9`L6+Cm0URDYZ2C02*N zCtxHA0SwjZermDR7q0R^L!4qdXV|z<)YSAHL*zC9EC~?W1c2K{o)}HX&O$WSry$co zr^*Pr6Wqg6{bzjOA}+opadl?N1~j`}(SLhCJP>Ng4b1qZCg6U5~OIz?!HiIFl#BITXGyyAH zS$o}ebx4%*^ZTu>Bn>UCgsiNXLMyP6z8FE2bvrwfPp=<<26AX}at{)mF~iNt#bxV% zt6TT!Js7LHi@|w^0y;W6iOIMg1U>A%BdPu6^4WRfi0`-hz zxfDzDQO)RgAcTUtySr1@(z*oV2O8nV^lj62(3=;lP(u_>KxC2s{h{-AD-uFeLezE~ zqY2Rl<(FWdeH&$MjRNY)#MxPO5I;1@^s~)Gu%Y2toy{swiru5?HFio0KEulX&bDt7r~+TKLWVQV#M9?AY7)6os{UB^(XXDv>?&PZZhnY;+V$u(7o(1d_!(T zz0)-y8EQL+*LOmSB1YKDaCTX{8vNpHgMy6wY3hgMtmDLSyZ4R7-b5xSutLhqnIj@1 zASC>!^$uafknzm(7}qVZ;cWqd%nneO{E3q$GY0E~48#6XEj>29k{Qq&fLMf>&gbi& z4PLxCVCZ9&HYR$|IvBanU3;JbyS0x`DxfI~UTf%;@3Q_y*%3);!qc^}9K4E^rR z$K1dqO#l-@@>-{2VZ4bX^0~z-3_JJ3SFjaM|BwXtimZRbzot!ZZU6IQJ0OI~7wfFB zmzI`}*4iPfGDn0%Us~_P-Jf0Ef5*!y$IFeEcYE10C2I6~?e(dnb|H!@1AVE7kg!s) z$Idr{aGX)F0NEaIU*45JcpD4~sieoxk^l4$|9x!XN87@>%MWm*fd<>VmeH^ev3OV4f0j)4}Uu*mH28YR<;b=tLO zQ%-=Vh0M^UPl_hb;7y(cI&O*oevc|%LKiKCxg&a110Egs+!8j6b`aHE#RT_iL>yyi z2zGx3>c_Y@8mK}@ACZpUSX4$3@&BQS}i$f`Pd%a0Po1y*$yL0mtOKuuD~DREoReg#`^8n+e9J5Nu3(1^er z%@(VGY?--x>PDb;15s+dLvhqBH$4n$g%E90UwJDCml?|vP6x{%w8Mgd`&6sDz1E(a zv(JyPJ5XX|dF~QkTwZ$4aKGk{WhP@?TI}xy$p_#0o$167Eylh(_8lv@VM7T9!UoNz z3NY;I(L1;3`|&HJTWDYBbASD$wrH&nFE^*g$5m2^qnFh1&zA+m8Rsjenf#MGp#__WT-H zh9yWB3KfZ=4r$eFPqbQlM9P&uFT{`vZjpi1udMIBmB;^UOo9OXvgYj=LG4aIVO(5X zP2XMd&SjB7@gM)vjz>X8i*HMyvq*DuvgqR(EEK7LOYw|0sqObYZqaeapDZzdcvaT_ zcX5C%=zc=O#1sigx5b84#s7C5rnk0+ffMg`xUf^RRi(#7OlYq98*X0VB(zSGu=Z6* z7v%xPE|R;r!0o~)Q(8`pK(lEiK#2l9E>TIturR;L{zqnaDVk)@;-%o{rxtW&7G9*=uyOCR#TzF#>SBy)C`ql8;OF4-k#8u@-b zX)vZ;7dZ$PLI3O{%l<;Ac|Y&(lVdySy=^b9{6EV@hMrzn%?ISYn_i+pYH4YXz#G}? z$Y2SsES}1@9Ow`+B}hiGR`-bwZ)+3kxZOhe`~)&DXePPO-+UKvWo%q=LP0F;7eEf2MP)vGh`J7L5Ime0;oH8YLPX!^KqkF+?NUy5fe2SG1vv>J@sw{9rH5z zuQ?n&IV>B(b>C^Z43_Z2w{Ob(Wj9RJNDYYKDg_7>H@2EZN?~ZN(<@wzIVT(|5i_Ew z97-v|^}Lw2b(gnDKYwFNtVYydbXDCLx|X6LQ$oS!nlo4JCA-AK72Nw8Cup&#quGmn zn(Xi(>V7$L@Z_VW9+dcH7AJZZhrGm(Tx2{_+ z(z&EDE`#4*I!x->c%Idko4kcd$!&>dRJG}#6G+@q1$}{v%4-Odp2DAxk;1Ga27U!) zCF~E=ovlp}4rU25d5+dQv!5Pr60)=HYkg=1-D|e7b4yDjLQwFh!F9gxko#V}28v+$ zTPcyHMcSS;p3mB~7K+n{iRGED{jLk$!ANK0yzoeRookqM96*=?1WoMz9p~+=u2E!Y z&bwX3Dg*c6rv+s^eH%U{RFE6w`vLn13ra1QVlZ)jVIil}9~sEOCDYT>1l*r6ffAmM zg(Vu~NO3v+8Oo2StnZvyfQEEUkR5JhbX2Foh7kXwhw+N3f_y;jWIbt$>69VwF+2Hh zE>2F+WLbcX&-LIkuI>~Z$Xo;-B@DDK#UJIlc1CAQ)EHP5(AYvgNnhJrTZ<`04mb>RmLJ7LRF##qx}D37U`Tg_wNK z{ycOsL)AShjW5~?3JjZ_hZyH02fjGusPPB*+zK;@!BJ+L`z2q>2Sn2HA3h}(PVudN z=SDz3Ow>9gDMqaB?7^gxRi66=vRX+ux_NInE#8^>IXjth8`BU+@r2Kw*1zU<3@WQ^ ziRkGO1OALp?YNNqM{3cLG$OG3bOSBrw{?5en+$&Ea#7uHqR$>HEk8j~53(4$!S*%= z-Y8HXB_4lMu5qRp6v0!FPhCGP0xg~pB(d?v8w_It^O|qu(00o@S}ShEE8c7wuF1JX zOL+*zlQ_UCPza?bWNKU^AoVR&Hld5#B8CJBtb{f)88cM6T2{BqcCBaz3!Zm7DXF~n zWT3hM;ZV`U_HETl*U^Mrp`d$;o>3BvzN+HC0D>)Z(139mpd1GE6%-Y50g$W3{ZvU; z7etY`>56T}0AGr#uI>oXV)X-Ml#|4^Q{BU1A*r(PH4f1B8-t@@9bayn_ni$K4l5c} zRaJWultnxx;3kgiGk`i2jfi`rq$ukLc(}SxQ$1K+#iz}v4ges?X)PzUNMobpCfw@F9>cSjXf;DZ7Hf z;eSV>isLYC$_GtNDL+3EP(g!)%t4L+u^Ga=52||gr6q~8i}hl2C@33@v03r*SQXiTB;1bUQ{l zTjJI5(b4V??2WHWJj+M!KFdODx`?7f?Em=|FPsZTDro*6klDh};JiJ@B!<`^{9hi{ z_qP+xu7DOVOyEabTL!3NXYyqef-7CgVlW=nvBSJC$9m&7J|U&+uUzTDPzoQtwZgxx zLX2ZX{EN8}%h(wEnv=q&G*nI~NfI%Uk2#6s%{9DO{7BVT**D3DxdwT^YHD(|=M;Jh z4@0LU6+dKs4IUfgkPm>MYgj$)(hc}8wDqFbZ>LdGn?f{FzJocWERVDN%_%>I zdM8Q2PHO^OA7*A|4xn3rJxgDI93UpZSQENDixhMHprubq+K0;XO&4_wuU@5q`mJ0J zCZ=&@W5f+A7OJeZOF|dJB;A2yDQBLQLflkDk_982L3l`{V%>^O0@97L1dQndMbFE^ zPB#ZTf8MT{;Dd=oJhp+p*NJ+GX)pL@lCvJJ7}s2G$?G=D>FjLC8J@ zqKZF`TY8d4rS^t8CAI-pHTQrF5@uv_fAlx!Yae=2!g2E~*npb*IYR5sh6kO>!Er`VIXJhXoDEsDvfO zC|Cz^wn)re*&vsQd9 zb#3)kIY?`PL}~^VWxe&V?C<=*H)SrwAIOu)d);6k9V8!!Asq##wf4YUq^+VqQv2XF z3<{3z>1!N(3>}V_g}32wI$uG-HGcYJlB>N7*VoWZNamR9fU55*!;4r*{ZE09Pqlm& z>TNYv6;kSKW>@nz^^~SO;oJwwN6`~UsuTQhYh!Uo`FdLf!BlMY!(xX-Q}^%@0R(UVM2Tm|Q?WM8!J& zkllf4pDfz`oJf-8vv+K~xPZv`clB{%qye2P@E!di2pzkYH{5ux`Dm!)%+Rpi6hXD5lENy3&QO_$J?a4o1)MdGV4Lo#RhTqH=C z?l^MW9wWO!1xuS4O%?G+@@v|7e4(BDEVV>=n`4jCTA~1txq+JM`&-QGZ2HO{a+c!_ za;iQ=i0_woOEPADhVz7`!5iXgp7&e?9WkYF%S_3f6Ruu;{-WL)YKVQygBEBs-arKR zg}akt&N8v_^X6a?(ickEQPk*<$7=79r&YN-*yb31&Q8^RMJcGdV3J@XJNVCr3;^UN zxwT`kZj<9fXcka?ZYQcKRok+?dGqzRTb%>*q^nTXPV&J}k@aNg z)PgC6122D^vuGaMTZrmez-3KQk7ii=~Oi&z{Uy?muoG6)M~*a#ad5 z1x-|_K?SbklQEm`|LU>4OrV$|Y4id0ybutm zSDH`(c&7=NF^7hSDFLXC!rBz@|%Jrm<#$GOP z*ddG_w%cuFc6nxB`W#;wH#cjUYVK+F_c($IF&_015}rFaz91VY@@;NV5leK||kf zTDFsh>({A3lpB|XUnAm>zfjRJ*v$g*YSJlZDM(4dLje@>Pi5;#X$rz7uo0+z_|SC< zDysa$!DaEr+6w7}KGF(5`a^MpxKA-870zBX6TNJt0-QB(`V<84T+{9H*m|hQ;5jJd z^m{8!t>T%ibT&p{DPcArZ5>0Nj|qot(bSNNDl#pII11|fFcsBVe1<)Kn5S~9ampmM z@%I^%v^T^xvx8{UT%=LCLfzR}WkqmqXuq9nt{SzRx1ARVN_xu(uNM+_(1Kihr z7pNQotRwVq(ew%cx}YIQNKFk-oW4f~8WaGz7Xe2Xn6np+oloPXpMhs=1+dZFw!agB zo9zO)KT-i5qr3C7{T~svR8)>io)iG^B7liLi0AWs6RUEl*&v&4-B%#|kIl?fbaQ(P zeDxcEkaaOQfp~O#0H;LW*w%1O%3$r?K~4JecUEV|A?zZE7X`Q0XiL`e$lERuMzQARq&96FB^~DuR}R`2!lMY2XB{sjY1W z1{y3cE+8IZ=UQLTe#u>|i@Q~0#=MFbK^3~46} z>MxVDK0<dX@<{&$Bb<>b_x*Ln<%tL=L$j#Nl69IyoeN zRKyfzR0%(@I8cT1jC-DZ@(LC!WQHk{m-L*mGmnzR#E$yL@;s4L&(eWAQIlw#FQCR^ z?$(VZ*v$29M*TDKzeJeAopGmT)Khys?lY@_qC#U#eq-$o?*7$jeSBoJ#@`>ZlbhPZ z#6YKi>kBV?7*G0|Ag<-l%ol4HBoXpYV${MK4g*O0w{?FH@uq2Y2t`z%h|-jE?oby- z%L|DVr$dB80-(l=2o)CSF~zn&Nwp>=CRRCaOBE_-Pt-4bly`LGF!X=o0aA!Y{SUyl zu+Uj!w<-Y4@DqRokWp5)+#O5RyaP_4K>*7vRhuG!BOVU0n zf4(C9xDA{>f)DDtKR{7YvvyP_GhZ1Wj|Db402#&B+k%*PkUf$CSQp)S__+%QuqXmi zr-f#@b~hj$7JF!i+)twYF3c)}V6; zJTvBC_o^J#fcPf?#RVpHdeh!dMc?Z{YGFg$!BN@Z7#E+xd($y&~Bhw zWG|JN`}2GhP!@av(9&0Mp>u$ZLyV(bKDQ1&BIH2Iunh>UzSA4$+cRSjJTC-d7bbzu zegGVZG6L2TqqrMjTBjYk7Y6vl{nfr{vjM%XA;7$nl9B-Lt$UMMSH}%e?`*%?$Q94< zK54!>UC##bDOF~}Sdisj%h1=neHJ-HECZyi*eq5B0*=`Uq+f6X(=mw7RtD%-1^y?< zgjfc7`Fy~9&38Skw$$Rv^t1C>0K}vJF%8j z@1xb*(kWyf{bu3+i+7Z2@+wX;$Z0SgeMLpl^U9nvY1BA|eDcS(at zgZ^`$=Q;2Ded8Pd9>Z}Q95!3-d);fzdDS$`iCB-at^BUQe=EZyA|*mWh+BcYaG=*r z81;Ze?MBrJGDP)G3U1-pRt~0g=9L*DQ*KPYpA9^>mBC@tPcrs#LenSx%oOZ z-4Tp7+Weg|zt3?~erQPun2grlZ;EPT1amh9+_Pox=5wlNXG2+ahogoihiOg?-IKdO zv#o(yj)92@^LYyI6CRJBkM8=+U%fIoGz7YWTUJ(9RluZxyQ)J(Ks`mV2fls^ZX+oW zvJ^X_rk}urgc^rJT431VQLyQC3CDmLxPFmHnDD(-BJpcQ6Hg0KtW0CZZZ9pKI6~M~*bW z=RgWP@w1b5>MJ&bNNjj$=s;aE`nhn^0ElDo``>}5#r>Z*{P~sC%;hvKR1^i9$6$@4 z;pRm%u%jH=J|OxTfKkase?d)U1-}YPm-Za6pnncOP`Bu9W{7%wjof}R1$vur&VdIM z-@Y`eWr@R64gMtcf4&OCk5HWd6*4k1h|zggGYOBgeV@oCJ8DeKPW{?lfAOp$ug|dH zM=ytWk9nak!@#|R@9jSm)emMSX;M3oPnH8 z(7nas+dvfW@A(BE2H$-L@M6BQ0fNAcDN@MD z-FqJN-TAfn3Dhk>xptJoC22EqW6#GuWF6T^S#%1 z82*S|!Q+3^m@Fe;MMV25v~i1!Dim!4%B-da7y!#>kB;0)hlCwoC}ltlr~s)%U}}Ed zyX^|<2#}HdwE`gkO64L~Mff%VLb4+6ilxGRic3jR03i!3SRG$D4S+(f9nGMl=$<@; zeNXS!wGHYsnQ>Ur_4W1K-%!yeF0k`!=;_Iunb9U0xhW`nw`&*axK3Clp=Q0n?3XbE z=u|!}QSjS=sz12;@#Dv;uo#V#()3_|gb6L#5O$+}AWQPe#n2@CRF`5Qz9I8t>C#HX z4bj2<632j{T$LqAU`gAo(_QoFq?n^`aysPipQgKmi$W(+H{3n|4Djimqxw1%p#=0l zJTqV$a|77S@HhxcuS!U>_{Jjy8#8KQ6z#y4#qGK%1Cu7+dd%D(gODF5`zdfMeg}&^ zycfLTt}~uv`YR~S)L#27$eoxH`Lh^)uO`a4$q$sRC2aa8!!_#-eV|t8IN4t+aUUBV zex#>o6RDD2ld=L@l~Bx-IiL;AvfsLyq&bK&4r2qYKX-@aLN$1!k!Z5CLv z_>7Knn0NQ~RvRt;g<%;#nxFlxb4SbyLu^Y=*EO>^)GDlXH|+=|P~ZMFzmQ}e7H%7G zL&81HRVQ@?<4#FSerL_)^ir;ycCHIEXaS zEOr)87#C>&m1y4CR6r{9zH?F7m|y!^LiRiTEFv!AH_ExciK%T_41|ORyUuel4s*`< z+)~fCoML-|NzjhoQZPQ^y~{~&{J|B$#?)`v= z7InZunFmX53xpu3dSC^}ttX($ASNb888(5ETrS)yEGjj>IN3+_S@1o-V4Ir4a)Bun z4&{u%B{pq(T}Qi$s#JiBx1SknYimokg5GL%HO;x^OGnA$rpcOqkj!?%Ez_@ad4E__ zFR;=b^Ya9VS;J3VNhW~`j~{1lx)Fgs*6P=CxB8U!K>XzJ?OT0kaql_TMC0}gw@)`4 zKdVVxCIFeh|0cPfs^4en=|6oKEt&YA6AM+~R8s{U?JjQ~{Q6}xS;YeFUHM@E2(AFf zePm!@H$wzWs*NF<8@4TgSVk>%z_y>hXBWe8v>KdNjsKcDZ20uceKlwj@8 zrmbj@R-y`cupX?w5^5-~%SZA?-xlBNt05sJjf;yjPosusI~(|U7)QA2vv$&-C6NW{ zym6z&nFwDfnNdE@xxjM{_!Wi!UaU!2L^(TlqAF$Z@y5caq!c*QfO_c6mJJu$t{Q?? zHB|JWc?R#jd;O!kmH~=o_0j`Rf6C~^u|S-vL=I#~ARVW;VZ@qXr1e`fTxqdr*eT9%shf$g1pl=P*sm^Z(1 z(U0t%@?D5aT1yj*r5g~vjFUF|mZ2s+#FxtVqszv0`Sp+|)eGb&oSG!bLKEri*qQI+ zYd&4O(4p({f{z(>WnZ?^fMl$yfafvfg`uQA4`@vDuLVn$_5iI66)qF-n6T+RBzO&O z>KN!yG=Y`T*H7Vi%&Ff9N;i6_O|6^My~Ck#;DKZ?ukFb%AbbOVcB=L$^hbC7_atvp z3PH>nCK#?UQ4*r!U%m&c-0rK&(0e$9W4jq<;&w+-i+Zu6SYBCKSz;0rSK!RtV9%`Q z!~{L^EqtjuoGNcklYs1+HP{8+#F13%C!;muc?LG@_Os=8zJB2Dx4V{iV;R5*BF%}9 z@bf`~SP6$TSh|=wIag5{4`>51X(S}F;D74h>vL*4)Io_?``45j?iNw?IYyH6XQL!| z5*INW8+MODegtI!w{?Fe)yR(CVg0sJaZSn^WCil0Ho{GlzbHPUbSg1679|h^3;JEi z-htKhx18M?PVp5GlUYN&j&dqr*#6R2_n$v#buIpkHUD`F^T1xg2cWJK^l-wk1zH@v z7g#zNHFO?;=I>hrWVT&~gP_b{rF=Cs&AnkA3Q0wQzD(Af*CyGroGiZW@+S_81BU2d zXqC;?bZOd1>+nY;#ftBct@#VMAvFy*$WTgRB8F+rm!z5uf(k!oyur4 zAQQ6~o@^2z-Wp>3=rKdvzWYn332_b0w);94b)$7a4x$d?K8e5npj|{wLUY__L5XpC z*ghgbOaUYB;(-Ah)SmbdEv^V8Abf2F#QBkQH-QdBNs!=9pil|aJQhQL!)&iFZaE&W zKydT}>ZlN0GAZZ~0G`OuK7wqL10cdyH?uDlTWLn#I2s)m)bB zo<))V7dxbNEqor+P#WkAbs$UzWClrh4*a_>ple*+TWGI&`m%oa<@FmsC##DX{1P0* zbVSpq06sW{gYG+^DG()f1FGHyh(xPpxS5boUA+!#t{SwaASZTR2);cC3TE-Y7w&-M z7}u6SaSUk9H^PBactF^XwX2PRU1bA};xy2!rJWa`O`eBQny6R&}JjMZ^_(iKn^kE&~?HuRn~JE`0Tq+yf#JAsf#;FpvsTp^7&uy z@f1|JRewLr(o!!I4Vv?bea*R0L2FxO$BGra)y5czr{j!Q?q?X9u=l4GA9v^GH4$ty zTKWCfTTjiplj0t9<$u(dKI!d#`CH2y`?{v4CMbRX4|OONk>EFrNVu1-0K^ zao)?f*`mJ`8Ihd1d(NmuNZfyWXn-qtJOx|EL(Cy^sGZxjAx`muh%xQklR88L5V{8Y2xpF=b&~l`?l<;)Gs%-a5giAy&`LbxZ!k z39NLrR{-f`}o(;%hijBFA(vDW89!Y?VY z)55?{;EEC$XlhCa27c~EOUAOB4uQ*fKiOvXlQ0~{?oEOBYcJQh{>;{)z@=9iUJ4J5 z5;o*)zqEewpRbjeQpA>IDZmZM$7bD$q&rHP5g1A=QjPsP)*f!)tc=FAG$f#aD;bSo z?^Br9vg*Q$)m-eA;ZvxHtaj1+oRID;RcUzeeO$0DYr`ux6#whbX3vq}s+ADwZM8b% zYC2a&{df%s^MOlY*8C`vxLMAcUS5TJaiH+kBR}~(?T}kBRo%mFJqfXF<(^5ZYokCI zwNCTX7UahjPa_J736fb%kwL@6a0ugec{A({2ncCeQBq(@jyZIF<3^~6-FcIMV)!AV z3;K*n(hvU!BX;t_$qx;OEIKd9_>@k#ONNrpGzRgZN=}f&CFDj<24_9(+W|hs!hQQU zK4F|;%O08~jzUZGWnBh*uM%)FxD9M8**eQq>CzMV7HC}cSg!KXt;meLj}tOe8mAKV zt-XATV5t+6$Y9f9r$o+Zkdx?4@l~s(<_BcfVYTBu%?gnf^bnJ|*8I-3;axU4@}{Wb zOAlKTG}^Ad=c|#|F>k)U{)lh9iCTR8-B3{zVg&P?ZGJQ3kw**76T4#%Y?ECs@f%7s z`O>M>Xta`P%H8ujav4q~E)w2GfPM+oTcc>r|L~h%S&&s?NA_M;7f@@<5~j;M7~epn z$53T(IedSbM_4D1=EQqb_2F0B9Cv2*p1PS@quU?CEckpY2?T=Cv1L7ZX1xr1RW)qB zZRa8h@d*fRSk|W4oxOsUKA3xlZ3ktynKR|Jk=}SBS7D3BXTrhmy5FIqmDCYp8xzkm zu7i+2XutK8fdSJaRWQUu;`cgMQLUYhg+IB&y%)yk5qD~P$Ul@4_uiGaIck14ezJHV z`GzahNHy0|{w|-QV29>?w14R7e}0<I!U86Lho66`$I#xiyn zZ8H+ZA)Y**L>v2b1Z#7u#l0};Et#HBRx6>V=N@sjLZ$I&vMW3n#z7NCpMu5;8<7f6 zgDSGDiI~cXc!_y#(<*umG7mJ8=PY5s)*^spVC;$J8cje z@WrA_yOi-{o3d~(3#qu5%-s@L(_j2o3m{hEapsjEN97mvK9y+IN1pdzRvK=f^x&Ff zFd|4lLvo&m@kRJ+C^2p|3W@jxDa$M`I=)SO+e_!7V|TS(JkN07sqenaM(xkau>61z z$5nLC^uhHRu8}<2=g7ny75+~I7^)WUKX7}+#}E#$A>cJN7ac- z>eY2JE$-;%CD-}<@a*d2Lzh2FyfLVOD>e4{x`z!5-hOOUoOPtxw_7g*NZR(U-qfAo z!V{?(7A`M|eQc`o;++WoXPQAQghK*GNvfhqZK5TASVZ3fd3*I>y6AdA-0y@A8C4%^ zQQfZZ-;0y(8_teXO}UaTj(_eFnp_hdy*%aa+?GE(QTm&4R}FA?$NimdiOcheeUHDt zSBLg_*Ick%lhON>aXA)yl4N{>6y^)j8s0ik&}GpqcG}72rq+H!r(7~*jYZ7Up$?j74MJ3ecS1zHn zy?>5KAFGw-IfZQ=KV8)B>RSO#!VdE=jh?e!BBmEw)agG2(vhP6zwY4#BvA1b+tFfY z7$^jeXg-nI#edbfnLa7Yb0L!v+a&e-+gs$xdt>)IBM+b0WcGDuFyyU~ok#zqGJhnP zF-q3CJix~+jL`es-H%BTz&`hLshvZdwdlG8qino}8-QQ&X=zFj@e9s|L`TYz3qwy~ zasAWsKvUt&jne`#AHV!fYSCM>Mu(lh@_x*Im@sjE{6}bPj^g;kuOz(pUuaztZ)8NI zQ5rC~j7Vn0(6JNl4*7mMWg%%>iFhGR>z+uS!#Qv`{@7*Ec#Mkk72|+wzM_a*tu6Pr zAdajw$saO^@*0+NHNZ*hBRTwtV&n-jy=>NtTGm24-9`YP-!nMr3BeH@0r zS=M@s!|DlxT*>PV2;vT^u<-jr3~HGrN|LV=f0XCQC`wmXh~)3PzR1cBkQ2FLOupKh zsDhqRftZ<;pX5v8Qx=R8WT#&WAsxr zTKtXcptyExc6WC3Bjzm$dYn8xQ(Uy$j6|uAu%z#cDbnAXUU;W!^?)hABWEJs?yI+z zRz6yv%v7I|b5|(26|+NFcu~dz(#?#~ir(>gh?acv1KvaK@8}b$>!UU%{!*IkmUfHV z@?xUrkh$<8I@=S*03EK4dBnxw6vu#fT$XRe+5Vfgh7JoM6ETWU53{GX^9K6-5 zeBn5{ITUep!sjn;#u4&%Fkf#hry5-vfADZJR;cy|dit<>o)r;&4A02D{F^rZzf@RF zcK0;3EpU6Ng3mV@Z*fN%4Ho7~AH>Sk#J)-E<-l3{QR$!XqgE9Go8$my8rYQY9 zW3W`}=rSHkEfY3{fzyTncsrDx4lqcR>=HEaKO1%|zmC=X`F|+L;t|6dU>K7j>NGw+ zz8%7{9)cd%Vuu1J80ETw0_+2D&!`COgrp?Hl@|}5UtIVDu&D@C0HhbsId~!}R2vE; zfD?tx;s_YAItccxx+(Y}DSWnsAklvZ0n`wTC0wZ1XQ2h5uFs+RyIS`2*a`I6svto& zMd(sX0}K&`uadKRHNMFq+#tUam-6j3+ETk4ejAQzK?cRcgt-p9h1`%CX_ zH7!!OTE{Vdlu$TKnEQi&XGyNsKB@e(Z>74^pBKK1*j>HB!&*PbZh@#q%|raTb93-P z-z!EH8ZjzRhc22QUzRIeW3tt?Vz~Ho9NVzkr{d5}gm%{-f3h~ZV$s2JS4kmqSIGiLst zv-$iCG_jCGFCspA7~#1+^3)QB3bU}WRT>uop$t0qMZe7YdQzv!#H~Mnl$xK7T7T{& zUy^aB8`y2Eac}y3bh;i>Cl7kxhGP~v;xw%ssj`<1NFK}1mWi;mnKwG3yeU@tl? zwqG@mt0f-U$R*Qh(9;ntKx&o|+!=|J4>A(zPA?ExKfs>KlN8^kHCgqH@k2zuN}!}7 z%u}NO?D!xFKP3{EE@@FvME%k7laWL%fvw+~evjxa33*L?1|EG+jonVQ_5hKa>Ci24 z@#(mpRcgd*wwoH7+NvuHZsc~D>$7$e{BKt%MYL3X>l+z}aYoMXK+@v>#nByl`8#el z1B;CEK!82e6adj`)s0JNTlc}!grXeZgogu-qWb;v|Br(NcYHgbyZYtk*P(j0&^`H> zahfZT63nB2c?B3`tJ7aATQiM9uWuVmQ2Zrn`;3XWmxbB?5BY6qFZN zP<$b1+A9D)xuR2Q)C~Y)Nq}yN!54U|G{D*@(jw))uiN0h*N_?suk`~3Z2x1bVnfWo zmmiz_&peh|&8Gy$8%RF?ofX1}zd`TwTt2g;7=FJCYw8bX37QQ9o+mE)a zWj*|*IvXHZY;5l^Rf$Q?_nbwO?i`Y19mcPi_?uPvuBjedsAsvHi$=coaUa>RB z`F{vm3P2JRcBxrseb=Z^2?MBTJ+@xO3cuZkP0pKl?{}d{NM9k!?%ndz|159Yk5fks z4M!Vdzh2(pG;Mu(U1tL5zxBCh3Bc_ON5&D2u)bGU|Ln|2Z2p;2<71kheKr04@N9A| z&oXQ%h!$xU8zs|;VYc^rBL+!_U(*sySAfnQ_df0h<_jX#_OyzweB|t459Y)1l6y!c zslm)=oEt$mv#nwUN625>72w2ImtF76Gh6vGG^}Q?eoz&Rtv=2$NMj?z?wCp=J0w3M z>`obH$$PDeUkUDD}K-NSWXzyx?zU+nBH$ISyk+qI>JO7q~fd5 zS>|O>TC}ij{&W6?+n3ix6D9`4rv#<{`Y9<;@{J_k{`*8({SUeB6u*_-alvyKU&ym* z?&pa#z=@X{rU>nwD`(~7FIuBW%k2Ex1k_Nv0 z_^UqkyaO07kcKHtVt5)_TQkBU&jGCZ3ZNf?C_^i-#d9I7`Zkuk^WkiAJeb*+02Ylic3mS+xIpCjHEDihO0&aG}I-LARNwt8>b^{h+@+ z{2uu&%BH97osoN;6fWHiofI?fecXYKR#v9ujJK!-W(hITVkI6p_1(Vl`WA(Aes67e z_t_HhHHG0)uWi#WI9O^XI5-hrU!J-$2kpxlU#2Xtwu$cEalEqBx{i#exoAr|+Focn zhM5XK&*CD34b9@uE;2erXSa`1W_6o2=9Gq&|7Ia)}}HQH#7Ha{kZ=u`Qv^~{bfL7%BDt--^3csgecUlIQ-G% z&2^eMg@u9k(@)-a7WdgLS?BnMzHdNDjqop(JaHg;>P5;ExEP6h=v;%9epsefh5T&C zg}s6CqUh#EkcXJ^Y{GpTfmYmyJhtXv-BYGKUYGa1i5$Ya-S&_2AtD8bM(44h z%d)NJAbN6uM`!CoR}-TPlG+7{^}`{op8j--z3q1C)JL3TA&u(@bF@K)MThP$8JSXV zcygES_q7smZ;W}ee=AH_sB7P=#?)_S!7w*i)_DIck4E%Z5l6{iOUpJ<34z6W&BdpA zz*KW~h$#a5{cB_9cGjZND>-Lv4FXcqLu^7#&H~$$-Y6sJ?0p2!{+Yix%+*EhS$n7c zuopMbxv19O^fYdI&;S3}FTKRPx}!ciUV<`f8FjM&^rNMxee45?R_CM!gp1=` zxb__0b(HD+$2-Zvj8<8Kh=ao0VH4}5eZ;rN1=TIyQp86vWyDs6;h-sd%a z8Ig`x+Cy6L1RwYc`(Kpra}DN%@0)@h^W7(-hllKrUQ+G~pDbYhoZwv?eYbgZv@=W99NFEOExvH%y|Mad)vI*$35CSz zG7*GQcEe8n1zb3e&-P}fCEyhN3UKNNETam)@bGZkxzA12v+&^4pNWlnvTtsFUd(Me zbS;4j1&YCI7`XEQxC-7ja=8lJ*&>JuN)P|p$mjpr$D{k4=eEVVdX17aM!$(mkR+2* z^S-ae@5mw2ASbN@98{Y|ri+o8&~SSomz0I>F!TkW)aPwVGKT-@nl979uy3Upz7abCGhE>gclHY0UDx#3M(buOTih;^d0m*K@DGD-+y#yXa918uBxcIWfzV= z6yf&n-Sc|)H6Eaq(qus^IA{>PB3=ja2b<@ptmq+GjCVlqp%i9=gBm?OJ>#{`StXxA z8l|bHr?-}7RB<+w4Mcg3IIwsPnb)qYudjRTOsAj}H-9eAhkyr!blq=YMp6Kose+P{ zXm*;f<9SMkV_jeJqh^Z3iQ0hk5`sCai&lZzlfE>}ymYkQ)Yj)$_kMnGX~UNLF1tNN z{n!5rNL4QOqcMaBJ=Z?x?2Y466uM-|G_N zhfAN`i+9+*7B;EEM?PDIbbxtqjjn(UoVMwvV6^4fqRsSN)A^Ij*6qrdY4wjy&My+= z(>0B`-^d5!A^2%CdQ6#%rO3XG6P6z#c-!T5t;}5U*vf0~G7|B;nU|4m#uoLiT6v;r zF_B&vtD~GQ7Ww?qAeWvKq!F48-lL;K#3l>M6TH-lENet&3l-E^j><7e3n{!)pyViz zlg|{?{N9n6#hJLTB$&yqe3hu6K|S>b#%-MX$grYY>wd=MzDsVEQt5;IEd|DQLhl`8 zYI>zD`C^b~41p@F6{!T+{lqGRG}>_^d@{9L_}4_nxXKLij4M3{H9VwfEqJcKlC;MT zmI`WPbj*`21q&mpF@ABw6?A^4zp7PX&^ z8M)&@s0J-Q7EMmom#aq`BjFFJ0}@~Z^4gv4RVj22xC0d&Br>4adSx{H6z$in^@<}!hX?lveLO~K5rqYpX?j^kV(d7WlM6h8tn?k{u&LYmiFF{z7hQ(sITxo_#wGiD<@Tnb!6YC+|J z2+6Ly1J6{4u=4-q7(M$r;A#J?;y_!6{FdPQdgrweUIB#uGrLzx_kz=$Lk2Z0!nm8_ z7aKMs1Og8tC6`A()*i1NHw(^o?oMN$AGb#eHc;QF6&jo?NLwPJ9o?|=Wa?s}G3zf(m-+G>&PKnBtc;ou|Ax)wUh)MolUhBkKk-EvnW6%%{k;uQ^op&vPBFT%%%f+G3ku%cMAsCUu| z?$~yQ*`^v>X$%$n)L`8z``U`#8*v+_(mI%4nF%7^ z+0rYljnevgW4RgBl4Bg_FI1IY#qcOKd%$F|K35Q;*)YtN|L}RMnBC7L3gpu?nv&EW zmqN5xC8;}ftgbg$#Jg9$mR5DU+k$VfaB!>u>$irCSEb|St(+agGx8kKhNPNMV6b^y z<{zj^TzZs#`lVPjUGRI^V@TP{zru|POa$$qt5pCwZwjOqsEMBFa@s!e zbB8|26w6{d{=1A!rEbw+;|sse#f6?3^6HgqHW@DW^!mUPs1b zi3PVg2Y5W436z8$SSF&vDTbms4nRpH!EO#!Ssr8@!6Og?KX$Az3KU~5d-IZ0)KS1p zLBf70eWpb9_8OJ zrk0A!*iC^T@(8&|(-Rk=%ioiSc>;AyH*KcD@XlpKhj}w7Az^aFb;^;;5(~_%3mBdg zRv}z3!cur6Yj>D3EbBN6?wWRYwsA!LhU5A~CiL*USScfH5;eCeE-On7E|f3?p8P|< zer0TUCR2<*fr=1A$@->mC$1>zI0Ng8;^cKdK1N-AO;zDwVyn2}v4Azb8QqP>Ca0a= zjn60+6Oz~qhU(*tZwNXTZC}nbJ{$dW_BD;jDT`#f@1Nf53V$XW=^99afId+P=IM5? zrLZ@mE6rm()iJ)vE{2FAEGL1jEIEXjj%-KJ@ox!nT%EcIn2rbvkQfwZ?7 zjI03P-Aj?-IuZf>1`ifgw*BrgH3`GRsm5yrOOY=lGM`Ifp}n}0_3V!@O8NziG3;4i zYDfR1#KlQL^UyEx_dYZc0%&UsSnS0OswjES;Nac+l>OtMCh%!O*Z%xm_}LoiGq8`s zr~Y9lt?uLb+;ZIq{Q)X`2sKw_*TAQFH;W-Ev8=mmxWvp6>*=2>ngkVc(fD;SoMDd7 z!uM4?t+WoF;YW zt$|*?3~y+HTBIj$iC2(xd7F+X|3WPmh+NpjLy%V55#(YFa%x0J`;}n@p?B!m=_bi^ zdaIwrnz4Poo4A2Yh^>>hh$RiX#gbU}j&r6_v&SOFcuZ@g{GP&vXS+_FPh#C8=Ac|# zK<^G9jHAqZ_i=Q~$Uk!zDmDn`ms;DoJ0bv{>PX_i0`RvgE5GzEqXuI}wtnJn7I(&6>&PAQuF*ng}voT!R;c%*+>Hq$kk*a<* zh+`D*sm|5#`|p>%dBYNUo1QDoZ7H;s2~`ZB-K0g)*5jZ^_vr z?Xa9{vC>^HIliTFVh4HHc_^rK>0L-1DmW7=$CnAm`rhbKo7Sp27IgJ?8tqkuHqP+(k2?HpVg(6awY*1);2-J9 zYHP_dV`6(2Xa6ct3U8UPm_?FUTjvm5Ve2=M$B}A4++oZhxM75lFe#BwmrwB6OKvX5 z*WtO(&y>C)w|;z%>N2waUNC`%`T%QM{eilAtRU9isHe)Qmh5)}jVSv|bs#q;<1OWM zd-PMsCi{in7bZNu?FoBHaqsxBj8wR!=8^HwvB`2B+tk%LR!AMUV>Vtd%;v>W(RC;@ zxDlAIeP3hT(rI+zO4Tnl^G+i+=m;3}Ncmk*Kbv6WC(h5Q5{@L}B1=~&PUm(WaEgz` zvo21X6j;Qs>u9&>FL}banK-z>X01kZ@E=R~R?fUsS#^ zjWUnH3jAlwKKs3om5ySx|DiiyFX1$BMk06baC+oUrT3!UR-%82H9)9Ab6uV8NQ%MB z$p;x1@R(JKk@RYK><oS9a$%!=&#&Mny z*2cVQS^xE9UX?86f`AZMRyZLH6cz5iIQSoS&*f9Ahd!>Eo>AeeIMXiG`D~U~E?;|P zjHeKe=zTiTbf(!Xk6reSh$AnzEPo_M7;0jrnVTILIz_%|MB>|s^JA!V+vG8i8Cu?K zG-RqlE_iXvn0*^z%6@%MwZbXBP9eBuLIYE8%40=zK~Kmw0K=m#QIL$$ec?pdxK@8R zkaQ=3QCU4cA%Pgx0YfUKkjs3FdTq-{68X?Q*^%!5IAc*9B%c&vVY_gP-OC19IZI;O zP-{XdtXKUhf3aWpeCYL;oAwbhjE!)WdwtfZS+Aat-fd?jlR8Hz)JjWZPAH^xTVW_; z5TAr#L5%~0WT3r}Rwvtm%$0{k>fNcc`{syeuQ;rKXr%H@ z5xAyk9W)0ctB9F;lLhH928B5DmDuj3@07KyH@Hss_Yg7#m0=nA`qr;Wof5rzXestz zzPnilodKQrh7q$vVXVNf++rc$^eX$L4#E11XGeXas&CHz{OwPfXlm-Cnx?`GrICFg zBEu4k#ro#mxOs%}qXXF&57-G<$ms|~(af*dcXXVDGmw9|OQO#H9KJQ?TCCf&>$Iz* zcizRHnPZlOkq>JbLT?58EyJZ5Tca2dr4w$nN3%zPm7ZKrjsvCDDN`{SyL-e-U1PbH0O zh?x-jPNd-MyWCtk%Cr{@$7Kt46-{y5KE%m*y5>+(t!pq1) z?vA}POk_}tq`**(Ow;8bDiXpDix~aTmRQ=A)+?DlDe#b6!u*Hhoe%~c^GQshYzDue z7F&`0kW)JY8Xpr!B{V8t8>?f6zm%N*0DHo~7ytru8XC?X(z~SQqLhm;5DBC)C3UN* z_K?=%b<_+!45~`W&ZdKTeP5u>+xGnnPB7s=Crcm);s+Hp%^h5kb5L7?baipuB6 zpmepFm(axAKV6Rh4gC$gJ@Bx|q#PI%9S`yBhz@P$vh8WCV zT>w2J#HtE={QU6(45)ix&v_c9;t_T95RPR|9L%N#VQmjEd4;y zV6nGlrq8#y%P36uNA)u4yh#ADo$}4H^om#Hl#|{4^OFDBpwaR>VaFsTdVDqXd!;tuGcjKs&miq6V zV(yLv8}b=xDH|L30&IsP9CGGQ8-hLCHONM=?L-dkI;zBwc0pQ0;%$tsW-3g@4hE1BK1MKRP%# z(66>50qFdSDRc@bD+Y+Nul#_4N2rh)m~V!Ka@CPRC@zSXJ!by`STCer40GpDBRFAl z=A6wOa9nGk)XRmMntLrtvANYW2GEE8Gw!dHOA+tO-6M2~jssTt$R&n-|GODo+~5Bp z=FM}O$dbRn)lgdh=}k#<^|)h5>A`emzuO`Im~j8Nz|l7ALc{*E`Jgk;{mr@i33NIf z+#>v3lSLev#_0*~JlCA*N9#m7d9Emj1tJi*;rM1F6|#0S{u&8$X|hQFilFSS6JlYy zmEGUeveSDz?pZ<03M8KTSLGkuUyJTHO!yhTkn&tUl0t_Sxv=lWo1QAzp2M?FdY2n_ zXsK5{jSp9=mzWECU4VcuTHEvE&#>GjJz z1IBrP@-Bb!yFm1q8GyfibKtQ zV?p@sJvvqEOf5}5y_Ojp`=YQ=;jjsk(A1`!kb}-N_@VmV(QqyA6S{A7-tx^v`|qn; z%DcSaW z<49miz_FED9qMK|PV&}$taYLwHp(Szru224Z&-1Zaph0K1_hmr3Ya_ERq-A6kEos- z68G*!Lxx{mQqu8^Psu9I6b(EqNr~hd&E}m0tY$| z`>T705X$xpamdNP$H_O&jZ_u* zf;yfu^C$*vvm;Ax{HGeYP;;vbI!FF|U{v+JnGJ2N)IA>YQQezeJ)YfDvAv+#9dY;} zR5N0s#vw<^54S-w)+)SALA66g-7;FZHm!<`Q{sNwgYF7T7Rv^^(dk4CjZg9v-0Sg~ zzI^6SCRH=|(z~)`lcx(J{DS;t2buPUP#*JsolzkSvOEj7o_%Vf7~@DSXXRE%%7z4`MS{>3etSd)LB;KNBdV z3>(RfJ}xJ8cX-2Y7%SSnpBRr|msLnVh&3)qtWYYbkgQioYthdUi7IbkY9e?@HE2If zweNGo7DH00u7jA}wLrxV!%U1$BYQnjBM0^35fK_JnZQBiIy1Ad zW_H9u^Y3fVU8>5qMnz+Kb$H;9Lrr~+ZuQ`d&Ele{pt^_uY;kJsol2*qHe`lCL05&v z7KgC9AiKMhVHrYdemY=sZMAPX;-0FxbJG26&d64m97S@@>+2naWw zXBhMdM?JKt;yd(N<98+nzUCV;6|VNWkiBXg6sC|*>yTc?eNuxSMuh+GOXv-Dy2`X= z_*>yaTMfkFfIvy&hb@e3gQ#B_yvk-o!czE-+6q|?Af7zqxvpq=5%{Gzpwey@%3=0y zylX%3_@uoH#QYe3iJ{}YuJ--jz8w}SLptMy7MDkrc2!pUldKk_r(tmi19GwSDeosK z`jD^rqKlWg2D#HU!nOLh*P`lViCHs-m5WnFv+d`m6R+;er=8<)g+_H@6Ef|+l0<6! zTgxL==MiIaf&~>r%vKI)Ya~KpYD;^ow&X&Kv~O^6IAaO(R=-Eood)m(X1!EXr(=y* zeclztsm~JMKp^;*;5JKSUtk1M!H+(Qb0bN}bMWoGjmW}!4F-;>E7@4-t5HaO1iLxj zJEGACydF%ya(xGx=m`XSi2~doUhEM*OiBuh-P3d`x%wl z`z-OUU1{4Cw`o6?dZ-fSs5EFYE@4;tgkSz&Hx(y2JtC$2M$4QKVxls8(}^PX>bz9JkA4Yi%UI*Gq!b{5Z?$nHL?4SlC5 z?M0~mh8_DjW%FeR_P>o7);=zw+d{OLa*5nz=d)#1DBlx(rMnW{kh8=5SZ?+GLPM?Goq&ks zutpNe#sBUb@Si{Vg8oy%hd0(b&r;t(vxXY)7e`1N-yi^b9s*$XvTZkv&JzM1+ zVkBYv#W*21PwG0vevaO*qGj~)agMyR2$JecI4MKe!^OB4Gatq7&ais97l}6vF;TS= z&O8_?(_-W(x+1o?y&6-?jCR|RVxGapt0{x%=|QrWpbIJY!Q17D8-z^%ZV@zl7E+0h zA2vcGJ};AU$1ceXy2uU}hh|81+?nDCq%(}I34Mff)AoQ(++X~MeBxf^_C|v8jSo+6Qv8TU82E z?Qp?WuDx>6(h867H0*ln?sWKL_lD+>754^BDC3BN3B-{c+~_#OI40oQCFsnV&G z5yAXe(Jg_y76xa1;NdP^-uanmmAZZCeGtV)_~IardxXUCM*S9=11*v0S#F~i({`1T zcW;^np;L6PONtw{&W5FQ2Zx^_as{dipyXwJeT6F=GL6tz-*~50Gxf;{x<~)@PDqV3 zCbn@L#G`kMt&jG6Z1g1|WI@dM+lN*>l_8sn3I-S}Oz4e&^}nwd)RYzM!bn`Bf_OrL zYmRi)j&Ec;9n=J6Yli4cCIw{Q6n~4|uE|TATNB)zv7F$W@FEa29vk5A)$sb=voxhP zrK+W(Nb|^?K*%UoC~cX6FwsMzaf#9KrY)bj<29pajRE6ZllQ{s_Y*W44 z`_?Q*sb)G!lZw;A-Y1sV z?ho%}X0PedS1{$`(FaQJ`|;q?=TiRQl~bUj#5wqbNe$j_T}Zk9Vl4ANH|#ZotIQzf zcIaDCG$zBZLIPJ332N!S-3;TcO^N-8)1pUh~;2GB!=*5eR5X&oez?((T`Mb>%Nyy%=8 z#;8?CW?nMLAu;+GbY5N+QTKe_LGMh7@xnfRRF*!+qbEJxNPN!vk@g2s+z~E1rj0&= z5&rXzUTl7kYa?8?DfLcr8+=KWdG8woNWb6c+J0Fo`hDCb;8DoeXvx|UTXqx7c8+t~ z!zXtz4$U&ew<}Zp9^2d5+cUGV(cimwFVLys&(fiu`(lMUZP+w!L*iZ0bafkoWsIguAY?nUrsMj9T^h-FoLRLf) z^POw$IeZE-2|@WD3Wj!rj-w?Lh+aBJrv<{1s2;M0Z@2r31Z3He(4(V1i`09=@KNl%KaSra`zD}58OPJ=dD z-Yjjd0#IIu5cK5r&=U8$V4>iybE8$0Mv>R;niZ z635T+U7NWtp1EXL=zU4n@#siw7RM0XL+dB{$>A7J-1AkRto`A7)o5MOthh4X#wQR+ zA(QxBN_q`#L~?YSEB{N7=MRQ%Bf$sp#g3!r9#q5=;ySAGiyneu@y682H*MbxBjefs zXXA`vrPH~R*n>RWsLgg1*XQX@F(;~%FG)ivoe*CKoGo=Ox_?c&e2}q~7)@Q9L}e&l zcZTPuK>8$S`d?x6zNJl4rJv@ZvkUk{OcZL~kHutqg**L|EU4a5fKl}{ow@>DNvrpJ zhh|0>Wob*4pxu*PrH0Gdh&yWaKNq>$ZGJi+<@$wcIyroQt;#GFOWZWf&=`5grE6`P z#CP#VM*pp9i!;vat&$)4g(KblaoxfKkv-&<%v?zFAT8bkt;8?4b^d*DAGFjEJVNX# z@Q4?6_I{MXN~cpg@vnF*UO=N1x3Zp#FR#?Tb^rkfF;*<*c8&ys{KeVpt8*br39p#B zA3PNMK}$i<#wbf9I(D)>pB5YXqJ!2sB#m#qL3a34tU&u0E>9&#jUi7y!+aV34^Fgf zjcU~z^fQP)S|`p0LXOEbJl#uUG_)kj5xO@&zMQo%#2b;R#q$uZ^NnfHxXwzRk&Him zwALOe*(c0Gm4y~ajbvGseR5^wP(=S~O4D0baoKDx-GybR6v}*^iQmS1Pfhj)kB$D1 z1J_}kK(Lu^DIRelp7trlE>2ulK&76fXtdXvu;u|xZ-H-R)|jU;6Q$08=M1g$?C);9 zLP?K8WLlN*GdLAKkjJnuE$}mU_F#3*PokAe5aWjIEYY7uMZ2jidakGKUoMXAe#lI&k!&n)F^F zUwQpb#HQ>ljf?*fqw!Wggn!sHv~D;a4!`yw)~Czgpe!DUK`=Yy;_G;BNO7*Yd-r@O zVjduUIDp#}n_4&iySr{ZK~*JP)woHOtM~>j(f=MZBv)lSKPDqo%kNJUlf{4P<^dlx zJ1|pw=a0qJ3kh|!`LwGui;S051n=YQ&B~`PGvGUA)iPV`1oii+ zcW|V7-AOcg(BZD?jgCdN807erLv{;|y)Adci4fDwn8`tG>9u2A9+B@+ZNThwN3UuI zLWlW_#ppKvK+t#QZZ#b`^W}iL^mdnO=?z5R>dH*?p{tS7L`p=PwQUgps~5&-s|Z^c z;B81@oKA@MQO9hSInRXl$d1fl1TN(5{t(N0LNXU)M}J(}KKm_Q(7H&gcI!FRrH7d`$VhLSU$XqT{@qdNrTv6L0o z9~I(=-;=8!UA^gQ-?H2*&1>EvAAvz?zR`#K{imV)NN;GG9bpZ?zMV6PFKU4=ppVM0 zw_BJtYBxSutx>lBw8N45=nK950J8USQk>oU{m-95<_ltlup6i>M78<&BYe_l_|phw z)^-#_9&&Wr@9Z49UKuOz`_vQp>u2p;U>fA5hk~38*wAjsF+q7kfM0i;%tDDXAnG~} z0V(gg?%-&mS0IE8AI^W~pGV*Sg#|I$$N&CHL*axev`(OY5#@5KDj)|js z_4Jbpx7YFiN7h?MWz|J%yeIgnmdCD$EDpM=ncqE>J zn!X~Zk(B;H10U#o@>uII0~_ZgqZ{+kPy)v6m)^h2YU-3a?SJCWTXfDgtHSWN`?9>A z0L`)4c_^P?oMremiz>|H1A|MIA7_%~J5^3!U1XJj2%9H1+LD@gsPSn5yV9g(Zc|8 zm+|TatIk0G_hG{NOU17Z=i-`h!re7am!Wl8S-#dhgP@Dm18JH7j6}M}b>eNj%zumZ zs*&8fJ8hM;MiLkx$N?&(iRXn?-?`UB2|g$jN0o=rZ+}-IR48FPScT#-Ra^9JU2Svi zg%R#7A5)_^e)w!l-~8LPb$Us!LR*i*X4%Mr=snDM75pfYpZr&voIO>1sxn17atBM- zKf)=oe0b4`M$TqSzo+c(JUeBA$iG?ozNgC38)KAWH5>apH{~1iNqlH%GZ`U@N`Za= zJz!sk-#1Fpj;?fa6#4Xy^3k*U?}S3Dge@U5QNB8CK`VWFADLX=KFi`RLsG zcrIo10tC4OA$aTnZIK65?Ep!28t(N7?G5_1?0~c-D|n?0h89rHK&EXBrcXwx4%28& zXwA>}2N3hlBe=Vr-lh-$QWPYi2mBDtl=jD0g9)$7CPbs8f6UY}hK(2G{j;e1sDP$# z*ly*87=ZF`zGk#i&pu~z@p>zMx%X=p7Zjh9|4{N!Tie6%q0^0}oyP>VotF|R?oU=d z()Wl#!E3D#S>+3}GkNr-mk&=63IgnRK$}c6a{9KeV5`}0JPp0=(qqW>HMdj%=P07 z_^tRX9QVe50V0K6Z!1)^fYEHdjTzKoxx!=Ker5oB9A*%H?UmHwb-q}8`9JW!sVctCVS8}l8%k4Qq zR=XUj;gB8;dGnKTZi8}$xKNjVm)2G^-i0d6`Pul>%Svp3i)R;^rHd8UN`o>)7!4FP zzI_`2+BaUHO--=?3fC;FmDXWb;A(@!DM0}+q264TfjdA=0*dtWq@6&Ea%~H zG!q&iTT;NS1|a?U3QFe?#V&-+2{AA+{!9jKu8A%iS-)3zPs3A_qex* zFx5fFzy9%j0HV$V(J9tp>dnrq01%r4M9JIg>0}3hC+UTml&nA`%0Mj*aB<#wCXh6*pB=iNGT%Y= z5e1c4kOKm~I*>p@$<+2}3n9Ni)=99D+<~vBTbJ~uc>&%N1k(u-=mRa`uV$ijEQ>UCyl{GQ&w@z}AS~ z$BG;;ql>8?NyKigu3B=mUEDAvy%l3H_vIX)=_5%0{-8B8RFF}#Yx&6tKEYczF5~No zN~vpIV}_(fi=>QvE>n&I!FU1u-ee))$0^c+{h!Ky8HP+`LyN>!*8u{bhxc{3N0FCu zKkboQal|3vX^j|Cl9~r{oP;K16Hc7+P%cDSSF&qHQ-rDhRK{m>&Zs=h#v)``I5>Q8 zz6(GSa(U|l(=}YXH4x7Z1eH5DJ{?_R$)+xbE>!R9W};J>CR!};1?ORT%4kE|7sVGE zQQT1c=URmavo;s6CHt}Ci45xp1hJ8kk&rFtc8l3d z0-&DI>5pgI>T$5K&$|h%AcILLU^D#(-mFw|C9N5V=(waL1YlDjd9hI2%#T(e5G{(5 z6;Lj_!%4y^B^Wg8BLM%AlgB72uhL|K+Op}03oKcY5pTA4c0lC-!Sw;ik4=vi1qf|| z1aU04xb;{J2qLSigOE0L45N!r5^UMJrQgKD%vOk(-7y;NS!ZsJ*x?tKTR@;6!#CIw zL8Ie`A*=7Z@*v00N=seDqWPJRLH+g1ZGgnA>-Eo2f;Hh6pI~OLY$FO$4o_q*RSc&= zR%-Rb$v(}MsxCsgX1@BovcPHxvKP?4WC7y_3gEyX!EKO%HVP4+yt=vskX1ooy?}mW ziz;}F+Tgty=KzPV7sA|}%J&68K z3!pb|-$s+@39glBn)|r~gaHM9xCf~3Sdjd{_d<3lS)n_9h$a>ghIjF1K>m>l7<;T) zCx9iNQeqvzplo{526@&!P5}KBfW2VAd`{**<-duUXRGsW8h@hu0Oq7M?o#gK?qg|} zCA)p%0R{Q5v#|da&V4GQdpk90_RW(6}zUYPqDu1?rTE3Us_owj~wnzL$CtDfBINb)aAd^1G! z1@W7Mg=x%w4x?h0slORfxcHBp;o;LF8T_+?NdAVg-y#W%K@p0t(Z#YCkWXHIY_G8I ze3$sa6|uI3o+a_`$LfP%q2(gh=CWG<+^JRs`-A>PZ%yg$JYQ&v_u*Pglv$Pm-IB|T zk4C5izhCq19@%qCLCA$yWM6LEAaw_-F5?;QMkF82VajVDed4j-eFrQ(`t3jA8MGQF z$wUBO3fOL;cT&rSseg@0hbP5@?VtF|XDh-nUpnqPgdi{-{A3cbHxu+p--A%X(tYx5L4 zHm@8yT3Tz*5GX)W9MKJT0#juSqK74f;!YWetSsH0cqJjMj zH5IB0d$uO%96tRyp+-FG{pikI?K~oNoW!*x5kINby%v~WE}bhevHu=(nxRG_y8f2~ z(U7;bvPH7Yy7B<_2M6`2xwu!b&TmtU2yH&2nnd(=QCOdC(~doCL~tYZF2e_>j$R=Bg5ByF5u4UW&(Id#L&}?Um2E)@RFg0w28{9YvjT-Q~msJdnB|NwfqI z{pO}Yj}a29X5;~!JvI}#R$#%hY}mpEMG_qyoi5lEQ*8U`BxZ8w+Tu94t|6I6pm=0) zy)*`AjIms7Y=ez; zFo>(27(+KVC#V-YB6XG#Y0Dft3YzA5iu2-Y6sEqs=3RhxB`zhUx7_S9yt4!rsK3gD zr3D4nap&i@J1y6&#~OSDpm>0aiH&v9wjj6X0qtLdMJ}ZyC%~r$_j-l#7&+ug0A~b+rVWvL;|OS)yf`XJ#g2c{Igq;i{kyi_Z=x;>-S;{RbtVlCUHBJrlN`2Rk5CL=V~Lj zF=IKm+^i?&a6c~BmmLo0QAn9n?OD z+TDli5f18iFu2bsq6b*ywm%VHFiYl;U8=8v(H7h1~?^hD~(9y&HnT(R|0P+968agXzR}O0Mp(Ut%P`dWhLygi^Rbp=LPZ&pymDGs4rMX(gGOAjRZE zV8wB;E-9sZzS-Hcz4fJ2H3bqR+$xc2X~TNqg56--k^^t< zU+-7Mx}hsi$4-DLS^?5W!LI{h`w}XI0T>`?*FmBsK*65@j+KDee;y$GxK`2QykJqM z01%(+UBMtyP1|>by}?r~6u%3+vR?03(BgHUifB^p(Lp4I?xJ%4Wcg5cPbK)bA)C^=+QaZl0o%z_3iav0lz!h+|2C53(q19=lerGo`ET`u@ zZ^xmDw?)hU=%ydvmqk<jTv>PHF>R-o-M=GkQ7`Xwzr_Tpc zI^F-T5Bg&988O-Y`K;<^kK^&QpownuH&??WdZgI3bCivUBxdPKj1%K zZq!(~hA#YGpf>07p$L-4k9;+IGF5t0loVFf_(qCD=_lppxeNQjJOet8%7$SS&nObn zk_GB_@8k0zu666m$>!yC_;^Z@^_+y8rlY3Nglm%s9_kLRtOJ~Ex_&g)2klE)s+W@i zKTS@CyNQw1wQ2TY=p{|i z%Q<$+F5(>AoORyow9BRTa9tWalMNsBurTBNkF?@;?QCEIXiQ^{nIzWM{&~vU{HhgL zr&NGlny!q@_!Uf8Kgk|aKSC!;nY9(<*u{_*fZsP&za~&ujBSD#;2>4;nOljD5m1J6 z_L%%EJIKu)JBP4bChYAr^Q;3u65jmWRF~Hz$9{4mKaZ2vm$iMPB2XAf%oHz;S&_M; zLbukGl+ww#qB)X1fEqQkm?2h-bWNhj>dm1}E(1Fy$Yb`o%KW)C0}pnJ3|WR7uavSY zxoCEx0QsMH7+!OAWr~Z{%xS!i5rwWc5|?=_37W~n3N_hF@EfziUeEO`?EhY)agmpr zu=8HU@(tX9$BTx*LUoHCyR(hj{D_{dqCPfy#@FBv4E=4|@evQ4CNhhee5pOl<@%t> z)n*>+^!OyXnZ7Rc4&V@Ag ziTC=yN!l|e8!)V|Dd7vr`)Ju1vI0jo6f%6L5C6qC!c?9p$iN!*-Khk}i2PS2wShL( zDfWVB)GxJE`wkyx-#q8D80rfjCphD|@FwnFsk|9*%$`vT3Pk%~(G5>O+1=|~_dNmY zjV{8)>QH_^e7M>&em2UoM(v%c8csr_Uv$0Kk%@WUlnOYCkrDEkcE9MI~o z)wv2vrf3Cm^MuUN|A;u?J4#wRe&{~!BP^I8A z>NkJGMUV6Dwh*lzE>F`>RY#)2okSy*)ari~m11z%ZP#09CO1ymu1|;e@G~*dOU(%q z*-h*>SOTA!OweZ%I9~3xbX8AEzC@A|vc0|a08txs=_Aa34A}>UsmTn9H6}%`+y+Dr zg>gU4v|O1w%B=p=AaY{;p5>gR6G>Y)}H}Tth~rH6vd<@W$tV#YsG-r@IFSyn2^kE(J67qH7IZ#T7e)=?ntX~W(3yZY$eV~l5zqq|u zv1%EKX^*Hbut9%%@kl6xe9yW-)?mqr-tGMpCO5PSKc9qLRxJcU0BpS-0KXDWkA4kY z`)nX-Qt0VY36PC=LC^2MFacfN%)32YSaze~O~8Ep6h&FqdT$DG#04;L*REVw+ED;? zEFkN5x8dWPSOIL#e?D#CF@NaQT;5q3^CcNjUE3XqDXARS7w}^cqej_Tn@vR4?`HsL?nipFc73CqiCWrJYmeUm zG$7lEIusFM&!P|A7r}z5WN5$gkEP~{uPVj$vvlO3D{q9n{;XPI)s1(Mx%is{ht^`G z>ZcEUJ(~mYN-W{i;){T6-3LxiE|Z~Vp#KVCU3&q->E!gZEkvRTvNg^@m@f1wNDw^( z+#%kay`cAH5D*b0sZ-)8oSF|X*d_fw*H&Ib0{MV5nyC5$g5WYMYw$-Ex+S%AgHTcK z56X=|@lG4m4)EFaz%%a*G>%dG%=p)LofP?fgGNO=58%H@)R&!kt8(~hW|HK}weP@# z`0j~0>w1BC_U8I2pyjEj(?;(FS_xedex_3KeHFcG}YD~PRe)uYQg~r?_=FM#%xO;M>pQx%%zWba4j2|;PNHmQxle0 zjkk_ZR+uQ36$%e{zDAfVTHa}-CbP*^!B^2ujl1)tM>WCRG`;nya_t?C8~goLyB8go zk5(vgyTS81W+p2~d>sk8icLD)7aZA!SiZKj#97aNh>|w*fevUt6!`uDLzMd{z~*7f zQ+$Ra6!h#N$bWEN9|Bh^k>804l9dFk<{>1)X&|r_*&EUT104PU+|P9|r$94n1Nx2p z2f#c`X}3M73u(n1&Bp?C`6xIQ|J;DIvB5zdQVRh*E64*T>a^Tv(?hgl?grw@5<#Wc)s-jl2!;mr2W3r!QDd{u#vsu>oJuN= zl2A_X$O53hA%n9Iq)>l>ntl+Z%%oJbfE1UmY9Y|j0Z&+K&V$+ho%EGEn6IeQn|<1C z6s>RN6H@SKL+6c%9Otq7W6MOKnKFK(e4ZP*;PD0*cEc*^BfEz%#;|$%`E@qT41?y- z`hhEzrrh>oIHd+sJvtS8xNwMIIy1L*rnjCA+k%(s1pRb5?_NA&~{W`wV;h z;c=>PJHs18U$zD|6%+0vy zGa(~!hF}YP-u+ugIDd^6Q0qBc5HPg1Owf8#W1Ca9Mp7+olm29~WW)(DD2-*=Mf91} z)Pk>6zRWn}m;2wlTt6{N)VTDGZnUWhA4v79t0@xKF}fiMF4Sd+Jz$4k>y79c$owWW z)3OW-YngJMHVnpSCR5(^0{dVD(tBr#wX9Uh*#MF&M8k;M-E6 z$Ku3?GvnB)sZy1zSDxBCU(C5_Is=Qt1ZYsu#Ih3On^}Pn2hdcHFDjx3ydenOY#eQPeqIBcNwb$OKgIUz zhE>pANZ2YBd)s&aYfhEWCUba_4!7J=MGc`v4Ji)~THWNcxWU>d`Ek3icYC&uapn{q z`4|80J?O0Daz`jC>(53|ojObMZI8ulQzQ+E0S3+L$ANva7(wy*o`6Ry`N$< z_P76f)1^Q1Vthv!=KtL3ah-3I?$8@xmRx3LxJj?Pk`tWgUs_9WBBsWYuQ|C2JD z179tC#CG(ZLAqw`aY^={PuWawbdmM%dXog0)vJDjd~+Yrje~~7L$d(x6C`N|aykR+ znmT|zRxv;}9CV2y>OFSV?MLI(06U?}GwE64OQ zFnaNV31gz*0>>2aB$Z;klA&JL05NtTN89GVTMaC1W*{tJuuo*B=4W9HP8w?j`v?!T zL|mi+o838Omr$jgNn&uc8G^kwd#S9Q(PtFudbwXBU!X+}>v?^`$8qc!sE zLs~ENc7-Bd(WLi#VYkT5tcTPqEMm9aB1?+0Zx1E)H(4=e8zoD#71y11vtQgDbqd>L z9PuibX^R&(d+&IN@afApp0E5RF8|LH7ljz zFT5OVC_B$nZXApOn$Z3}8cq@WN9olk*)(G!HOOGe15c(?y2W9&y>K+{eWZl&<8f_eA%Lw&nJQ@o`wu}A;MZep5MLX8?}iykemo4t&_^22Noj|C=-n{C~=up zc8Xoc`QJY9Z@E8d5fv4Y^;IP*(It=Zeu?C{$`L5zYodxzSLuw+4%(e(^79K&Mwv3T ziQm@ znP?X;k*}@pyr88>2keyfVw99%_?47|Z`9J*m~?n}m~*q>44Qbf3=EsVOcc&b<0g^U zLSR|%v+{gh2YP;h>(>sl1qXqFHN8U6snY?>svvZ5=>!(CtuyW^cTq95=tP|dlCLsK z8%)R^IOv{YNEEtmfpM2v!-n+#;*06}&y->|XxKwz>K1OBOYppsZRl`Nj{1I5ed|48 zPl}@nH&{^9vEG{VyWJ5^&o(}djloI}D@xMqJ+Q$pl}#1jTNZqLu3~T4oXJ+#iW~_@ zem}|)yY0c8VLXae@^nkYM8N4C|8jx<3z|8<`Rc7Q=b?nIG15l*^7v|l+6jvpfBZ3% ze$O+$Eg#aG@5$vf=@$Irt~P2=+HMzG&zIxe+qZ6EIa_@*6?O+|AuZOp@mj8|D+ZS# zdv;HY3TZm>a)N~fbx#M$G2Q0O`8USI+{o0idhNN}(6Tcat`&7`on`0q^)uqrmD|FG zpbPb?2P-E!eQRfvso~Ge;LQ!c4U3#deZc;`ytLQOB{LK$=w6zrB*d-|N;@+WAI-=o zvs;p9*CQexH^$lppl*iEp(;$>b4;HUNjl5E6x+r3U*($6gZ1e3>7sDl>2mQ42Rp~` z17o_omdSI`(f-CVe?A%t4DU|kUI~4no*GAxgfz zj`?BJu>d7En^AzIkldY+o}Psa!L!Q@?)Kvy_UoaAD539!$&MsJ{HT5Ij!AjG>pLV~ zttn_C_vfR2s1Y+yNT!Y2qB0(|g>EVJBhU87)uBV#4_}-788AVy{-xTqH)^kkT8*7) zAI+&!V)Eu_XHf@}|7dP=NM_YgbJEYwOCd#Bcsq-CuZ%8NX}>YeI-Nmc+jHp@owtM1 zE~)6^hI`;^Wo6QQL=c%zj<|T$PqM^vyhMaVb)j)~cftkw)cc6;Ow(8q&gHG|HT`MO zWUX^r;p9>&+<$oe8jZ#ZW$+1Vrz>1L$cpGy_-bXu6e#nFPsFo;Yp~>7T^NL|G%x^R zSN!!6e?FxEVWU710LfAWBubfCFrwcE6VUIsr)z|z&LBDhk`(F;1S$X-+GeB!0J(ST z!M$A#hC}#(O`LS;xkEDHcH*EYn%x)6@9?Mc8j}4e!@cwwIFya2OYp!m$qt4c;hqWBrRe;f+QiX`lL)yv zS`yLr|CB7SqH9ri*4f_RUSUH5&984~8gH26B!~#a7;bOX5vxw@s_UC3Rxg~7C!Th7 zW3fF(pug`QvC}cX&vru$9nnr0=+RNDZ21$nEhq|QeIw#UB{e;JwburD25BhzEJ4Bnio;*i5(LGMW zorpNCr7M2a-62}*qN!Z*xzYRDEP#6ORY6e+rLa<_*Z~wH8)a392o%SFmFyl_Y`LRL z_EOM@+{csZAxPui5*B;o#Yvbpq+JcK_wrnT%%5@ju~sGl82LYx0orLfoCRl^0V}m5F>gBsf|Hi2DMbdoT`U!BHC%!rwFL=1ug5tZrrwVVaicQ8bw4I6p1tBYkV4>&X1Ne+L-zw9{=H#LE>8IaS%0yj6;f_<_oj`ut z$}hWnY-$gou^B*{-irbIgt`e^0sh>c5Jv`6ftc&ZEPJm6BW=1bao@j}YmR$(M%WNj z9*H<~WYn`9)h7PGS^#g#M4S*JVlE_k2YF6tt%*J)T1^*Ov>wd6!ZMY)KUxMO&+jzE z^WE|pG;rP+CvH(_MIH`@;u6YImVx83I|xVxkiWS(F2}>K5cfBL7>fYEH<$tZH3xn@J*L_or9GC62&_4~m zNt@*MRR_3QGX=$^|4so@CEUGk{E02m_IKm_sIED;f=h+3cB&m+Z_KVD?L>)7WMcng zdvcm~aPYT_u3>!Fn)5OCo=4)Nr6(fjd81Lb1^1J*c4-vCqMrDrcJd22o=g!gn5ex% zHTlUX&L-2nsd=%J?y7gD#du5n;rkhDB|ZG{Pszf0rTAH5C!T~ec2GgWsdMZ!XYp`2 zW0fP{Z5OUd2@$Fcw~Xu=FC)`+S4Ze{@Jq zJW=JoAJx1m&w#%^BDyRhes2S$TIO$+TWxKkwQUa=gtOMS+@KjR;E+`8x2WA7abncJ zDWMF# zF1m16#+m%uQthux7nZGNM$&SBnR`_6vT+TcdX{UzgR0vwbWY3rPJd`v13bY__-Mf)()-wX>I?>LxOMnL!fbLpJ z@8l%GratX0)@V`%u_YM(BN1?gfC_Bql^Z~cKu*;_4jT_-K;wlH_$Nx6ag0SG(%>G0N@5x zDSUDQXP+fEd{;S^o10u4P8gOyCS7oBrhDypDvo7>?4p~5 z!n@6kS9V^0JV(D!Cb%%P+^2RrU|6o-B3c?<%vbMf?uN@1J&WzgM&;y`F-x2&P3{mv zSvFfxb1!pERKJvr;n)r!hL4w99J<7Lv4r=RJ=LGyCraqtFnZYtL7g<8k-Qe-UE@sO z6^cJ}YN_O1P*9CO_vjAwmdmsIxanyKptuBR6J?-$N;pl}n6-ATe<{u4$K5#7Bi z<_Jo76?WQUvRp{jM!a-0*S$UVAoRW-y@$YcFKIky+e|+_t5c3gRwwY`thIwD#G~(~ z+FpjvF5WVDPRMDGi#qgh_HV=I8;nG;J`KgPKtxzS(1}Jzf=yihRBUjUHrz+hWqYDl}BEjgcW-i{L5ekh|^;En%Bo`Ny988O!+=_G~;a;Z-WS;XRP zMly?_%<2SkRRPqEDuxR%CH8^j9srOFB*+pFt6xJwz$3$g+={cVz^%`}jx}b{0%TUK z`+;Y_6WzWwpM7r2&%9FpozDL>+A{kS+-d+!yf>M#1bVQnI65K^ue9BcI7Pz<6E9`T zGq1yhpPjW`wy+=~QlOJ^1`2NQ87g=t&LxMGtLJCva7RjyD8(e<_Q8+U{#%IXt4c8?t=46E(S zWeeP~e5{!#!#ClAXPEhpCZZm*-&c%YP`%H%m;IS3!VMc-2>IQ!CLHhh*n_Oca@Dd2 zJm*u*?`NB@PrT4h2i`=}2J)NS+sY=j3KZIv)7?!rGc{d(-z#R0PA@#2qOr1epE-sq zx!r|6XUBT1`W!6%%OgGcCeSAO`8Q!N6*qUfo?P;~9XC>%8b*92ZMyJ>xh}K!v3j;) ztWQ#&Ph zPc}sU(c{6sKlt`^3)3F$E9qZ9+gReiN{<=$uvzKHiMlVNVK*vVHp+@5PPIYXY2YXv z8E*7!owJKbJ36n|+b>O{7HN$9f9tcu>JS%{O18}(*uje&e>g6+FB+&CJk8lI?~@cq z)|YQQ9$W;2{>l)~MfOqfyZ&B0Fq4cv6mx7<+g4iC%~Qe$w=G2NyP>4dhDD+^pL0>B zEB~#0tmW#(=%jfgn|2xYxg~BHV_f{xE)f|fyy6#Sz~9&Y@EI*f0`d1B`P>`yqGwDx zgn|rmakZk?zTTKV-u9pPsB)H%TD>%F7jre?1K%Vtr&HDOSC4@3^J=$;#lhiOyKNnh z69PU`sVr9)r$_h0%83H&aax;7rSJKQNwi6NoHgi&oCx+B@HL8oO@8QV!u-dLv}YGi zS&FL{ z+i}7D*2%~?sXAY#=!Y3O8}}LRMRCcE4jh5s{I!uHb1p*a&3G33L}e#h|KiwDolEl& z>rmXg3KujqTJQ0Rnmj+KO1^IMtcxjE^AuILLPjw?IN)E;cQ$O@11;1WW)fJ~j49K( z`vGj<#iItBAKZ;)BJzctk9R$&|)#q`z`^OOJ<=I zHUgZ(b8EDVaGXrF>*~U;MHyj5Y5kfWcy=<)UvaAmC9GD1+O04RC3XGY} zjg(tCfmJ~6g&p|%;n^|j)48!oT(-Y`Ldwstg@`fjroBVPPowbfkgShrte~c3WNEWPxUUAx zTFnx#{W?>Wtf(Sw1Z83o+3+qV8z+7JYKB5orb5=6W&sXy6AgOUS)0vGqG3(B{Hcr9 z7)NM4m>?ReAdI&`PzKkdy|4MUuLLc+Pul51pXo!P8w1*2Cq^fdI588FGHwwgw-Z!P zv;XEVl&E(uFc*5Bxx_|Va9${|M0K#PZ%n=G@LZMr0b8if#~}%mD|q2GReeH})rzBD+KVY;gh6Vej2nB9*7uMgB`Fiq@}xOZnCHO$}0xuwrg1DLN<8 zzRNkJoev#ZJ<#}ZO%WoNNEwbJx8l$KRtbn!p#QrtgG|z->`8bsI&kW)j^nPS z;_pg7^7Qv-s9AkVglwE@_kem=omI&2)N=ppBmGBWiGR;ogLRhOgU72@D#UOnZ1wS8 zX>d0uw$>+>^v))y*2>ts{F&DhhYybU@3-@!E!5XC6RI17MsYT~& z^2eg@O}fH9ov_QUNOp|KbgXV`&u(4FYm9sBKDUX@R&H_2E{fCa`C!AWt`}s9W?)GE zsz|lDlNB;3Jukm_|G?^|MqYPfpddI3Phv!c+^-MU;dH~kmU@5Kl;B(J7bHWG%$QA_7fk1vY+$ipl&KHOEuYz`je_D>PuSy+Oy6TY0 z#M39qGD^dUM2}LnyK6WUO%7L7$vB4j!RZHSPYd%tqtY>ot$mx;<;BFdvb?Ayy0!g` z)rOPls+V=>=o5Ogea7Qzsuv-%z5u)ZYnCut<1z%?`P$~(l|n=THQmb+MfCnc%vE#R zotlb(4r(353r@mv@OKqnSK%n+8I;<~PKl_WDP~7;0UdRuB_%{t@9S+3N8XH&+fTmV z>9jGx_iKv(H`5d5t$062zQpl8UlrE@BZ`Jk%)e+$t3a#kR|m~;mMZX3RZskVFC(c? zmco9+PDLrfEHW-}>ug%^bw156|5z!rgk42yVPmV{3;M{VuTdFA*{XK6u%~+89mRsJ zR@=RfQb_rijXybNMhf>$^OG1f2W<8CJ$1?^S7fQKpRHGm72dd+m6G0jv%&1vmN3K3l*sRWy8>}wo2EQDNNTOs`U zN$V}isJKf8JoV|e2c>B-nP1>XXwPG;Ojb0t=G)-9JzpukVl1wI zw`m}jhb`M3>{(S+OF%4KXJ@;@*Z_49TGy|m~ zMFUYo^9=_dG|Dkgh|%)IDh}tTBTY~PJpwhetoZOJJ$7> zlG;o{dT=###y{w=Z?HDd0eswJQdXW?6d0e$MMsQ1N4#(N^_?+=5 zxwxsC=ubfkw^y~KEKD59p@~>Uern>jDt19Y=~s#l&9ni6p7XiZH^W_q@?|lC*Z45c z#Q4=GVSJ_;su>8cEtu;<>WB=QkBB99qE<#XIO+aP8J|qD<6Qe(9uLY~G%| z;j1~{s_9-%2_E?z7$ORa4j6iaVMI3s%>L$BRj8^@!X%QhwoISxnf;=pgAmAujSn&P zO$<_qlslJ))-~-BLib(93V$&(iM!u-sq9Z*<$Ot?AuHpfoO_g){Do^o=ZwJ0eL40q z`|;#b{$p{GuF)y+n)X0I@oWtKrcjY(;-8dmgnL`#&psvTYM|6)qZ00ZpY+3+=oQL zi3lO{m{Qbr{kcbH9SQ$_Z8pJW2AR%6O4+9eZ_6VU<*1|jyASzZujB&9N}NQQkG4?O ztAv|)=-^T9#G)=+Jfd<){K`~6s^)!u;v-gmZxP;vPHc?T{N(sfqcq4=do?RE*xtma z=hvr99SY`~9iza-gWS1x;3>ib@HHD78`VA*rUQk3k40I%fzh7z9CJFj{y1Cb%?&y7 zF7_T{F2E)m&?(J?Q42NO)py$it43{S8I}b|>wzKfSXlVFe+)y{r8xkeQRwIbBn5 zq&j-p>6;%AU*z(Z;_aK)KHztXy!5CkqRp2dapG;^yBGe#mNNdX_tnQRb@$ofaK!lI zD*YpexX|LDsGIh8YWpn>(LDT<)I)a#C9#`vuP! zLF5MbeLkGVDC|JR_po}1rL zWEcerYZscU=JjFqi(#hlOBwdD$;bHItP~G=;vxpciP8y9qe@$es@4_ROpp|FwJ?-? zPnO0<6oLn>6HuU06+Nf6TzbVw7NRT8ZX3P z(0q%+6^6ocJTwPdRS-ARc&^m#!vnkdEXy)b?75FL*=`|Zi-!Jqd44jk(ZJ`n90cDX zgWbT@opQJ+f<{3>0g)eEUtbTV3#WtrF&Y-uFVSpW5Rk`VwY(VN1TkEJY%l;sEqX3`6f7cmPDM!#oA5IGe zA&}Z2#@WU7oD>6nay9!^)1hwkFuk?t3Iz?`Q*57676wc~l^+jPMl_k5qsH;xs%)I^ zBpiZ$9h0q&Tkytt$JRUBXY9#^JjKFMV-DbloYVK~2v{p`Bc&Nmi!ZQV|5UZ$CFS~^ZR;dKvj2$&$l{KJ`IwX))%1=BE)J#tX2i!92@{3V;}-l z`yC!`v^|&z18V~`lZN24lCPD%AnOb`|3vlmDS<3(j$$AzJbVW<7(x1)4oe+21a`Z)6!fV+Qhsu%}c{4bgE@9^;YKn_tKpemM*kEJYy4je6>F?N^S`|-oq zbuGz|{t>Bz3Tu^cZ+e98CnJS`)sL-G3`P?Cf$pFF<{15WzCj-9o2cL4azaJkr~ z#Y7N6jpJ2DsE^Lvw6DVN`xw}S;avDn0tWv>tYDZT*^WKpb}ZQds@sOG(7`C`Ky&f0 zP3d|kv0y1zbc581zW#A$`X4gy;;UEBfMT>8fXa=5=Mw9^>K`7x+)tS&K8PGid7K=W zwN?TBb0;L--R*WG|BlR~Vc|NCm*fi-wOw+hKr=|bGRyO&9me_W3m8S{x=c%({~&xj zS)kze&kt^**5cc1XlM)Dh(CWgOs9&z*xTE;?rrPu90x*Tmd-9ODJdwRy}Z1lpE5E? z*EcqhUBZd@MH_6lpz7`S(1F!|2iUY-Hm8eJf&o!io^|0nSV1{V#(x6w=C?mmo)33> z7DJuXce(20rE=*)lO^gHxr!3z<_s9s*)C?jJa&%UOm%yRYn!cUFkp#*TxL1XcQeH= z?_NjCWys54cF@_qri4GOh<|(0x1O$#<#bXQsrA7KRr~sWRR-R;%IHgMRe;*|8~dn~ zmPv1<{==KKKj;FzD67YLA61J&j7*V=9=P8Y;#*dyf%k=!jLZkLq&N2VOs=A!8#c0% zxiej_0(|m4(ar<*SXm>8(l;$4zE1qH-MZ`{{so915M^$jTzXh?G66)@Hl?OB#C;M; zAqL5A@_KpVE-WnczkZJ}$1C#2&i@PkiCK+CbhAN!4C@^sc%I7#6B2OSJ36W@N>L|Y zf^*4j?E`!R1T@BvfLOr@G}du;oESAmX~{Rzi3(8rfJ$~a2{ zwS#gtwg zHDRmAK~_%?enwl7U*vXk4B?vsJqNs+ni_!FzJ-UUL!Ya)zS>t2ky`}#W(0Sdk&%&b z@YtijdnaFDJ88-Zs3$yp`#8RUj$O4cVCJu{F>V1ABoMF(xHYjEzWxOQ;Gi6t&;g74 zPxbXp@Q{^`^qoL1Z52&`GEV9Tn8d_HN*bD-Jp%>WzhW+^+;pM0(nglrayz4an5|EA zu)ioXRo}m*KN7zq6+1kNS!^ip8kX%l`iYb@bN3=88zO8t|w0KV`$I5-<5 zTlQ8-15*=lX)%C+)&aFRM(`M_frn3$k00k6OZ1(9ss^$Kb%^{R$XR?#G5f(2<1#V0 z0rR_?TuMWrj50kI*zWv^8&Yn@^zrOzM`^2QExZD5l1-f{1QIT|DZ^4_w%WUtExQe^ z_kZ9Q?(x}2g#<_AGoqoJXJ?bsV2X;J~JS}F4rj6X7gp#v|leL-~m5L=|THxxNJ z`R(5S!`5FwRo!l1pfDziAPPu{(%s#lpmd|ObVzrXsDN~XNU4+vNTm zwa@>Y@r`fXd&W6uye|XTd-Hpq6?4rsXLg#^kSlx*r2_)q9E2XLU8_8>SqQmFIcI-9 z5T$YqQTG@~hs5wSJcm5fzqA=K z4Q^ZwSKagRxm3FitGi=tMeV?QbO*kNa?UH$>;-i?JgMl9YPm17`-v`zkK(1H@89BJ z$h_{a74|XuY!!o}j6+j^I-1HL`!;%6Xh?b}#$D?y{JSQHVy&lN<#Jv*>@CS}PE?7z zx$(hh?$%*_&Y(rP&16TBQJWhG5<~Uo6Lr(>y<|2O3(jSRA%t&!;YC>W$G?p$#53hx zk+j`phUqIRDuA9!5bz-O&Jrog{S*5mc`*6A@#+&Z3K1guP=gTBo-Yb(!()k93l20q zIgt)Hf?+>bXnBDC=r87%lJX{Xp5IsAG^FeP`otUKbWMgwqwaWLsB^;qrwj0hPVRdC zgs`>i))X~A|7Zqn4_{;_kyw@WI8Qj74p0%vQ7=F}PKtN9LNUk3=R9te`&Y)wa^bCha?VA3jOUa>u=QpCygh4L(RuPzb-s3m!(8)S@WteB zdeD(Ke+>olx?7xRBP4xNW!;{p$s+ ziV`F;8S1ESKTRlsf>L}-t7rO&pbO#k%4G6big%2fpT5Oj3HxMr+MS)67~E-?NBD-Y zo|^4mgZ)II$>B<-pj5uc>3ol^&tq@exB4YBbq1i>0Oc)Nz`29%qsmRY>wbSP#PG3^ z*JlIYx9$30$f+Zo-rlm&t@^y|XrFLE)j=SXlTi7}SlIsZ`L~HW`^BIiN9ijTNwvn~ zA1WudlH&5v)UFhgWirL$O;C2uqF3iepZz(=$ey8o_YU(6{pPhCra zEf>-K)fQUgRt&8b8%l7RM~A=}c34<0i9Kc|B;gL`9WujhGy!L?aj7ZaHKS_{Cimn* zir9j43ajy#YQ$=B)p6Qa{bNiLr+v=CV4WctO@WNfvs=Tr>BsA%6R(IX@AYk5O@x+n z8t>mpeC^LMdl?mbG2hdQLQ8@*-g}9AGCrAKDMAo(tmEQ$ zrO2mm2TTM988kGuoKKJ23YU{@4wd<0rQHzkNL<(M%j|ugj3pYd5)$cdk!99Jq)=ss zeA<&LEUTe0qPlZGIXgSMlHgA8@-?~myeTvVk_$?tX-MdmL&+;qqe<&Bf9AzlCqbc{ zQzBqjgQ0N_}~|3 zLUs#GP;)wow=5CvvLad~!n`oP8TWIDD$j?nGv3#R;%aQr(rep*ltJA$9OL!R{*8;L zRL!*Sm~eH}rWuKJ%D-QhJX&5@K{$O#>zin#CyHy^4799RrPJp+DjgCDW%!6RoDvpIMm$yTucZtISILOJnQiPj~dCroN ztMG0fvj@uzS}5meF^dqff7##16hAFMYQ`>PS?4evFgVmvy*C9ArjZ2!QAMLsmZ8Ct7t9T+aNXTKu z2U=-r3+9wqp~%<>(nACLSdo%P9+YZ6)v_e3y_okM8AM4*!dqX1q;i4 z&FD(66O4_i^|!r8zqfe%swa~MEJr>nY}K@Z2daEWQMt|1KTM_Hx|Kmf^T?%eqU`)* zi$|<=69EBXNt`}&#<)p32%itn#RDErExaV=vS^jOK`A9C#gzfin!|I`>kDGw3k|bY zk;B38$n38iV8T{W2_7iO<42CR2OU+r%uaWz=k;|a*D{@C+gB|)A*B?}CO%5v9``PDD3kVa zT+~>bFI)3ZIcmO>hwm-7isUGUj_!9Z;~EnEu(Ka&aIGN3Y-gq zs+Y-JEXb{QmC2qSoc($ufGm?;&KIDSyb_nZG;U)Rb+nrF~vwDLwu|GhSZXNyDY& zs(^iXChS&kZ!RN~jpvWnj@O#+ifawbWhM)Ff7w7-&21qro2MF5+f~g*GS=Wo{>@!R zKleVTqm6iyC3fN<_nE7O3i*xFx7hPc?f#PqNiVPKCCkio4oUP%UzPN=A7rcLD%0Wp z82pD*vY01X0ahB{)6=i^&=j)!+3n|EFaW#r*)ue7W~QR1ZpomvZV7%g@bmROJw3fI zJk}ks!Hx;1d=;ghR$u>&LH$=3u-@c6rX75FXgi}>uKP(VCR1tFYIb1T{p%vC(>$S; zyc$uTDS9azk4r$>7BQW_7`Rn8d$^&2&wA07M>3zU+_ZeMx1x8ddsKV&_bu1@q$`?q zG~e#BvhE$*w~>3xMF@?ZQI*5>F_{ok`9v;fiMoTLL45x4B49M|xx5u^yT8H9h}0oM zYYR`)zxWb&Ub7>JgM+JCeC~_-V~WnEC_EXhwdNG`9et4)`M?yZtuLileeSDM?UY!S zTeq+rHvRDNUbUY4tFcZ@WmIq8m5B@wa7(Z%;}5c9S&uShl!AG*A8hh8r+ayKqV_xID>VXvk+ z|Gmg4&7%!hITF#^zP_T#$ti^FUUcK-TU`7VmBzkTO%ZY=q(KM-=`WjKp^rH`A`kns zxGyFy}W7?*=)E(t;doJbjv||4MFOA%CA_}y6b8^EtbB$TvSof)H3M*Fb&h> z%I|}zbJ0?AGDmG~Eup9jp6GdL`@g-7jg6p?2wHl6@KNwJl}oacDjB%F)Kk`4aIz{qcp+|;*K)UhH7l9s-C`zD*^X%i{t z(66(2Y24P?t>wU&7~J##-^QVhaqCm^)ryqyw|G-ZTSyj`P(qPV@3W(%h3>z|@$rzL z`Bv~S6@7FOaSua@9&ZSNn-CY*0*6p3=M}ZZMqow;RXC}rf`tVGgxG<6?IY0*za-dm zq*Y8chAp4Usw#HF<~t~15kS!}-S3m|)gNw*+q=4&fltPZ7cUAuk8IFTf{+kmj?Zi_ zZuEgNRCm0YLOgf%otv$QfN`FpQD>B=C<+9PWtmk7wQSue}(m>KOVsYEPxjv95sCV3WM$&suoDnUIW3ah|5AGQ|4r4gV*hywC1!AB8s(6tL1!@^M`K!Px9{Q32Q;u9Ykix_O>0m z{-2r4bwRt{$jkYx?ibx@)^x7*lHP9F+SqW&OEoUoM1A*n4wpKS3I7la%qu26x5p84e2tS?_xKKmy!GSbn_}etsK`kAo*CX87G)w`%*4 z?$hzdo9|`O6Jsrzu156Q5_ueXvXRNu%*^svOmAOhpF0&Tk<4>^kVTJ*jC|{y*hwH+ zWcL?miTP9GU`yPNk>p-q2s0W}xnGszt%#G8#sJUX0JyZbyKWyI79R^oMShmDvx_tk z<>UMGvH3;Qjm?2i9D1M zqK`Z8U@%yZU}G@Idx^c5H_`YY^X*w?sevJ`tE($YtPC1znSlo{HRF|Y2Lt?TuGYw7 zLD0+;n!}s7Z~ya+A{I>rI`QY53Q%eC?EkwQE-1o;mj8f*J4 zCdQbALEN-gOlBtGuWZZ1WMxGPaX6C7Dk#v@Pfy!1vDK$#WEh7yIQ&pO<2UU|M8b>n zd7m=H(1b2_hi^rGiEmxyG$SJA@3Z@r8xk^Gk|OZ|V45iH-sSIw>1AyW+ee;nW6*p> zad2ZW&wOF4bzsgU8Sy~g!=rjumXcPOojs}^?dtks!HKD`wKhU#kReWfS0g$pHuhsd zL4m>aG!mKd)P85j>EEetPsFbP))(5=ni}Jz{FUgM@m20?_%Yet3lmj)$7d&61CZnM zb`&koY3S+OGvsgFIG5i|V$A0AnoxnS-*P;l-z1H6*bTgi>93G*)}U6ZY6&^=B-$ zs87XHQPF9!PS(72l}xWnj}3vvj)0}8)s2nrvbEv6%&HQkbh^L86B5*m&OaH4Mnsrb z4gb>PjheQd(QgeUe!iC_Z)a~m3mE0V57p^BmZ4-Louz}vyr=_F-KE8Cxs6zqjWkIV zK0D;}GN$sqESlCgayvGTv*~;;3$AEhvT<{5VbjEQomN$s4!ipoZ^?`(B>TQ=s(uhv z&wXU-AxyaHdU1;7Ra2W^;?Mj%87EfevBwYL!K0$uvOb6;A?=#_VbIFYVL+ zB2&mziHeU8sI3)7gLb(@BcMngevyB|a?>-HR|{^pu~sDAnr_37M}7Gs(W$P-nc?Z_ z?s(CPB^J6#*~;{WDZqU-dk6`zgtuk38v3PVG>CxrUFos~~TrgYD3PYh*D zuFziV_?WEL)W1Wc34J1egngz`VDlsdl^*jiH6u55Q*~(^Y$htrqo;NFTW06u|CzL- z%D+Rs)kU%8qrIa{pW5p4!d0^=?`%#=iZ%{|iMKN7w;fieeKl*0`R^^S`BpM%7ZE3< zBk@DlE2g|Y+>N2(H2PQ;(jI25+ zD@{up9FwEH za76|g*}d-h4H$N5lo}J2n96nIz9{p|$HJwNXU_;r<4Zi;7$fdO$9&p2<9CA&7w5a4 zhg=^~-_*vK|HJfFHps3r3HKM~GJQ2mjp;-1yGjH;$s(nO&q`Xu0iJt2)yDa2En78< z!|{tQ0zSod>)J*hCSHC;flN*z^Cw3~$8?a3SaG7Zz2y=o*;&h#*ppd+OLx1!9WvRtz zBUM_aLt~n4{j#1{3;Gr!gh`g`2SKZPZe7+~@^%*MPFvj@?9SrCt+~0z zxLkF5++8-Z9~$3;EbBBShgq)LYR`@m5q3c>9^DaIjVn>4H`rJ$*b7Q6%>SfCB?9bo zJ4~wu@}9=wNdnF8Sj|{4|6V$wupyyB`2BO+77L2oA|#jU9c@XO%8o>AZiE6U;YU*& zhH(>W%&=1N7e@k%)S~w<-$gg?7`t<;RlxnH&)y+O)qm;E=MGM@nR^)*of`No$L;Q9 zx#WMb8ZYYnuDi5ulIx3~an_ly%T=1g)Y@(&dv(;;}QjXBN?bv(1#5PhODmkL)$ z_$5nS%h_0K%4lzXACR$#gcpA^A=*|Z9bejF%~)@^A!0bzHCk$ObQ`vfx6^$BN)-d{ zn@%*hbJ?CSph2*0EF}McG1Qq{7k?Ob%x6fJ-Ws~>pT%tNY(LwSIyqY6nl_tEq)N-~ z{twgUK4EBD8f&emPd!q*oVd^PX#M#auVD0-FCB~b%<=@#zv@o1>00jz&|^RCEk9ty zd?Hl;k3-KrhuZrLd+uM^S}Ycp$>#cMKxtjA#~14xj>{NNkM{fzgu4u!EjYc$Kx;0k zJ=2%o5R^_LgB8|0S@^W>o^+w}6GQ?x8Bsl_JZM90daNgi{i3Q3I_?fomBmS3mRMAzGqNxtk+$^|xWbZsua zTzb6SV-Tmf{piF_CKCrwMv2ROKxxW#8+(&#f`{tzf5WjhJ-6?-mU>b;L0ST(71q$u zpi^n*$M3kb4f~sfKG(X1n=*Ea*o|847CRo{GxZ{MIrZz&Ks?k`inqs7I-dH?O;C>0 zyF+_)kep<#?fcEK;%Tz5`+!9iE0=BD*3Jh{7vergk;iE*%XJ8P-6Xf-1> zMBx7}>n;e(zr1@V##BzXiy^yfc>@Fb6`tOp|DM zeUHM8`nntF(Ap-Cj29grA8#uxhj(dLj*uzl4i>wOn!&lerx}1fwI-7tZoBxGm!3ZH z+QTNdlT3Uk->o+x4xAhupV>X1dLC}JwT~uVd9KOVLA&qiYR$dh=v8~D?K4rTd39gO z?!lJpT8Atv4`e%+^@;Y*e67*-<&(0lDA9=G^*z>;>Ef5B2OMUs+UNbr1*WE^?2bJ` zJ{Q)k3OzketNT2%@!prc<@g=+7NixgQvXv8TAsi{)9OS%db@o^bGO#EhP0HNac6wD z)7GUQo5aJtL4ve?vwD4wJ{5m7^BxLU^B_*P% zP&1q0M~s!;XFQJ>Ug?h%8i2KI!_Rs~X6CR@pYDLz$j97VM(?vjlhggx=9ZRGl4i}m zmt^nx=E*j@b|@S5so%A-);0R+RV26x7ra6Av{ANgPYyGN$Sw6u{x%;h&a``P_E9xk zvA;?iJKE3|!w8^s=ujv=F}9NZQb+h@WKI#Z7E*umjBJdU_O(@gkd1HZ$rUR@4MOt< zu=aA2wOrAYw8JhbDG5rqJpjsF`xG8-3KNl&r827jw7>1x4~nTm$;KL)lx5@lYqiyj zOEsBvYLaPKKN3{^YQ#=^*&NC1H)AeAYyQ{N1Venpuq2P^u>)gd)XN9zIE3IQ+7yUQ z3mQLv{z#3LTQi1I&|S9CNec;ul(R)3(pa}@rek2@4ZX2c#L*P9!yA86kq?(FQ`$Ip zQZ1-b!kHd6kG_Z>IweyOwGUkhVtn}V<42_eUE#j|ev}O`Ooi|z9^zfetKnd)Q2R}n z+p-i{|D8QJbaJcpE;I)lpU0;{f$+J~_m$qFl1I;zeS|*TnX{^$;k7Y_ zIW-)OML}(28z$z5WOPq|3kgdT?VAbI}#~h2FtWo0!={kZ~`j&icuq zM$hlfP6BWFeWi*_jWTf7^?pF>F=s_XLlXe302tJyVuW9wWV5~h&y@OlgVFcYFnfQd zPO0dXppv^#x}nw7)Sz96jh`H}j*N-NQ1UL@_EbRv11We|xFv=`=-d7*ESMtIx3u_! zka91=*H^3D>Mk^?=%0dv4co$>oOE<_!`28PxDLQ7VdM048i+&f01riziC_lAsX~dl zgJGE?ebB;uqLLluBK;~yC7?JPdS1{T376f%VVOE`&HpGs2Ye6IzrcF)b5qm*$k1?bL?cDc zy2!5Jk*`nwCLkpxMT0SZ55TD-;6K~b)6?~tz3D|7>|_>#SSbJ>C=w6+XML)6oZ(C! zyd*w;ys3~X6vWi&wf|RAZTxREv%^T8w;&9;^+E8e)Vx0c@ZcrOW%v-dxVTL)J;SV) zOXTneE8Ky|WnfP%&oq2MLk+M&u7=&9@gs$Kb|b~qz5gTWkQIgjv*cuX!u>w!gxLW< z644v`^EE?EVwCO=4r*zMXp^^nKfW<_7AKRC8jX~nZ|B25P~O{}o1Haq5j`q;FQOgI z*jcOt&+r7~G6OC~Ml`CR=nJ?2h1O2s2kpXvSOjW;=4*xfu-2U*dbZAa0>aun2}wx< z1Fx#Y{4r=2+nPV0DwbIcF08DqTwhC#jWwn~wzakWRn6cI(h`ClQ740Ah$9Tx7u=q}4?wa?AN1BZ}M%Fyt8ke9D-|E+sQ zMn-qBm@6x2%`_<9rKeMB+9>oJd>7|en~S9TnVs# z1?c3Np&>~|8;n3x?Q~-F1GJpru0TikR zA;r{wl2lYw^p{SR3X}EB+FB=^39Pf$wEUb1er+@>Q0q$bISul^N1!!;iYYXUdQ}cB zY#Cgl7pNb0ODLoplm6dj-ls5QWk+TC4B!~Nc=-}qPYHN1;(_;>V@Uu~0SHH9g7OS$gHGhgHnA3cLm_Mz|hf2Am#Pq z^^EN7`I(t_(9?p+H#G%Cqv1uh(`w_Vhm@7hYxvOSnt`6xt0Qjd?_V0o?`TxLw7X(fl@ zvP(ofm4^@pp;HdMfDN% z%>03_hA-0tLEQZBcmMVTn-?!`!VyK8qX2lc3$d~ffT3ri%2Gf;V2Hyg)9QxULC9;P z<5%o};$KxeuStNPJP{CzU^%_wr_Q?{Kj`4Y(7&nXf+6=j*iTewAYcy`C|%S*Ka_(n z-o?ORDCYST8rs~{^Z`EJZsR@H-b#C;7$;fy;2|XE7Z;;7Ae1_kZv;E*x5nIoEqHu- zii3}j;;z8V9CX`SU#R_;{Qv==v9q(&>Y1gb;G+ZR2=l3glRZ2cV(Jyob_|ODy&@V+xNF~&_h;@ z9#8r|BV+v^7eK&cKZI;^=@BGg+Jk??NLQDRXsaWVNh)a=pM?X3kKKBV%jb9&-D3FH zMf1r^9UYRoy1F?-*5|`RunxI0`I{HE@zdcF#WHKhgDXZcOiEDs03~(5&>nMDa=I~6 z^Z^)vRU^oUC>G^GR~mc!wn8%1YGml;ZU2uBi+%n=ZPe0jr)8Gz%ab+%%Z2-)m@d}S zGJ)YK_m~)g7wB<7Dpqwy8~I=h$N^~0zjdki{M>=V^r}F2ve3p*LgF?+eKc@tA|oFF zdjw=~*!az0Ve?}^fJ&8v35tSI~ulB zfCOs4)!_nCKR>@$zjP8o&TnMmvBUYXJs^}XKxa*EpP0k=4rDTzh}?yV{YhkO>@>ET$mkqc;aT0_}t5Rh65@bPFMoVac2NSRl0L0&1byl@sI_;1> zb6(}(5Qp7{1d5`sqKJsVe$#-o^VBz2r;3Br_naNZPAn>(cr=8ZuHj6bFj|ApdAwGD z;B#2`BtINpHtYcJ3nkqTDqIf~n4ugcdM_q+?GCeE&L5M`(W@Xb1+oWt!O3N4jx<5+ zx|CZhf72%_?LUCx^5!a3tMA13h?1kVNd=Wb4MTWRrcFtMYvb8(@8 zcn#pqsMCgqCo`*dIi_?p>U?rr4xy@D5+OG>|k^=)JQ@ba$-VNnNC6qkXhr62UJzsW>Ip6uSo`;%Rd=RGPK09p%Ad~RH zu&o^-lb3h^Y_0T5>D&8>JWWn_2n)MV3}NUDv+?k#@#Tgs*gST$6xXs4v>Xbr0reOt zJtlrAQ@TTkybI5B0mLOiBf!+O11{FB)A1NNW!=u!^F5^KE-*kB;qd)|E-w-!F6cS3|M8>7v56ed z>Z}qS-mQ-A+Vzk1JWTmm<~bV2*V{h0^>^@|;A!r{>1=G(?kXY{l zNyQWJy2u-9>m!b^tv$d8zYKDi4Kz2uh&l4Y5X)5g3kk!t>vO|ue>T>Z+`(#pTjcUa z#k46XFwUiXm8|a@i;N%Z=^KjzW~dpYig%Y6l~5q4)OopYPSu9MU4S_oN|1<6bBMBS z8t&aubA>e=3;sHU*NKBdia-mz2~?xP5GTV|42b~mI?*k%p&(#Gz5K{+x$uZOH8mB| zQXd@1%j0=$fCP*=_&-p4Gv)6P5)q+p5{l9&B$N!jO#0uqR(^dg^Vx)ru z2e=5}D5y&P-=k;Be*!mNDV|BQ5qb&p-mll%B1o5^=JkRV`{w56LdRtV0hjg91y`>B z27)GkyM|cuCs9gfpyPO4@dO8QM2R~#EhR{qr3-_jXb z6V$@o{#~J5rJ9K^`7%_@rl^U!J@2;<)8|A50o?tpBqX(SRGO z@(p_-@38`XXXWqTJ4kuziWuh+bK^cvlV=k7uOh#YlT)UviCYAOirp@gp^>Gfyg`(R zBfy{SsvsdI5&fK2`VWp&v5#JK*daC1-AF2;6e>y+^oZ*9ry`m>9kiXJZDF0gX-P3Q zbmD!T(#YtyD%~l%-L=xbksY-eFOuI(V(5(juYyLEM79sIpBY#yCNr)5zGh1$Lp9a^ zw>bVw6G5?Exw;CsMmMi#|J_}+zRE8*9$!k4Q_5zUbEDhPnAB#syy`K0P7kcB`U; zmz|rA88NC^G@AQpBsXrvGH;w@ca+QG?-~vK-g3hY0UzXb&{WERQ-b^` zAN(`C(f4UVSSoeeqdTb*c)?=7aI=-3i3NwFu~Of6!Pv}_ar@11cU$FQOkTQ!xu6b7 z>|1K@?d+I8n->i35|RF-cW&Mic?L@xtJwA}ud}1~$r4lxpwCq_BvH{ow%{Oe> zQ5rF71-kMM4#kD?cgX>>0pQ@@P<}{S8Ywhsa5bZV1oJ8B40omk&SJ0|X5L1SC*daD zqsVBQn0We_Sc<4<7UiPSfZy0u-)&8zGUIY)3ZB#YDMZt&$}}Y*f8(f4U6Xzxf4u?s zIlPELr|p&bPd({h{pl<5$;ooSK86I50k>XpgV;5q1k30@t59|Dh76$F;j$dU z1b#P4Y8>hdK97C6H`PuCpylSTTY7GO&q1~riE;D#S|cBz?NmfKTb<|5(w$TNi6nJj zr+cOciZ|Q@0>5*PcyYyrRFv>-D-!$awd)_Xqff~6McXOL#;eive_@uTY3g7WM$#;f z_7zk0aqQV7YCU|7anqlik`mR8;o{(+ZZ%YgU~hpZ6R(hM1WO37@-(6#QKH0DWn_ZM zFCaoelk5*0AJ9j*gP7`nx@<6aCmpfE8+PW~YJ}m=nszGr82pYRqc+S|&vzFevc#_4PQ~?1pL&EM?*c zO_KV@KZA#!Qoa^9L{QV$p7>c$TTwYsI)>)&*XJL+Hum*SQ7>7{G!I)+y|d;!-$Fw% zQHxRf`eaZvo6a`+^Gx1&8hEAi+a*l5)}zQ_Q3mA2Wiw^sV1Wr>1C(i-&)EiVI0-+h zEkygFUBLpOJD|R`voi$P-ZxHf%|X|sO|@aRdM;U3#(ZRC>0J&87>E?D=3LB5lDQEV z*3l{i=#x?}Uc830yJN39x0Ta4sTq`%{$5FsJ1m#)!9sdt|4aXhq+kah;#Umb5y=s` zUs_+MxPAMHEB{mAZ|N7#?w|bqdDZv2Ei1PTu?Vz=oW7Z05$JmK_$Q<}E)Fj1xMzkl z=C4)$73c~pA04-Jo-|iSrW_tjxRuli+72Dfbl-kjb5MhB%e$XpB+e?pvp;v$Si3Ut zCxj)e#(nvgZFSvD_wTUU)uHC3&F)%rwL$s)`)~~OLCy&hp&g(%z@hGdbNHFVM5Ycq zJpS|lk7x5jQW6^PdQcw3T7?yjEZ~Fd)VM`~d6*J(3ecI#8v`ulOs z%*?VBQY^MpU`ZtiFhI0I=QTBu8XYOOevEc@w8hKRzVqXMM?geBAIb9nQKvsh0Y(TJ z-NQfczDuVE?ACqowWFOaC!amKab`YHc^5(Rk1{#W7uh?TY5JDyi=kTEG3#lX($jizfV7ty2{j-HZT#OQdmC9Q}A#_2PPoaI1W#L{lqTGQU?OcL@!< z`3CYw_sD?8Awgh|R;fNRU{G$iMW?QLPWi*?=?T#2fy=8J5&B{3A2!hTBx<9V&(2k{R!goOiyp$QT1InyNnbGa12|s3QM(p zeb?=+D{Uf!LE=7%V?@1@b(H6d_Ur2-b}U)Vy1npL(@o15V86?;Waqc@{tCf!KAC>kqUp%`>FBA1s z3jLANb90LK{`ViQ)&>wuQ41%nZ+iJ+jv9+cPe%6cPYjn?xhuFUw6h`j^IzTrVz##a z1ca9N@85SR_6iFNS2?XlYx0>I8!JI*3!$An*<)F6ZSC)mfn~(`wKeS@TP@uPsCe`A z5UD?3=T60_+5anoEtHRefe>@wBM`n(-rv5S@)BagC?)ZtINnv+2R`@is9732?2FW$ zEIlUXwlFT&v_#Iu8g0)spb$BT$*9|<>wDo0`1{VtL3WMvh2p9>pnayWj0WxhX!0gl z_gX5f*{_R&^C-xOG7B9HsKVlD^3@sQ3eNpglqez!U5C2AxTJ($uTBWsbyK)zD8%$- z2>#zpSpv90O`w>r0kaWEmNg*eRs)V%nXsbX#%lgXyCk6$nab}N0O10b)g%DkL#=Oa z5;5c5xy<(xalS4tLa4dkR5zTb)uJuz@nx%t3R?tP4F@CJLrm<`*lbO%8`@<#cNAN)o8o5uf?_S9Y8cvz<6dtXFYIPV3`~8&T!lU6$AJ}Y$o`U*=(DEy zD}#p5M7CoiEdw(AV??6%#^G^iKIY7v}_$!uNuoiB@l|)v?2@K=LzyAtWjc`YeZV*?Og3MZ_ zUtu1!^zeo@WaPG{rlzHukln{9O-ZM%smZz96Y+;k3j7XF8>OR-eT2g==tZwSis0em z8rkc6U7nM+UBaN^Lt5IY{ubOU*gwOirKN=;D(cK`x8o6Hee`D#A_MO~p@0!B^!yyq zOhLGB|MO=Cc5G?*_$ptGA+^q9<*j&xl6mluIp z?yZX$l^S@2zdr3_VAygbvJvOoCh}VyQvBn#_Urk3w}QjO-EkXThtK6l?>54#_9MaX z+H~E|wmRu9^QHstzxa!If8E$#uI7&2VUhfRj}$HR5Gr27#`hHpexBBy>5%f(bNx^N zeay)_aOAOi2)@0iE6za8>u-mpvBo|+Y=OPlqDAcm#8_$64&%tG)vZxKy%rh&fQmsR z$%K%+6H%nhz^IP>L{1jz;{^WxiZbjJ%bcsKq|ogHO!X;iweU?WuSE8)520K^KR8`5 z-TtCePwQ{LBk-MvnEJZUPV6^CAz&;5;DrVd zWeU85n8ZYL-5ag|*@M?z7fcea+1c5Bg?EoKt_7@rc5_n!016ENz~Q?kv-{&@&NM^x z`l?yF*X-}ZD=eWjRG~o!71l(+`9)3^aN!L#!8>Y}FMYO6chEOEO!?6Mmb`zL_gs2) z!j+$;vSH8IK*#&O%4zpWTI}^qhsoRi!L(O0ueY}kuhn<5zUxOna$MTF;f5Yd%gi4n zFN??+?~TIFvvK`(<+ru0V066x@>u<+mi}j}+SF;pRY1L#^F4W5e)3dpbyn5dhJOD5 zO^dJ3sh+Kfktd+V`h zS6dByyZzz1CIoh6yp}A>&+W!@P;sH27GS5_4d|pJ$&hGnfSy5#`<`jt<*6l%h|C>5 z@heDRt!8FMAF7}ZfPlN!5--oDuSD1{R;5?OPp(V_T{q=mkO63Gb89OHWFNyfH=e${ zLXi#t9=YSF z+N@0aMP3W!lZ2%MzQANe0YKMwa4UeYEe2tSI80*V`MsMFTFvw$A}PDiu~KB|{uCSg zm~%zH)Wr#Ixi+Jv`QGqU<@0CGL^&S$?)J_>M>CC!6TB&+6Xga)`~>E&))5m|R@K-~ zTB7f!YjPNHO$LT7Wfv@Mclqklh@8@h>sdDxs%txNIN0V4tp?N2uW)-@*S%cay1=fH zwr>0~kfoO!a9(Q10zb#Xl`?FbMNco<0`Il0-?>^3UsUalqOXi=f8u$fg4%fnmAT?Q52%gw$5nbR?5%H~{FIm-)g9s+p^UCblPe%p1> zg+fKLDPFPe(__HEMMOlnASj?NNr3Wrs{Q{JZ^t7o)l@=q>#Y z+loYmgS_b|D6V5;WB(h>l?3uZx9UC8ap82$Dvm<(WkMU3&GF*}Rw?mwu(HWZ_3O z>pOeBUk9a(O_JE?%dPFAuXsN+JX2G{2Zn%Dbn`?@C&uImRbWXVg(jB|-UV$plU?xK zj`#0lqYZ}Jib;C<=Sc~y+oScaiIpC>X&;@_#~(Oz*>tZfo)~v8QLHgt1yH~A_cU8@ z<6%l|J1ZfWSI?30GdEs4I4^Q}B;fcoh z218z5MQOnkZAW`q-5z=WApW7x}m$jl=}os@ODfO zkwqh`GFJ_MK8%fIaIq7Ip;S0*>rMio01sg-`nqtHm?#G+ZMsB4dV9+lo+8w={RMiW zFj#*9CnqQ@Y%x2{XATCSAT_Gfm4>(qox}V?G!QK`k?4GFxw7cM0|b4=dw-+U;0jQ z^PPZ-db$J_#ABFR-+@32T=DJo5+n{WF$04X0MR=W!Y3QE!If(}npUTRLEdKlQVP5j zvT#^O#-$14CiqjU#v`QOa+7ubtd#9k;jtw(()xg z-5(8C-L{xMnOk%#A)z{RuSLVPks^BgKAXeE_xLisYBs9?0jxcL1tO+%jW^Rnt~$Hk znSTp2QwK}lta6audUx93;d9&=w>e9H_3vH;A@jpn9zeaz_$1}XerT03z|q5f1X@Cu z-zXFYg~tM8h|Yb4{7Da~abm3Mbs1+fV%m9rqWcMs$R1a|wR7&B$&0bKk5s~wlHrZ| z$r}}Gx}fkyU~X2Ql~UGDL?9_K3FnUcnE!obC7G=LD-4#mQ^=OdUSqhs*NzLvE%6b^ zt9dd3N#~7$)=a%^8RXQhR$gPXy~%aO)g469TP_Rd<-E8XcODB?_15gACdTiLs(l+c zZc*qBfStwG>;09NMFqP$Gs|SBjaZuv3U~n)s&f36AW~aXPHK6uY7bC8YOEx zq93G_e~tF*xlrvs^pHOwEPfrOR}pks*Y|cn1sSb4@nf1v_K|&evBpl$i*(<54?dXq z%mGOC9p^uCKLt%R57nc?CONKbgXs77iF?m*2WPT#554DJMvE?0+Gcb(PZQ&hK4bC&aG|mdQ zD|!*^4Z2?z{{^V8lm=E~`#wAg;v{@jHyW1*?xz3a0@RmN(vO%^MUst!ru2$i<~PRY zk4OqjVz!=Yq0_v4&YmMCcYw2AhU1f}b-m-Qdv)}U;klBN6FcIw9utbrnIC>B*_=Ce z(eCq_W^%3XBUmfb%IvPxXuJ`NLED^LRo03WbK7?Rg~^{6y&&oPpod$rs?ULVBHPrU zn{J~-(e$_*0J^Bhhgxijc%ip%NvlK<_x_1K>HT2!L0Y)0C*!M>ehs5Aquc1;qg$>F z9-~Dp99U@Rg2xALw_kUTDi^$eq8V@={JP2vPhoq3@8RJ#*Fw7*OX52P^eyKvylyk+grmM0qHb!pR0S15_4?tM$f-_#sr>2W`~bEf`8 zE?lphic+>gHy7hq7nA?K9Im;Ce})q-eIku6hQoJRTr*>7vD_#nIUK}OBo(K&Fr5$r zVTcD1R-F{8866)_0-)s~F>wb>&q7jKKWyiG9d62tY21a?rpM&uacw#>iwNWJ$TqPPh^Uj@OhndVITM(6q5BuD96qxbM4j1O0U z83GG3P?Gi+8A-C}RO+j0Lg}$7T~WEJnOiVdUekTnr+>Rb)_hqX2 z6cNq-Wnhw)n>eUKyLwN@nbz6yVa$68%7+Pt#s`~JBHE-#0t8j@afKk$<;HzIEBU!S z`Ji>-1iz`Tg~vz6B9ot+L%XHD%GrZj5ZRH*1{w0gl3#}H>Wx)+g@S^)9sYUnXpQcQ zHYaz>QAt-X1M3F^dbKD(h4

              eNinJNC&k6`{8MhD1X8GI?=rIdq&XSpeTM&4Lbm+ z3iOlitBdKYQJpMw&2SKbVh7)F7TuaZK=HJLr484u39LlGwp)Re0!~Sy0K*s^ZBFLt zRP~v9UOJ$(x&gJGbbS*L5YPwXS%ox_Za`Aq!Q%x;1|?cO&~ zINg$t?;UMlSvNM;oKuUA;`US>-FGEcpTnGx=8TH8pkNvOL?z89DD@f7jsDLyR^Bkp z$R`NX`be|h?zddQ*`e2;-;FdOf-PbgxphJ>asr8~s~q~>YS%3kr+(+)AQPm}mi`7O zM@62eGfSjL!C_DZVE_F59QbpT+}vfayqMpwN36Vjjo$f=NkR8w7F zamz4l*(uk0IHSf8pxx5Dc5nK^3C86>pt=nZZcS}1${Pnb2ZawrVZ7ZiJWK%Z38ZnF zzEC~a2;#@J4+}<1%e}TM zjVbDvl9GCBa@R9IR4u-@g98T#y~m84{9C`wh~+EKlVUBd;*SkKW)^8wkLW#>UOjZ< z?s;Jma96V@MNG5zPBLK-BT>|NIotYRJboM5oy(I_%i*3miE`}<8`KE{_}vZwbpRJ7 zprWrAPB-C45mx}>D>iDo4;+Vx4)m73f&A z@TdU(XLH{*PU^pcUfm76JiDi1omRXlpvvqG56~8Xf;(b`1RzoShh_(0)JrJ-D;1fV`5?if@g;4LvmNzJ$EYgP zv7OsD!Ph>#%c{2(QoNDR=Wf}rS>R18B>g!_4@CQ+hInXOdqrON==wFjB41t<>a^E( z|C^&-hHgJTfP)4iRuf+)iHGJGgB!9$+tFGJ~9Kp6K*KX1}egu8>fdIa1SP|}!4f|_${w|f0lUsn66$Q_M;2_dsw;CGb75}oM+5`}NgMoD({=w3TW zYh6Py61uyr2_1VA7rbGc}~zn2YT8&>cK-QyVqw%rV=l+TN^U$7Uf0nde$xdo-D`G zl{8DI3Or_g-TS^XPF4P1UnQ51mV0QyGy{8F2T+?cFW48EpQZLF=%~{GYs46pSw@ptD6Zc0eZnFJTGcI zPXlE25F_J{B&=rqsshW&$Sl}w)&6d__{~n(#;Y$i1Ovkr>aP_D|(777k^E-ouxMA+-+! z^TWZ){%Xw_JwU0yi7r0rH`)*cyCi=)dXi~*lo)#UO_kL=muuqJqPFdR2lWqn?e-;g zCw=41FNgN_S%UN={2#D9ruC;by_oI3iZLYennhR+{Xu(GGS1U+Vt5Pg4u00nVg$$M z)jAyaa;V);`kj7w?cy$lomKJU>K3r-tExMa6J%ydJ ze|^bzz7PFJflAAO-2~oxw0Ez{lSHRnn=)cOKXGQCW*J$4X2zc*H}o z$^v{+$Rc-EU}9y(1@Z<^NtJ;@zw~QzaxxLIxI85wBoqT9wHQY2A397n5bqwOi7H-7 zSqQy9Kt27ThX@J|!Hs$j8&2#K+eg4-L~ec(kkwZ;<=Sq<^Cj8qJb+vjf%Ygi zoPjQ<1Ac&TN{0hT46`i<3dU4R#h!OYT5lBo*<(yA9Zf5ro0g~lL(KLPb0lZr7{z#L z!Ulf%sR{nI3sTWDP9FkRw}sa#SO`OW9|@pa(_bo|N8*|?zZky$=ieGo)zAw6M`)Nw_lLQyPYe?=hrh)vh^SW| zitl%@bF64B`_m)4HdY;aIL6zOawl28JCpSHQwxVTzcu)r-wq~2Okg01D_^U>)CyoAM|1 zYy}FS3%K^tW$r9W6s-PhXqy3q8ASU6)W`lZV`+PLbEnrJhYH@>+LFs@hk1=SSxJeS8|$XupzL4#OX!7g(Ag#0~zq;sq+J|yVY=G~ysa9|OS^f3bIyFz8kcgFh8yuQ0Qp zq9}+!#DAcHhO%tPwN#N!byxEPIbv%A<=$pHRx#Wg{F2IGiibpOKsXq=l`;AD=6&z~ZP&yf67pul*bLQB?IYEC;RxATCQgCVIq-si%( z=w0XIatqNSDlgI@O3DjilA+YuznBq4szR2$nL&?Y=vt6S9a1ZfSTXSyzKO)-PS3Jl6}9uFY}!j zYssx@V-HGQO%Z?SuD#>M7Vfi^95;oJ0a{8QE^ zm4)BRIhg!KDlc6FYbmYzOVKYYbn&(P2E29~=KN=VXVW*Ro&VfUIIsWy5~kfXC#6B> zJg0ZO-LA@Z%jLTfPl}ZZnW(}|Gn4wl{7=e#J3u7-2f;cY9bv;UUj0G&A;FFKwQ#h| zW1(Ez5aA9Enc-s71@GMt6z`;E--%vHOsu`qg%ar)RotIlr{Z0!w6P%RHz0A1hhE3q ztbyggNry?#k$gjd^x({_d&(l5fOWlIW}~TjPW|Eg;i+}wN=}Q>w>4x}aox@c7ili{ z{YlT^7@Z3F*b3EKEI$qLEk@F@0}Ki~^$iy*>r-c@_QzrKJ_i?Hdq@2^G~MjNT+r0)!59_)+WlrcxIR4q-Ow^zC3SSI?ey% z$)0-Vf7_lc(8uennYH_Ako2>ZY~FtnOz*h~XUW7b?{5j~wRZh5V9{fV-DueGC(W$7#+E~cNq7&ZUm~H# zR4}WCNb5uKaPI2tvu{$g*zt5F^Ed8FeBfS`i#EAUHM^GbHk@Q;BT^bQk3U&ZO^oH| zHQW3o_9)>3tzzn_Pn%U3m;M^tLsR4jo_NzD25d~NU0sx{tgOmChO65SO2t+3VW>Ss z4;Y$#$=~>TCuh}SNs&$B8xaQBb4o6kNtzg-U&AH*`9du-Tr*43z(CZb!Wli8ZZ1_g$Mt6M`ndS zs(=<$oQShMps;}0B4qqh;D)tq2(Nqg{dC(<27C@lqeYaLj@#s-587vDFEQ3%774=? zxG1(B@O$v8^l}vAhxH92t}aQyV`)oBtiC(nLl!d~in z5KpIH6jg&myS>UBP|!kt&P$IQ^GN^k(%arvma)2N#->({!0>Q`dpse*qT$LjC%j3@8x5Bftg&eqivvd-qOfd#*Vn`aFHAi~nD_3ef6=fFR&;vPZqo zi-*4F`jHu}($dFj@wv}d!E8MVm|0-HhLx2zRH07S}>-< zq2CpJfoKXmq5B2>qoOZc4TuIS97@S&7c)slZhmOy=5`D5O%z5IN;Ff=`YaeX-sw}S=vuQ-Le2!Dy#owy&I=yom0in zCBXap%T48hMTCKgsRx*dU-Vm z)H$gHX)Aa{8>u62D_wB*>2MSN0ZS~oJKxuKMSLA@o&Z`~mSNn1eH%=in=~}#*%>pd zm((P?1|$?e)o_bmR#bRZlJu=V3O~WYjQhhUE8nzmiit$>+&|CbT`{{A(GwH7F+V23 z#fKpxlEMD5q_DM2{~4!rj=Ki7`dmz~6#E(Gsm9nqk#;gb(YR5{E_e~3Un({3CPD0^ z;X(#r83WS!mN+c!yplO?zP;r?qf>2vRq(m)!b`=GMJ8h` zU%#BW^)~z`c9-ooTCybG^rp{taz5m`$L;*~9fl%Cv@cMF5d9Ps_%DIW0mcrq5Le-T zH0uvGhj={o-^P{&_VLZZtRNmF?Kt@O&E`e*Ki)rl-cbpqKlYtFEpS0VSogr=Dd*Zm z9vJQ@PEH(GeBQuB1jO4Qq8oHx`anuVsPZsFVuA2Su;K+5%w>quxWk|^1DLo%p3-`f z6Se5QU443Y*>k+1gUZO%>~kG@PuYFdI7=khB~0QQb)col4f4dJpeil5(NnxUDmIoE z&0@sWDFV?0)S;mVw>7@MR8>az!7e9kZF~Fa#>>t~rn?jgj+j=VVjJZzA5h?Kd=fP< z5?@}!OIX8CaGbz*)?v#ros{};w3_yo&WBK%?0MOWa9cIi$H2QU%FD{gXle6QL~bOE zG{$Q;Xni}@_wV6)B3ER3z4mPw6KSZ2`=*qqR?R!8GITd*UM4QZ^*U~0@P76X8`Ah6 z;N62mfpKy5Ci*F_m4@|4QwB@fuGEs*TpzFk2_FL7E|%T<)W^(HJJAQh;#zj{j$ zHv-QySJ(+$!;*(isotGFg65AMVpgD#E%TKU;7jeEH5(n1B%`>{M;TK7Zh z>_sXRb1%m*J-Dwz4Zw2}b2yHv>zmm}p!0wTyA(LP{m$@Gc~$QrDbv$*O1m{soI!;JkHtWxi)2eex`A+ zVvj){cJjbdhkk`YOgBy&4qmIzPKp$C2-0a^U}y zU-lJW034<)ZU+`fPY#-ZuU2xhUIFDTC`$N0To~^z12=aZ_yNogg=2V-pk$O;FNf}Du{VBVZ# z+r(8bs#4-(uklhlW*`I#TquR8a5H#Y*j|&#|{K)U~u;_Ask>YcL;CoU=u5qJQ zYzAdULke%pExQl^X|+n6z7NA(uCCSfrny|awle+FnNxRvo$3Afoet@&I8O_WUlP+p zPk|Tg%z5+3^)2lt2d&8Am4=SHzXXKiB3rCgIGRJ83e;CB7?z@(OP@=9^bXuujkk}mJoa=>*?Xfe{^yQ=-wG|oSMY=R7WO&W@~0cD zafr_NCxZzftWn}3*>vH2wTeJw!vNqKheYehr}6*A&Rr&J=?&?uj{a=7L_ZPQziPf6 zl-u2BaUJPezaW$vRKNAeHX=>R#l1EVTiRH$b<|YxtHW$`^rZ1Rmy4#jMrkm!$VbzS z1_Q;J#m{!0F^2nBmZajEeiIQMBvdSQ-1OTkHz;M1|M^n7SyU>s_V9iwiyZi-P_PeH z##B(J3EA#^(V`i)lu4lnFml~o30R$(6ovgnF^qCKN|O^=sqCvZyE}gVM%~?W+ho6c z4*7nao!=q5lfTgSb8bD+bE8$@hu0adyw`-VoFMP&oi1vo{}J`hieHDnod1z=Jy^XY zG-tIk;;y~={^o|s)ZAHCe(0L!|AMjOcj(^jwyb@uWC$gd%9AG={=bRF9kat7wu>t+ z^!=W}^Fiw+P1AiJEvG#KeqY3H$gCjcB;kTPb^m2Z1{TO#@C zq~4?oG#j7-#DYl!q)K317Q6L9ZT$dd2{bSes}ndIFgs}fNB%K%i;bb+o%rk$0p>CA z&6brlb#?JsvWqekl2Xu&M;d2fu~090j>qXiN{Vq!HcRyU)#2#NuKL+`*eeQck$5Ae z=vtm!oKroiD}UZUwE4q9PM*EGj56gS;*rdZ#=@$5GRbg)!ZAvBTYaoCo5NMcBZC}R zAf_|^*2@BLbXcf*Cgqc=h!A*4ggw2!fwMV`@Q1H&874T;yS&ShTQ|=YMt)maVLX& z>?Y)`QuTh!=MOS{8^a?Wae16R_;c$;DPkV6G1(4Ni?)G1f`Bg+bsNS)|=;Cr%O&{9-Gno zMs*Q+w3Bax=^9k7kp|=$-;3X++xofFiZ{`=V0Hay{Fc-nNrZ%|Hd$yFCf}6wuP;Sd zMt_o5?{_)@?Qt_yjAI;v3m!N)uxuDgzKUeWKG0>U6UbYC?5pLxq7!FL6qn7)REl?mF*NJi}` z3nDg?+u%Os9?+fcx|Haw(%@brc|LLL;?QfwEp!C)mOuLSnJryM8iV7V6=6!QN0RhJ zbZVcZ^73Uad3&cQ(GMQ3FCh&n@%EiQJirW)GrLDrUlM=8$`%DUkDJVTVp|1VQ|Wga9B$ohKl;Gf)}r6jjP zg?5#REx6ZZuUk?-|62@|v5gBN;_t-J2#fKNg|6+FQ=awogdv$D=8p_SCtokPdcVz9 zxoH}^5{_0HDIzhIC`_K$J_{Y(F3QY0c`AI0?%5ib7uio~;|In?t`)AnJkFx|V97Kk zDZZ~R8!4FOXu?Ja#!)KUomDR~mamy@le*Jh9@8lNUj*h)pr7$h{+O9j3S3Yr;SIxu z7~1O%vJ85;+Edt{-Y~KmoxGj4wQ;)ifQ;SmqQ3Vn*Ekk0o|`8_GItjM^ETT@*#83a zc>6x;@$Hdbd$gO@(6BAD>9#cp;XW~7BV3*?#nxWua*`ft==70k?N6e_{XiZo(s{yG z)DpvU3!EIT=c}8i+o1cEL>qhVSTmq*8QtgKwW&(W7SVZ$^DDfT!SPhZgN`ud*VJC^ zz_xy8iOE78M>=-x)#L5SpKhG2F7Jurd0$FU;!aIXDGhgFoZlZQJ%%z9xsMQq>FMKM zyl^xPs;urJaK0HU*mZ0x?9L}KQJX$HbU$|C#yubA$DJCNuCDxeOts?76=udtt%J&j zQ_cO1f)Q<-5>3rbgg8;dMg}kbtbcXi9h_5)^*3cGmQ5#if}2#x{twg|Q_qt)LDS@q z6IFZ+eX(dZJ_R=_jpFRiZ(O8wm)3r|?_VO7~(%RtI|12R`u}HiZQ> zypeWseEj8T84N(EtIsFvKfhBcukD%Sn{0Q*cAIxCxm?Yjzi8SonG+WNGjE<+zHlbz zNz#8s7>*kPr@dR8Xe1u0|5m$VL&*)x{F#|PkxcX^Hf3=ygTvuvc?)3rJ( zi9p{jEL4wRUUl~PABv^f_&Ts5Vsnb1yA^mVDZS6&^>>=aw{9dIo_ ziOY|Yu~AFsDcJh!k1munX*34*n#`Ou+tb~R;F-=J&AWf(bn=+|#{?xGg&*_)na82H ztZ`hlD_I>=ORC(Gt8!?#yV_NdM;I(zZ70ek;?Szodzo|2+VrJ(v?@23bG^o{ zGOH@f&yY{AV&Q)j$<@8QRJ zH9phbhvN^z4LcmA1STh57+-ZFRGcw27`TiVkZ-{htMJAM5zd7W@JRid_FysQtY~hJ zw%?jl%;j*84rDi*pZjHHe{ZPc9Pc%PfN%f#7XeT6v@vfuwYl3H!#KOPAvH-!4{Ti5 zfYm}pe@<{{O=O-NbpH#A^Rc;k5>{G#p9uE}sP_!9!$fL-OX zKIv)X_Gb$1$f}F&$Nn-(;5YNsGkd>p(EQ9FONKqBE3_yC0kTV z-eiK2ZIEJrp-@)8>PAg>F%Y7=UjOV(7n+@=^-WRT*~^?)8a{<8uv^A|RR?Z(_G&kP z9!)|jI>Hhe2ubfv%BzubN`~!`ORnW^=mkoDo;jO+Kp|h8(vF%~XX|VP;C*zInA-sZ z_&79*xxQa@if`MvOs}u4b)ar+iVtUx&D^6I%9p3R^!OEq;Iu)Sw9W0HgQVM0wxqn& z=5v30DM?3v3Pp-3yBJgNn$HD}J@}+xJ##5iudt?$2UB_ErAFv$aY;$TIRL_|XwT}0+2oU6RMOCV+vw)rF1K{G6o$=hT$(kR*+ zypL!EkR1^DZB&>2{6Clc^to;K>Nr2ejPjGuA_*9zuWtVF;d~<_(U8uftI%yl8*u#;_Y104w zeiD*4etqr?(CS>O^4#rC_Hu6$z3kKXmo>WHiK|469R@d?9?uh=52xPr@L6R&PYi|r{tpY*|ADu}7UbZiS&?u! z&L_Q@>1Yuckvu{){PFA@LSM7#sU1Cf)~=w$o}`+^qEZY@C62frI9=a~s=VXc>*0 z47bnaVI&fuwY}^&&EovWld!_R5x$UG+S*ltwKxT)a6bCK5dE7(12WL`lo#DCt*Y}3`|zd+?j>rQhFWh zddJ!d_ow@n=0*BaH{Ck^oG}VBsQk=`5V5oh>&uT(EYlE`iaegHx|?bJZt=)7(eG@$ zTT}F1FO#+T4g0Dex83Bw=c*Q>u$kp7z4*k3;&oQ|+`MS(Fxl)B_v)HUZIqTq@85-U zjy}Sc$U;jS1l-gV$o;}wEU}#e{s|G0_`5oS=HsCQeg;Oij-wofylsi!rL72U)jFG@cl>%uuVYsn9U|C))_~Zamy%7*Hxu zN|eKU#u51BFpEZZNaqn5{eDS4ld&>qn<7Tj=-_&QiH2$aWd;xv+jHvoUeJ=6GhK|GG5$qDoc`$#XL)_A!^Z99;x5tM=G~2K`?K9hg}_X8J(pg^6xlelb(+}MY-ZJCrVG6U2dX-j ztq5{F^k|7v_pP4OL5XMyJN=o*&L}E70Ysh8Svn8i((mUdt&7E6qDC3GHMINvPNBms zX>70HzvoTZ`;KyQD3U27WIZ^iJUC;;7;%NpL}+vC49Y!tBE#Gq1(L(9c87NU$74K$ zaB1>g04VRGj?=$wZ|$U7hRHmtvZQuw6chZv4|wqfFIl$#mjVz|$F`c`_6k!w)PAY) zV*6{aYO03`jla`^mDSGBdprUu8~qvam2B<)%6p%qL{iwza*TgIwi>XG&IqhFQq4b7 zNRt&W$qD$o8>TPJN@OV*Yl+gwvCBGbjJ70Js~h!CP1czZOn6VvH}BECnGv1a?Fn7D zaO>)>-BiXM^TJ@}OnY)Ptj)W-R(5pxa$wuvRYuk2F+6bX#<33h+cgUbO0t8{Lcg~m zHTV2}8VEASs+5`GTkkKMHr#3-SRHL}ynesVftKxjeN}ev-jhf>TYr?Mm;dX4yd4?o z&yu*qAPDx1s9*VSgB3UqF0PQ!KkIqx{j0nE)cDVE9)ZUtZ|I{h{r$U1(zIlwg5KkO!W{gG{^$A* zs&=v+0Uln8DPc`b4U)bN?onk{liXmz`{?TH7mvbUl2_g1)Z;SrYr#?EsCx0p)_>5< z5TqC2nvC>vvt`q%=<<0vS)la^-nBho@dqwJcR4KXy12Mh9)a@s>FL&UZjhM+dlEWP z^8j-?(uhN!7jZQQd>owaH6l(sjaWf-02*`{Q3MIH41)LoL-4EuR12}!06*l6j0~(& zTEvHF~TH{gi{Rt{Co{0AfYh=3aILEzLH5EMiP;k5!k5EKYhR8WZW?)5w; zr=%RJ;RUA+#Pl87M%!@<{LUL1P^694*ds2i34Crt1e}mPZf9rr1YAVHz;prVoE=Gg z54H(oJENzoo<`;Enr!X@Estb1F^h;*3C{6uJl&j^jVi_@?fSWAAQw?$YYq#ABaw- z6c^vU3CxJ-ik4UM9Xx#ZX6yQN>H~UPoPZ`YcoU%Sc>sthXgPofx|#C&KG{1bJ?$CXMP#vya2*50GjjV8?XehY?+yv z*=dq#mGWouiW<_u8OvdPY|tobC-U^v9podtUE_*1mk=*YaJ(kQdm{bMO9cM-X2YM* zw6sT9B)qNH89yW80aVn~v%n{W`H}VGX`W=AtD05L7g2JYfQ8}L@5K^cJlgh!j;{@b zyMx^BnWyJdbaeDeLt7NE7G;BGHu74K)+O}6ANejtpTrp2X>hVu&mXsV5#d|*4O zRDgVLXr1-tD$-7Q9BLwV*E%{65brx6q995xQqp9?cBOcy{ql)_C!Lzj??k(o?&K&C zO}X&vR~nUA#ubx8?}fFx+u!^i69_DlMNKExI}AojD~=X^ZWtg(+Y8wNPdjit7Z1Ji z)3Q5$SabvS6J+WX)gKUoN6KR`u>?zlEePU9(_x7P_k!k@7Jr~%BaUE1YMUp&_#s*l zMyUzx>_H>4R57fDX!}lhpBP|3Gl3)PAq!o&Xi7Dqyqi?jT2FzIy}A zt^0uZ3lZ5d&E><+&;GE2GHs*&P%9qiaHpNI zztPJp#?e{13OOyt6b$4$CZg1l)8~Wsb%y)#m;F}U?jr74;6V7Zgq3CqGyj#_ zH3>u1+jkZH=Hza^`C{TbC->&j7n9o`3s5hCA%u#MpQBXD!=B43>~DIW;hxk}mbbY{ zrd*1nEH*@dDFF2V^3~vvWvi| zX-AGy{>k9RFtNH{!cQl4(^U1Np00bSmKD91D@)OK)9%tJzde&xyqKlu`^W+_Rx#2` zEzjRH?u#6WF}~CGLH8&_fyUd+7S;RxWBlgWQKjsXG8(zFhOdpiaF@4BAH%YL28SwO zBu3yXU&@Sp3>Yyh0bYfD)?{o}CJ#8i1)=c!-S)!QW;7Y@2)gnV^L~0gmwQ^| z`?oa8VhX54RCjM;Ql(JW-hkgvlVX};wy3MNSg&{~uV=FWKPLOM&_7Q_aT3)SA2m;{ z497S>t;v+|)xC^C$wxV2ibbLS{!;P}>i*m=Sqga7GA0zj3K>?PwJQ;xM~P~^jmCwp zG#BsM-=o}|_PZ@vFivNjP6{nS{KZPsnUhi&Dt%s;GI*p;%s0 z5&oo)VYB_vj^-IaOY;Z1fgTByvyN$}LAiv?QK}lzDn(s3OsH4@dz!F^#9_uaQ6vI47}QBYkAVDiO-2+4Xe~$(^?= zS0^(wGPVcgrMH2*vfD})Hu4Qjtsx+Q77}i3o{_C^EIl|E4Ai-8V7@4cgL66! z9f61+m`eUcG=7}Z?h#;PiKbJcg4B}G+p^2~GDvA{jQkX+U=xs$il08c(sRp_k&5a8 z6ur|RJGL?e|B8^SB(J_05*qIp282PF?wBkV=sU;pPmSGGpKxvw&LM`B}$3 zzUeaK{XYW=d|Lm_j=NUwo6>l08Mshie(xI1JL&(`c2VR>23)e_v`2PZAGD4Hgv!-k_{{Syd=CMlk+WyBN|_%aWmuFEw$I zT$2403>o=tP@p1n?BclF%R(2a`@vmD52zP|eT^q8d6j&&7e_7pAECD&#=C=o+yTHX zk}B{UsF16Hgt{78#R_*NU>{uvyTEJ$K*oW!oJlEkD zFcaSe1nAEH2myy5XnC$FT*{Z^qQ&>xI`p5apH04S2=;fb zuL{R`>|0DNEkqeohMr-N%($q~5POa2*GspB_XNS|$uCClDNQn;yoRE-Z z54W1p=m%19Y>2(<0JXI-Vu}VsTMBnr&~M(Kqe<}pC_y>pb>RWz%~1v2N4eg0XEuc^ z>w%Ch0c2wbJRx16`$_c=WG1*y*LJbev~8bv+{@mIc+__BM1~nJ=@n|GL~nts;Bw#? z&!$4mZ?PYIhhKcJ$*5pVyQ3w0<}&`IV|a^pb!I+nv5D-zS>VHvk@vEK=kbPG3Kgd6 zlK5!6(n~QX=EsbYvT8~jC!}Xgwr*@U6@&y79~QrPQz_}Oe1B79_^$S;hk{t=27Xm; zU{dB_S6mfP3*mDggOD_je*F)G1N%X+S&$QX_S@ebB*sDvf5SUQYYf%ruZa;=IPkgttjm5f({2ygE*-Zd`CON~oj0+9 z?mVw^npvfN{NV3_EINr_LzLT;*u|*dpW41APCF-7g0FZfUEu4u_*WX5`Ws5Mq_Rwe z4lTEHQH2b>&+bvUyM6XOq9T2JfH@ON@Khx~Z3hqa&d?K0>H#yuf3|M8{ptgDP;NU{ z)sWjaClQWJdvJP~kKJ)}z;|0j0Vdo^g0mzT=b?gd@9m9y-$1RMORY{B5deIJCz^KG zia`knzKmwPZD0CbhkYM+sq#`AYu@8g(jGe+QtwGaC+4|QX8e6+(Df8%{Dl3kl=N%$tTDmK@gAMWq=LL!!@YU)TgiCZYb(!#B9azo`%5W+6ZPH6o~|k!^y1aX=l>Udml&`{;SP2oGA*Qy3OS)ea))FJX-Uo z#Yo+>WmVrps~hLso$XTcEDzX8wS65f>`9Xw2qyQp2`S4`QhM4(QCY8s#UDK!Z(7uQ zlU!9uTzFCWj<%Ul`r!IAp_JJ%OykDK-MHonSwk6deQw~Rx!m*6pXpD%-7xDW5<_Rw zlcLss0;wa%Gd{OgqMR+~*5}RCjh&zOtA5U1X+a~W;PMid-D6$S_-Xf;jG>G9?7p+c zh5au~Ow46xXYYi;zk88q>bo)Uv~SkKcQ0Liq^E(su1D#r ziKN;xG4(c$N^m`Yr5;%p-6dpQPnychtMT`|le?<8QA=YRkEJ!+{$1$EmB`^L1^tVS@Gi}) zq9>D5KdcP6lbBXdRi@yfN-&sj^FjN|R+QNLfABe|OO-RfK=jiK4B1tRDE=fm-SJz> z+xv3Zf-_46I|F7D|=B;?d#Ga{4aO=f`I zZmOr$@mV5~j*M>Sxt@Yz)s}~6(+iDH*gmtoN=~A!wBym+QfR<)Zdn2z^h@{S-FDBF zm0Rm_b!EQh3cPFl#(K#1$?GwHmuBBcgweNQbqb#Dw%&fD+8?iEGZkr4@Vg{()n@U8 zYOJotivM@c;QZX5sim@={)BJO((N4!W3F#!Rb5BPsW@0 zoi$QZWM-B!<_w``Vammv62?!@)lpEy!#gmJOih{5SJ>iM-tHtMV$Q}S$a_#8F4ppE z>H(hnX9X#(9xA$CnZY)S$iTFLSE4IFz=;SffUE9beemCsd}$?5!LToJZ;4SAUa`Ql zWKI?Z;(M^a9o7%;{wx`HwP*%%i3mm6TeW(rp@Znpc^OUOoDS$RAHFg;yBB)SJ zfnCAvw6ruNz!JDz@P)CtM(~{>@jTK6z}I9j7as|pVPx!{f8|{5riJm9w&=4Us4alr zY5?`zAa8ta;4LhyLMI^+kztjj+E#nNtl$5=%Em_&g&ghJVTlYvvU?d}x|f7E-fdSj zs}^`$PT#SuQTg7Its|od{h+UfH}CdlJuD#mjIph3I^7ZU_zyezqgIo$o_p<4^(fj= zThGwqzEn0cusx&bkrq;P2%2inBSf9;L(R&~UGunu@cW@oPx)~KC@@$e&xYqivCs$N zY2ax8fNaO*sd^rSme|awTI!475#U@3cJtEkHN-@RFVxw;Ziyd?6A1MB4%db6h(a7R zGqlQudrultQohWd9Lr#!UcCM zyALxaT%U41{~l?2pnzfz+w#Cfyc^HaL*FlY_$GqWhXj2x8Ro%OA*@s<8ELl%o>8=F ze^o=)+sqQWr*Ly-Q&i-&!ePOmfL?>$rZkK>&_gXIYokB_j-YW+1|7rQZ9P(n7Lq&> zYABdf!xczKS2va36RfGgRsS{#i4+{DfNc1Q*aCQsSkM}E#sS#&6>OV`>BQkA1y>4e ze0(8ycU~wb?TY)VY40pw^;D*^g?wi^&Duy%JKu)f34rzmF~*%y%0?x?(GvthP`o3l zM&kw??}eR;DsCcu}i0 zDjlppZ(o7CFhubAfY<^AQsCQDOYaGP2A>97u#A9=!a1AP%Dn0p5;r8?C_FY+6v|ly zVLApY`goW_Hb+~!@y#tH&WmmB?PL%r41tB}BcLINYunX3j9TTY9&7Z^Kv_n?&K?Cs zQwU-B1|(U_?x#mHK6Gm3?~s23e4PmxG?x3?4jV7dxweg7+j?+0h)Dq z$j&}E|H=)b=)|B*2nY_&XZDg_05Mx2xD+FCD-bnmNup#;4wcvQel}RY&*290QcO$_ z0!}zH=>D6~Vud-*ZJ%kCo_*Cp(Y8jD^mf?JMO|VrP3Wqcvs92(C{{@o`WT-1P?#<* zJCh0X;TFqEsRB1<22du<%NCzM`VQKy!JW^Bx}`L-I;6;+AocpZCNq zqhokD24SQ^YSH*Nh(Y@f)KrX{H!G+elRXY%TNY2|f*7lz@ZH+kv6Hz$yTGLnOjNj5 zOi|jy{kpPRS=%EDwu;yAU;Nhqbnn9F;fb;bbRC?Gzj>YSCUZB}eIMNw5)y*RJHA20 zVX>?e>u|@q+Z+A5O07dqJ4& zx^M(#j=d^z=AFyo1v?dhmR|utOdPE~bwh+wk*~H*pXa~vA{idQF|Js_Oc0RW+Gm-W z&q%xWCYLIq&O%5L@5bT}#^#jU_KWV8YEh5T7Yuj7%ur1W90$Rsk?$j+zJ5z;5++8hpBZ`{x7yhX)8%@ zdj+x>V7p6eoL7V>84Wt7Y|JY@fnQVf*r+aZ$`Ipmy0zuMcdnSQGnSE6j6&g$681bf zwu#G3eL%(bHNbs~BNs#Ak@p^3m3OKRBrYOGHP95GBe)LyeaEe~CuRdwKwM*r@5FdW zd_Y(e2>1-#KjA3)4mRX3B_teLouSDBH=QVGgYE3@-alxsp&f<{Or(=aN0+bUc%NDC zGVsXf;0ZJu++)G$d}I!OUbWihA-M4T0+Ab?O7UxGUyRN{O71u4ia{%?ULL&@cDo5a zq|E~dSTnf)Avt=0;H7oAn+7@d&nqP-q(; zy$ze@2Ve#TF=|ADW!N z$4dbUXkgQC!!-^`(*fYaWxM%~F0x3kTBcH)JRNrxuQyx;vb;ARk3C zb-(}(I>+s>_x+ZwNubZz^98NwHqvJSuPfi%2xd@O?L6%f18Onkw_d6p{to%yEd=~< zu)Q|J?1BCwppMQ&n^?}>{AYXp2FAwr!Qwg5fYf~>)@zM7z`khDtzeYL&pf{C99 zXCDqma7GI$E@nF4^5=)sx}0!Pv&b+CTpQoBe){*~@RR;sU)7My*X3LACQC zgX`gMahdFfTV_y*RAy+S2&eb{<}$Afi!OaU=nK12|Mv3gbcgZM{N+LUwmA!XXvRC#BiINc+A^y*+I_EzB@A-azkH>M& zeY*AGx~}*2e!pJN^_u2*`@$!6WXs*IgxYNeB!0c|AIE+1*dPwYG9@rkVxz+w)uEnN zuovN8r<@ke{M0H3>_@|hkaF@zvPW_#eoab7ex1r=F@RW`fXtQSX$IrsW>J$$Xw%$c;pvSyORz{Kh6nxtAeyf$^U$1x~A^VvjC zHi!1&t+Su4SFO0BBOLF3$I-w9p};+xTs8T96Ymu#^6D=hC9+GQFO7)|61H= zCuv?Qim7=F9d>_f#C40~1q(H=9(Mjr& zEwi+4Xm{V?5%d~Y!8F6tZq*sh^iP|kX)qC%Ugn@PWzcJo6{WAZ@{nwYGqtyvpq?2^ zqtN&%XG>M#!=(CgW_h{2>%7U%1%4cl;N<0^wcGbmcGrp>U4y#fkBt7BU1POJUHM{M zZ;##;*>K=+P!idbQn!9%s~3tpTuL`{`RzS#a{_#8z>a^R@=sP&19F2yLps^78hzX# zQ%bgXl*;L$+2^Q(Q|Y2tE=`{m8l_2PSGSdqV$N@|W~6AK8FTCvtFcniNMJBcdARl9 z8KpI?Q+EQRSS@5q-2{wF2b65X8UMMv!ZYIUqDP*EJH*N>+~2wZ&rGV`NapH=*eK>3 z)J;t5^D{{l6m|+-nC__(7Zj{CYFlWD_ZHGSOlm|D$@49G_T+`SeJ|OwzBOHIDv3VW zB$cxgZ!mH+;M~9Yu$e@KAr`aIBf_mzjBbZGFDkutDx{KBlRoDxGeB`ndaOmLDJSe8 zBk9Atl5!okbwF8$8t&J>LEsNBK)>KmuWLuEd4tTHl_V*iq7dJIL_uM4K=E<+4J)$$) zZI?k3i?1qrFcK~GZr=sL|mybb5v za5RRj#(HU&l3K$e&eT1ixloP}BMsnQeB$pfH|6B9vv8({6}3rIx{f#|q7F8(&yQFr z3fPWV99y#qWgc;N99|w*)VJ(f2+z5s-u+e4a3Dk_-0(%t{+t{Q%_Nl!PoQ$U&?+IY z3&W*tf|D_x9D?)rHkyixqNtTmhty}MLeyjq!*K1RMUMs_sI1~E6h1zvb&+5e_7d`u zzPpn}Lo`6vr-u85XahCK*T}7X=XLb%2-TVis=YeMA>8y<$yH-PHy+e*6XUg=2aev~ zO6h*KrAXdDNb}JbojalHJxtH|QU%8A2{k6F+!DNUX{VZ_xSF8gI>PK)uV)hIeNaAr}EFm$h254~Zo6BvfIQE(` zcmjaN9?WBhv`n%UJ22J+k+C&-psaf$Oeb-N`_{gYNAuztXnE&VYTZOG>2M?tQ$WoEpi|pzYQi zedv^Q$-9Tm#=$&*`hYdQpy5^XYd0rEJ(HlDqVPnsQz_RCMYEaDR0us8g@g#x#( zU2x8^;d$@|MARw#$o&rEY=O7x0#5i>SLB)x8>Q2*smjN?e1GNKm!&T;Yom)Ep+= zZlIH!@KvlYhSB4e?)Gn2XPM?6M&^!@>AV&a^WLT(sqs>x^JtA2S)N1I<1(SflZkB( z>U24|xj`7R^c~#r>;81~dmzXYCyJqQeD(S@?<;-4V_1Pd#+vT|lxbIH*BzM=F6PI% zgZZ`(a0k+KYH4r?D<>{}>njMvx_JEbsSr+R5b_DF{}-|_*_($?Psg-lSy@>g$N4wq znreM2l7gB;L{v25$j4;D8#+r46fcwaob#~!{PyJ~ht8j~A4j+NGby}w9id+Qa%^$c z@qLY3Yb@*VYe|m`-9v{rw6qR>x*Eha@lJ~Tf9w8Fy0RS{v21|j2Pl%h~1d{doscCIpWekTE<+qgCzc!YOO4mbMqy(F0U zJOugFY#cp<4Lb=K?oJH z6{zO+4kUjaOO`MU_L?B1oaJ5=x}asVhfRB{t(B_s>)Nc1Bhc$0_OAwTRoJ`Bkf=hn zO6-R-Yn1b|P#tzY%O#`~;NM#zi1l0Q@Xv2sSUYJu+}y@zC?zeu^OEQGLF960dw{R@ zLDa@B8k)~(`=#O=b92LIwVdBY3(Fo`nlBb7JtQos@o1vEaB?8(Ap2$cRE*8Rum<-o zBbuW}k1}Y+yxuKi79;#^wfe+r#$`&w1%0hP?xj)Jd4r*n$ z5_V$J(vN!6@aD09CXIx$E$}e z>{&|OfFj;UH*y)z?p?G)rxy;jbDzRqyf}{CV~W!lFqE)^L;eJw$ZQlsH?z?;^!Pk{ z_>gx_MkE-hhSw=ud&N!eaoyY5R7sx%tJ=FxhVGOImha~_WD-^lwzQX#5$e=oZ)tJY z>;7>1g6@FF&a$qlysvYsEglXcegSLe^`trHG z+yD_g_MA0%wo~Xn?9&g>WBFV@;4DvisNzf`-{EZ2fk~P3@-ex&$`C=fFL6uv%;&hi zQ#h}vgY?Hr`X3o43=ie`-(5_vf@IgTrf z-+32&3V8DkW|+n?sj+5XhR`=+EvpjG`SL za;W#oGIp(Izvp4OcG5lTT9AZDROX^L^YOwX-pOiIO6(&KYH1sN+zK-o*H-kO1X{|5 zUhqF^AxTfGE2VuOe`#`>!Dh%V!Or!IP~enl{J<2Yv*W#u^X4{f zaA; zcA4%itNp9&7m@yj@7}d@C&|T|HxHo{u~JRJJ)Q1%oFX9T9?kr|fLghq^WxV47FHot zN&iFKF6;s<5amQxO|%jq&lE)VlC2}3KH<2#F)k(1x_{}*AGqv8VhU&!gMipGQBnJ+ z8bj}r)3dl-$oFW_5SAp*G#F89|2g}}JW2J-O>X~$T0j0UN|tvSetuF}%icPd!%sK^ zLb1FO5g0hyGzGyid2K4+%i>$P0>iJRA_P_@OkJbn;_lzuLNP=9wn!-u6B8rk=7hwA z&%ld7`JjZrblz*`=4nYO$(xdAk_^v7xnEAq9vB+Z!Zhpai4JzWx^|4U3VosVrQx3^ zByCJglJA|cwG2G30^Nyi>c%!*r-Fp&0xoNA3W7c%`~XlVs?G%z@V4tDCmSxmiisg6 zWdw2@u>Z6R)mAA{q9SAhFY;07Q316O*cw=jDf2Z4*_@@-fe{nF_S@mU2v&k85;Df9(-J)1k{ z2Wf@27%Sl2*VmpO)Ztu#tY+)<0hPl?cgV*ACQY2!~Q%BKp&=p5CG0J>>5sT$C3fm zc%6P07N$NvVD|eA_Jy+{Ni}Pz&vqaN@bt#bn^D)(0&|iK;W9Q7OF19zvZRlYkb1CW z#NggzQsISz8anD(w-lbARIh;ytqSrw%mSB5`a1X}RAzw7oNJ3?aL##5v!vJVa!si< zB_uTWQMg>+5x}HKO8+?zce9MJehZ0*EB$li<(!Ru_k}7txuTW10-$DD105 zv^SyGW(ceeTS*`q5EyD9(-9)|a+ZbpL>q^|vuDp9`}>z`t}S&KG-9Z$CGx?b^?!?~ zXoDY}XDvQmVUi5Jg0XfqJ{|;91#r{LLJHz2Vr~s+AutzOKHIi$&phWBw_|eVhtd8q z@~e*ybWrCVzHBwhM7{Dw>eNlQV%o`;qwo&ZZBMY_pf%xqQjgtq=`gz_n(yNewkcCDb?K^j;6yuB&3#7imwz7qbpah5+h9* z+M>CLTF$^H*1q5tnieh<{6LUvZF$$wH|Rj34tl~rB0|%6AR_kH&{g`rtoTIxJqOXF zV1t@%bY1mF`R#C`L!Ey7j8aFoGoQj+Pl^K#C?8!kn9- zuRcQ|Z?@q)=H;#YnsUuK$2KD@X*}Aq^vGxYEW3t}?Un}>lvFi-GPBxJy(ssL9fz(l zwVurr6PGAcd+o}8^7I2%52h!s@$#QO1$u{WTe6-Pisx}nlUK`EW%2fwhP;Q~N1R|}K_=&1k&>cCafGM+to9@|x>Mr34XVH0qmbrlkK3<>6*L4K+eUfd+n3_3 zgg}0H5hwxa=77+l2A`;f`iha8JEz}qh*N?R!$;Efnxj03FFQXaJzeS{GnCak9ymph(ZVB~1$zLW9jQIQ|x9a50@dn2gu0m1WhYxsfq zmV*K80f=M}u{@|qL$mL-!Aw{9-IFk!Ve}6rTw2+#pR6A?#*GQfk(Fh3Z~JPx;Qy?2fv1`H*4?jm-#+){yWaAt85Ca+)Du z?r#eoq^B)j?OeBR>8!;o2AeYr6>U1biaTs=HADFIQ4VXN@QDH!LwphcOg`M_|91&i z*VR!Gg&UYBDj`yHFct=m{=He{01brEKnjC25ka|E308rAh+lt;u0CHE<=EBp-Dk`` zUi=PCYKKjUVaLhSn3U}IRVL(IIi*V03r9o$obz2w{#OwfqX>%nJ|dUW^qLt19f#Da zSuni?iiosoRaC{eABol_cCwdkjlUW&WJ}quuGkYr1EHyQJc8wDxEzvLo10WGz;ehP z91>M?b8}Q`YLm?Y_=rwjux}}u{A$DY`5+pIKECmXSj;{sd(VGMvprVT=QM6KrS1H# zaxR$GuxE95-m&Cl$03GCXS}_J9}0cxSw5L&*(h*QokzEIdVaEBWJ1j?0a5i1h1IMc47byJV+k{lr)|U3(X{ctnaw} zbg@PI#O*V|uTw}qq|8jUf4wQxy4aDRz_+>}DeLQK4?*qHT_XGh_WuPa}SL@z9? zKVI(oDJYO_+xBzx!di8u4{gkP+ijMh z-OEhhZ9WAMHLsqK&ox}1c!<~+VNx3B z69GJqnwI!GY=;=@H!si+=iIlOJCT$EsU@>mc*FCJQSUP%OsNnezo-=|#H zLfqWe>)$Qdf#W39Xd|pAchtnbgyK~0CU01c$)3tei2f8fw=V!Ua9r`D)x#X?qu(0d zq~{bWFq?UJco33l;1a~S3M=1<{{W^fuCrRa(-hPBMqJS(==L9zeb-sc{*wK`^n(3u zSHJC0_!yV8+m`iY?3+j}_E6Yb!GIg}=02$nWEbDoYdy8)*THd3F&FN90qQGLjwL5d z0#}he$_BYA&dZwbgavQ+ReC$i{@#5nGf8W+KIs+5y|v^%;s(a7KlVgTHypE#(6NlC z#yde}gPJi7X@>E={X+z>2h0+3oyL9P3)rvhP)R|}9);ZFx)5$Z3|)FJNql^@apgUV zA1QNZB8+=9F3>;HykjfYv`~Q?fLbOhF7C?7m(Q-4kiaWC9PKACgtLWYKfl8>==Oua z(rQxvl)YO}{OQxDCLE$6PZyTv#)-LP;B=|Lv0-+Hs?Gi1#1BJ)c?s!JqKs2htAoA( zuWsQ>vd|2^Z{_Id{=pr)N_lT)slGUUYcn=yVyG<+W?U})r+;)aL!7SvrI;DQz~{Z7 zK{3AJFe9TI`bOB#Mh_Cj<^LZGl)a@cE78VgX?XqGAl8WENRLNPV5qg`8Xuegljb2=~kYJ+37FzJx zBn+rdHDD2ShRAMA(j!Excmt$VRQ95KCKUVG8LNDI?ihx=P%9Zyo z>3i$9RryVOQ+&VjAkmCQ_Paf++U9%f*xA`3oy~QaW4WGf^b+75 zbT-Irm5*+*j3yW%EY?t7Yj4#2X44-9ulMdVEff?JBZFl6AS}cfK8L<)a(d+-VU87x z>;Hh`vMp|nK>hFzaOnHGx+5?q;&_0Tn?C%%;IRt2aSmg;Pa}egG_PL0Rnk27PAV*c z_4eMqkHg82Nqud+lYCL3u-3SfL_i=_-`{1eWUX|{Rr5G5`DP;nGxMDbD}qW5p@S?J z?g-vHcv?oOw;{r7(Qa{ElRw4p43SNTF@&h04q-!snx$=c-lk27nvlYw{W{~i>J+l9 zZEJy?@Or#lK-8zt(ii-1&>yN_FDog5pGVOAY9m1!EdpV&{a~;?-$2eWdCsnwe#sI7 zA*b1TZgP%3;%V-8WO)+`2#1`eF~PFof5QNcwh%=e@%F{b#m>N$^AvR-Uc~q46%yxU z6w=ev_wZUV!}jrP?eK5y=a3|OVlDxW5mEl)v@DII-35-cMaw^qGIK_)#5it17gMIk z$!Ox);YF9KnnX-<0^Wxyf~MZoawSnJOWq;TcxZ$lH`u@I8bq!xL-cd#->Ff z5O;lOX7**&HXk2r){ri>?^`xC&RB|?rGq9Ljs z!k-PVE8s8Fq<4{tT-I5~l8c9b+KfrvA%dg{E}^@$uW-QcP`)0YOC|iA^Tq(1?kqsAp5+4K zewn}mJgev^>n7xJ5)9xR|Bm2R+)Ywgd&zLqxX1aFt)qugXFw zMx3BP!BN$IZVh(n$6;X;ALxjAW_VRjEGM#XnLR6W_c^&@q3w z_EVR6fX*W#!sPVz^o9}}w3+z9ZNeyT0>o?|hBKNJI6eP+Yv?Ke=c^8Nhe&)_GhWbD9?Gp8j2;KiHy5Zkk+ zxxtoSh42$Eo!9wodv~aR_rgl!w~eRTT6Tzz+vFNx2OYz6F9CZJ7C}N2{H5h6gqQn= zF8k6|4y?{|qqTXkv+U-D=Ks@-?ijiTdw&q8{%#*y_IEI9b!a&HVx$yF{=JPjO%Srr zV?HEYv=I7m&&#Rfj%&`&)i>KFMEwL3yqu@+x?C`4bP^*tDcg|m~ZitVqBzQZWA`qq)(8ohY_1S7X4 zqCvugy=G;_Nx?Tw0#eWN{sBBb;#@(QLHN(1y6U9~3<|me-WF8`Av@$-{+0o$N~+>d z0?ptu?ruW)ii{E=FqlT>xL|^%#on{(I^V!o{Mzu>+LUuc^~IfA9&D$J_m+NDv8OEX zdZvM1qQ&(I>lCr$v@t~;B0}nCvva*AO%gXGZ~^J z=(m9b=g&1JA?*##y0l3grW%F)C? zaC3y0H+XDJ51AH(RC#4_o7+LsGPa6n4~dO}aeMhUa~s_BABdJR6r+$S9e-EpV){KpOB3Y zkB%PWj{N$J z@QK1rzyFf^^#_cMk~>Xk&fdJh@#m8UZ7x&qQlj7ED+&x#45cpV)~z=I9Z=EGsFov? z2FnW-fE%Rs;N`1pYco6{QRTp^3W+B!=@v!?*mM+RnEDiC)}RNthMXES=g0W?Lh*vv z(>;IkgwW6H0l5YGupKWPi1z}gB7k71rwJVc%B6EwV~<-i$+iuCiG}Ob%?*azwSAMO=Gef2^mIN5)@@|xQxX~SzRtVqjG@xOHu+rQ^`9GJ!b-KvysZ@R z5uJbHXtZ^7PNN<)>?~QGV+S+QJh1I}LgF*M%{Co96yJnp! zHS6UP4q}?C@(CIu85<1s3)l-_F|IJ;s+C~>y=u&SHtxUE5`A6Cx~HK}t>&DqI_I}e z$(&Ax52jQ{TrBQ2>k(HErTO;XH4p+n2<(6aLXt%sjt`i>oUB1V3K8sn)-S3Cp#Ar8 zn|y*7cillW0K|7gKkoN!pRZ`*9J_TpY79h`B~W= z@+=}k3Wt-r=@T}IV7>K;obkg|XK%hT;4gFcG#HF2GN|$^Kd?%o+khmNREM)~RHCHuVH=hV@FIVc`H=4}% zsQaouf0xSwmDI0+1QE-c{ze^@g=$sNM`6P4DSN;56a+pB);i98}J%lb0PWtQs&;WpBw4oTf7)Srnyl0{7CpptJ%1vvf#}_SFdxOIWoC5wgYTm zX`FduE6?a>R8RmK?p@E}38ur{OVjlZIRyp#F?Y4D zoJw`o5xVl9vo`uYPfT9Onwlwt~X;FbZ`lm~f^lg;i5798L@=f=f0?Y}tD{qcl2-lWc~ zZLhE0J>cq&sjfa3rE29A5_;AYTt=gr+oklEcmLUiOgN7E-Qx&Nr{jUndu|zrDJdyw zDg(DkZxA{Lh|VrS!U5ODC$KN=)6nG>jDr@|`w;h}YTnp9@OktiFfj6RC~*jsn;1t! z%ws|0qu^jhLDu5Q@LX$Iy%xW>rpw*8Z)NXB%>@;$@>+e}I5&>ZPjxz%X%JJdlE_TF z`NIcpuGkrqhgYr-Wbau>&tsKRh&Mqj;Q`l`Cq$$JFzz!zFOhCUWY@q!jZ;?5#Od$G z=zc%f;2=cEAkhEjADukeK*#lmPy%bJ zn0A-&vsha_w zveqfXxd3Z`R;k-2u;)=7<0G$W|18N(%y$^Kg~(GN0E-~Cu<15O3T`-mniFX^grWF0-QJ`_M^E&tm7SVdAUC zo5%J`l3M%&&I=dD`u649rYPI1oxWMN(P3e7!os?SxV$TWPWe~p=Pdk*iY82_AlotCULTw80}vR$6yc>a4_y3@Je|M&mdxXav@ zoZBHTdV37jpLM)(kT>CL;wH$D8`SR|8e|&IQXCchf02z zx!XY=qCqC;M(pqR&-{H?DA#SdF@0nblpPQ|A(?069f=9GQwa%LY09CmU4A_sA26QC z6_0&mJgR>#XWb315VR^$04iIUHXEs2B0kuV9%Nn{zOK{JT0R zV{0}~&}E#2HiJl;x+h3s@L)`q^Jv`q;Oy20R<2QTnb4Xmm6Ec&O=g`cvJ+Yb?2%uY z9z`8ypJG9W8w*Jw$^d<8H))|ik00_O|G)bkKJY*GyU-(ljtc)x`|Ua@V-r|bSLb+^ z5+7O8*4sJ8Q&Gj=@fM6VOKOTbF0?_76*j0-V+!8&svI67G<630Q=#6QsC~$8`)q1k zPor=?JC3W0hI-qLw74KPmgl>_>z({ED5nr&m!N9V&$VNsyT#0qj;3BxFwKKuVd+eQ z(j|0$7>b8Gwq#S}>vr&2;gmGhcvUp*kv|1d*^Zs&^1>A=smdoptFsx61hmq7AF7Smk5v5&}z>dQ^+{Cu+)R^t-9yNsSI9wOx; z)I0=7kH+k2L_{Mp(}=wWXdOqW?4P<(@jg%1`tsxAn)%~Y(_9zJc^!hc*vsTR7us-v zzF4Cv;Q?)yGgY^{z2&s_p&ehxa-XJ@mt?yMrrcRiBa-n_PJET+M%tYQS&IgXU!8C6 zsI)z*k2x^6WIItvo*_AY_e>(o?J&z-y3B`%PS8wqTuBKz$TQrf8=(WR>Wy-m8zB|C z^mjR)rV$gpr1(QfGvJ=AY4(2}- zJTfyXsY2v&jR8M`;yHIr4>g~(eo$OR>l4TH?{~B20T1;F7V7Z_8F7!7Lux24gq*sb z=^A|HMmalV`4P1M2_+vXgyNon+>BSSy zNK0#5yhwxsD;UzsG)z7*=t!1`5O5|I)w*@-Muy0NR$*s1|2`x#p5^*$Tyve>urGJ+ z+UoMU#m^z8L45WckZHf`>FLq$el(wycs=JNfgjLm1ZN)`Om3N-pMQ;wmFVh0-JUOE zLdqi!IINP<7C#;5;S;|I4`9j42)oUw|I?=kL(I^)-t5#pNhcFaZZ!pYq@WK?+kiK9 zWtWTB->a17A2U%XGq~!ftnU|Gd7C+=>x~wd%BdF$*O&r^o=QEb7J8x*^Im)Qcy{O7 z*?6kwPVAY#r~+5Bq?O;uN^8GN?fhh;nM?S)fHO=3IY+t9fYDr45Q)j1><4}Muv(j) zh=ZvCRcSxhrt|{#Qxdpy0boN)JS_V*fb3*Xr;qv0!NFlS_R?$r z^EQwa+0$<~P~<)we$U+i($IfX2UP>`Squ*BD(V^D>0|& z&7)h^u+&$2F7UfrrzO>ZR@x1&>%E`#fgZtnwdKNv3xMJXB_#-eG#^VqB!mnKuzZS$=&M3xr*Q!VI?AOk^Tyedi(S!;KWGQyu)?3gSd9A-|*7L*luX+ z;siH33CGDaTEm2du=93J#T|_=cKp*uspji88dSx{tLFYbILzzMV=open$-vM68WF;m zUBL1Z&GLb>yv9YLdguuQcHC^hS-M03p!=L*$tvB$cQagJT_kA#ikBsqSG#mS4sY1U{XF}$-Poa@&VLKn z{lh=Yn7BzcQODG6w#Y8JMaJUUvLjENYn98s$?@}p#SG;WCSJ17N1)aPjWX?u=_~D) zAbW-(kp)*1rv}m5==ITxqMx5b2+Z{|gS|T;>9w1_0h2zG$D&}2Flp5&v^z~m0{Ze= z2A|x{c!ARt7!CZO*$PMUx7oT+IGw?|5m;NXj5SB-5i3l29snuI&6JAGMUfo1m4ZSS z;w5Aj-QuL9CwuGtX?Cf0-SjMGf_^Ngm?&SHV^0nHoNIB^sB1m?qpEE*dg~{Bxo>>B zvba$4Qrr9R+G>tX@`+@lA5#>GO63`iWu7~b?b1Ea9DUY&;YaJt@Sl_XU@sG+q=G`C zUB2p#!Ecp991XM4| z+b4ex0&sK&syr$WE~Rv|=35)~+mF(NnN^c~mAB3I$o6eyWJqB+itfnh!~`SDy@H=+ z$xg%G2u?kNo*d~#aAzwt#44^Ow{G8>c42i+iCO)a2%G&~>29@f2eRF}Gd1`X+T6QK z*3|o7v+nz+`=Kyw*So}#qJHm__TtA4Kh6KHjf8_k36z)!ZeILYy=vx4b?&?PP)0Hz zvFEFod#?3Dmv80mCb?xbYc6y9+{^3QY~5bVL!;5rshve;tgJsyJolda4AI{sh`s^$ z%b9fc!_*0iC8O_LbhEO_t|xeN2!YT;(Zgtduq|v;P~Z=)ovUF@IfaZmKd12oqscPk z?{jk_m^Ee-Y+`PH8kM_sSMBF`)0&n#+}43yLpoQ7+yO_C!8BCP`g1I6wx74K$V!b(w#)x{V~YfB(At2S zOC9su+Q`oO2+Ov8u@8jAJsbu#Tz^>;Sp;b5=^F|xGM8?tJRu-zG+$M%M{j+qX$Y{a zgigmRiWysOjG8jS6o3^}Y6DWL*a{k^3e@g5^ITS3BN4qyNM!aDgNgwNwcjL5de;EY zEg(j)#8w&e=hf=!K#Q=idvUh$21n`3OWkEhVjk|_YFe^ms&LqjIp!GG(t_8|*_WCZ zCUS|d-G=>tivZi5+%d-_6$V2tm3+r#KeeuO&k=l??e|D4BU>dG$p|;-`K_Jj7JrV# z4JU#$MrBkev<<~ao|VG&$K@T@y(I5u)@eOADtvo~+}iHdEqW`mAcf2NJqu+DR)YQz zH*a`GDWlsETH4syI57u-0HGsAg?;ms-sH*iN)6PIfN3M%nY?`S4!R1W`L+4B2WL8A z61OR*=<_%qWtIG*^hPB7nFM4*K5Ps+%O&RPFwIAO0oK|N@zXQ4-GwF&tsXlBZe$lg=fuk zU8WS0)iO>M>Z)7CDVz0e(>;Hz(Z8QZ%JETX<-+{@ZJca2qei1OdF5?x^hACezOKZS zC(5?tSbItcwZw|!ujCpli;P#O&stL@x9az7xEAtxkxry}KGagDHq7@v>GI-2-?8Po zzd&c(ks%hJ>NhjZ^V^)PKXMoTAY+y`a%;aS@WWIyFz%FQVWCxILU$QOg114ld(gb_ z_WsQtH=^%0ZQjh=J5l?kSBvYHT|i&ewx%zU&l$4m*&HTbG%C&3?odtD1mu+q6 z!nWl5UUw7i!J>(sGROWbm0tN>Ipzb@#R7KJnx;kB7ax!_OehAfHqT9S-KmVy;)-YX z_Lhu|>^R=8;!yeeY1=V2mW1`6pC0Q@71elHJP`5Pw@^9IiJC-{eQ`!wpnjiYGgqAt zqg>aPn^|h?p=P=V8L#}Ur4NgQCL~ZZ$o_1Ncgo(sxI>ejJ|RK2_Ig!>V_U4aPj_TO zP(6zSeWaJT5?g5AjUj`(?Q)7eTY|Y}qBPiy=c?TpseMGQ7wwklZe~y5a-et0AEo0B zYcF3IdAXj^ZO52(@Wo6Khrz!cuVC&iVKtFFRlS?P`dNe6ZZxqf%iATyUQk#4aPkYa zT=O`!MRL#;vFhQbc%hT(S<-48R4tK8q%$3@qs2(BtPKemP&>5Dz0H9hX;N>c2ES-n zkF{pgjGk2Kw10yv4EnuYw;zQbf9;%0EAo7NeWulE|MVg=@2K8X-@1P~>xcK3S3A#2 z>V&{4E~A&;l$dp(Pjx8(QdW%=voY;;5#Nf1+I7x2gt zVNmA`kZwK}=@k(hGvl*q^%O~>u_ zS?#eR+Z;x|34ck1nR#&!RpFefoxkViAH19VRbpiL>5V66HY=1?iC4w%-)8@l#wvgO z5;L`k`O+?yDugBwG2SQV{=lmTNrfO#j4z=vUwyh4PdIL8PdXPGy)*+id3xz5la&+#h>Q>T?FgkCArP=&#mI1OI^Pii1XD=P4mX6e zfn79XeP%rI_Z?*%dPDIb+~UWzL*7w4oVUjrek?ZAGz{u`lRi?Fs8)Qtv??;PAC)E6?3&N*zj3yscf-qw{%J48JrT zSM}@n7&s9Zchd2r6>r#w;%z|C%QjH(edOdrN(`i#_S%L}H4+|2XqGH~jLGm?ja_td zDm=Ra|DbM}`_>g`6>xBPp~(6UBfs7LNpjnc5|k{&tZRZ!h2}N`&^&R&%okD7P6!-u znqGHU^r2bs0o!@8pJ?t+zqn>nt7|Cr=at>LOX-kHZH^gJmAjvySAvkwPE)$Jg8prR z&sFNuGAbAMSdCee(QL~sstxH+G6WONl;JJX_POY6Ty(T^Zu`DirA$9^kEJZ@4-0aq z0^bPe%e;I}`+Xx#7)@Fjt7=ZB3~Od^zR7+hY$Zm4`C#n_yST- z@Ct$mCxMIz+GCY+qEmbD;Lxd4kCB9`n4~%)qYS12Wn?r+ZE$LYhO;0%1|m8lU;oM# zQhYXKSRazPtJI4x_S6-~S76FnzuoW-fb$afHt&G)E-t~~7rFF*@jC|N5M%H`1cCq< zFj|e!iP{#_H*_Rjzl=7O7z~d&fr#fJnmE7mzQM^QLSaT=j3DFT0z(|r4QRU=`0QQ^QfekcVjq#&&pWY+f3V8&B*sJrsFIGNsk?`d4Zy zkt*NNiRZ|TBw|P*gJ|TN-3}4@3P=nhm=3zIwIY4W>r zh5ZSWygM7n7FvCF*tqFs2WuRe`=&jl#y8$-%hYZaRZ#fO zp_l!`p>k;}*K=CEO(Lp(p@J#(KC@gTCp~2qt#A5+1CTASF?(qcl>Lky zgNPvoNM(kbgw*=$hnu*OkW4nyO^%P(qLr$yuaCj%{5`57m3S8+*cuui7cX*{vx5xd zC)&lNK`4HX16PfKYk!+q#nx<>}oi;MqhoWf2Sfm@J^c%xp>ZqN#qf&J`fm2%i= z8nMY;`P)!o!GWrK`!bB6D8Sv~zOqnHl3(u7#HeAkW8>!Nb-y_<^?CH9+kMvpcXck% z-b@#R3!L{0I0eC(VK4tWeLmrOXz%tX7OWo9*00&zegk6e`@9`C2=@j!i9e9>;1%Hg zx*TAYcKoq(*EPX3Z$V8CPFWef?)TeFQ^sGUO?;QTv%*Ln7L`FB%Q;51e*BBfL`9s3 zk39{UcWI(<#m^4UeR=U0zuXIk$tmwv&$(+*6cN^aNPFnGjIL;Fzv@e^f~D-KYnuDyi0_ucf=6#Hpto=C+Tc2 z%|Q?}Wp&fH1om~l?-i6lC@|-v6zqXVnyTSxS;#>^{Y0X|9qAVTQbp+qR-tgd+fZ`UI6p&)^1Jrk(BQ}ONhiF1FFjlG zHkP5f+Y)b)*`dkKFQCDD;%M2oUY#?%BTFk>rbUk)Z+2L|`9zJ@(tADaY-XNu%Od@9{4qbyh;2^Mcv&{MwbRpa}`BasxC>u0p<5UoCjfDYR?gvf4Z`M~fK zdk#b8^jGg>80f#d-hn}rxdl(pO=S`>xGc44b*_4&|Re3(Tgue#MiuMT7 zDK{M0MAQ;a+&tRD;oT09;Ua>N5xYBH5evkI2HG!h8rx=X+qMl+*P+(M@x~PPBF1?k z1z!y`-u%AXj6(@KipYOB(DN3N7cqz}m&+@R%$%hzk`zqoc-b+2YK;0}7WMhT+u~35 zrn|C!$!i^N`eOAVDJB|ar7I6^x0{&8y3o2!*iWhH1?RGOa>`fxVO1mg7hqNEVR^?U z`b|;iAylZyX``a0jZR>>ozWGYibDqRWH^}yKUMpWxR(=pP@rXa-H&o}cbF817B~?G z;QRLp9UF^$I~2ZzCj(({wIj8G2yROC6cH6o*RI}8?11@szQ0#W{uZDmc;gzu{koYMj?&6vK+3GhZwK;nXOhLHniUDvCv1en@#?UEx zDI?^2-^Y0d@Vg#7$l5~3;Oz4~$S``)rg-B|7+}dq$G`E&zHj)jemk$nk~LNMSDAgL z>}*MEOtctZ_b#$yNLAjBquqNqw=$up*+#do^ioQuoO5NmCo>!#JKv=p z=~jLmVj}1zVVseZmcCQ1T?X3I@!g7{p=BR#yq15N>87L0S;ud@iDv!c+$z9JW#O99 znZy~NfREjRBl%COht3Ju>gE~o1w|3r9#QZ-OmJ!R5Au$iXgaqtzxDqqG$~YMK!h1ax1mt!O2%f8@xpy^Q|5HmcBZe322tX%%%KfjGV=1mGHDMY z9awgJWtL_fD%?T#BJg8DIZcDcDa%3bZ5JZsuJUfwW!E2U4+nkp!G$+zdSaKy)FWol zzSF0fmF4M6MLkT|GIJAtl&$NIBAQM}s64T^EPH-C%+#wwh^Dap{&3*meD5v_!C6EX zt;bHV-fE&dfXIb_9tbT+XtDBig`&uJPGhNx8<0%uWA-o(8`&U1qh;S1romtn<(8>zc>WhXU;rzB0oz`g)5P zvmuItQk(V7&jHBqvA118EMCmPtfgO&TB}0Oe(1UgGcHS6-rGqB~8!@Gz-R z)<=Wf;V=N5xAvU5{g6k9Xp-F%d~!|F_$$u1NmHsUvVXt(yCNx@+8>sC@oy8oQ4j)2 zQd?5dXqiyyOU{avA3ICGT_w`$o960d?s07oH;qwY+$K?7LwUg{eY!PQw12OXr^q zoEF@<3m~5~5lj0UN%)b=bkL``x06eT@@pMeBiaxFXybloN@7MHkzk3U_k7VjGFkV5 zsv80qM1<8K>lVWrqFE|a9tadF=no`V^pZ~q?}W+(l}%_332dJ212KjsJ4&5mo!~}WzDS+?Ze9VD*pNC#BAkeUUM5) z9s`iLE2oJhX8Z;Ko`@I(fKO^YvDAAvnz8;I&;k81e6>e&o^ek1yr8UJ^of-{0R)_yLJ3j*JC zlhzwOn-L8vg5t2UvJ%5V@VH-an}%1pShdlxsvc{Yq_{l6gM8)ri4@c9?myT<*ivcp z&U`>?ioAF(FAx8IF8@dE`-}f}-5x+A@4$m}p5abdqMBpViX*p>JtMLSrp1hv?w48&aX9G(q zE_fF#+xHza+`+YZ2M5iBVi*+`2Sodjh1XV|frTA! zQ@iVZ1WLGjc&H5I()qr#(5mms!+u8O6p^^B{?sK*KPX-4HBe^J6(ivtqf>raR6*1a zRN*<2dAwj_Bakrz0~S=eIshH{=03>9C8)BQ!yK?`AwYy({kQ7%iG@zuFBi0L1Rqvb zp0%`yFdMwS_gW8K$1enBo{Hl(U(v&;6OS@8zo(1E`$%}MpdwI;n}mRY5ZelRA|JcGtEoQKR_R-9z1UQ*R;Rk#V0oYFjmJvfKyP1ffZroBI$=G2OcbI8e zd+UPYD>l4BUsst!Mj>Ry4&W;pTXZW+`2-AYFz5}RDnfFJbdHHSHm)6S(XU~HT^&xX z`ryBKw%O}Z_v2Xof(&QkQXtPyOhRuBb^WL5)wzo2iOU7x?1(g69FK4@4$b7OD&|m1 zP4?8RXarRH4^+S#OlYZB2iBHdk$d)xvH-!+Hvmr}HK+w4!iN7JWnUfEW!kMvhl-RU zCEW(8bT`r=As`@)lnP2K($ZZL(k&q&Akrb-sWj3pBH>xDGvEI9-rt;aU57s$XPirZ zyzdih-Rlnfd}bFCjOTT~_8wEYr>XdsoS57rQaQJ(KIAVa6=f7c(IY;Pp zkY|Zl-2kqGK$r~7%;22R2T@^xAt6PTe4#)xs}y;L0sy$6$Intmu%NBo`uN3_l7z(k zT1s-VBJ4;oLTQD3ZV+qoE)udFi9G{Zdu`ndz2}JA-uM1jkh^qAOKSr9MttFe@CC1% zw+C|z+4T|CJNM&p4nfqFTqVTv0?F$HOMxiSvsIO=dw(C5PF~SHjL7V*!kROkB`$C=MSdeGTI@WzcVy|D#uox~4{x3>Q$ zLS(;r_*}E?!Hlv{I#+}C)iWg_u;f5&QUKpE<40Zj{yWYVKLdv^J)0hc0vP^?|1Xdh zkP8fsJisXsVk2Upi(nkQ3_T!n(Q8Nr0A;RUxPRHmcIM-VKyv9uDY#ky%(k#u^^HkD zfZWT=3z5b_(F0N&OpvCIkhBxRu+!PBv!f#oKoq+#)L3XO@DVp#Z$Y zL{Fcgeu#*05w|^%b>4#}7EswD2lA_jzKupSqN3kiH!R~vR#LrsVFJCm%p7Bjj)K_I zgEsdOs2Tv~u8{CNsJL}MTUmdp2Cy3EqcJ!mEGNpcG$;^NCs?4vI(!1cN2ndX19Y7= zKPE*TD-s-cy=%p4atlNw73F3p_3x@{8!|F7keL8-QiERK7|;;qFE4IP1?FgeFq}Cq zeE%NFVFJU=5&}xf$HKn>P}>9k%mBppf;or+^kncX5gU7eHNJ>G|8p}nctIr$kpXpZ zQXx?EXpIA`p~CjNr)OtH%@+D^(V>fnmFoYOeL2F&@|*ZH_w|F#HJAd7Vwab-|1t3Z zuPo56Q@jM~K{t^deeuKMJznw{hTn0Dm zXkPvYGP6^?CE&af&}cLZ7<1We%emaT;z5U%H)WN`l?vpn&b~fo7|mQWe37pI37+Op zn7<%7J-TJ4fz5Z{!=weItuNN{azMPy%*fa(;4?%l`qBE0RuQqqX7zB~|3q?hR(|pA zjUgsG@KRV=SZ0A6wgM;UGWGADvVUHZK=V+=3^Lp(C<2iQTtD|$g=%UW78VxxVYUu8 z9UReim$fI{w(fr*mfgL6maUy__+`>*sT@AyD>&3aPG$03Y4vvwAQKLNtdZQ*5rcEW zwf?J_o;MBb2cK`ZfE8T__Nwp-+}sf~;`>Z()r_d3>0gi@ zodsv7Kgq9eKrre6AGdp&n$gV*-!6hA z2i#X?AoTN_+qN)hCOZ+g@~KJfkqIojQE%+32en0kBGD%g+?jByh;+xH8c#<9#ZKRr zc=?8-638T90elq^6NA)1FvF}ibE$cZxi2-Mc7iA z*)!FM+BuygGc~~cE2JTUS@pFV(ihFfLph1Kn8JJz)Ky5{HfWwPUm`|Z5S3^%4e7}s z{;&gVvuFj$aDgu7`uRR0q(*!^a4%k@hYB2c)Vn|to~eA-Jdolr!l;P~ zcnYWr6qd-~00oqDr`x~JOYUre0;uNMDiPGJqfe3KKRCf|Sn$Fj2(8E-6fFp%jl54l z34Q{0Yxm&cFjTfs3e6BqjU3asFyCf!%;>5END)c20~c7d&v3{hG)|og%ZOnuJmkoM zX|VjsHH>t>cPRNx^FbGi14S{!-#>y28__U8#{hCukR8@)RSQFi`6HV5M~wtq);mPH8hCA^@R+Xkyfzh-hT{M!LXueP9`G)8oe+W zzoMa|BL-xk%_#dLoCB{QI0=CeUP4`1g6m!Dqi3?3j!p-VOp#X#Eg&>5x*kIiJPr+FA^r>= zInV4gzb)|z_-P@dicPah#9s_yBq4tPuu7QV1cCMh_tK?tpyEY*M~7 z(GTmx#P&GeMoUP@G#n%_w~B@-$VGY(AKEvZk-P+^;SS`s>Pk;TZPg63m zp_u{VYmvk%WTysE3A;i%A*&QG<7VFnE!NNx( z@4=R?e&z$nJdw=BWDyUfJ}reQ6Wd4_JC!WS;Ee+JjDW>6aJK$thgTIZ`K2p1jYSK2>Na5D!BT+6Y03teL| zR#jk`)_{C|7&`;}JO^`Ec;h$D+!pfdYwi`$9r<$qMnYbJy7&Z4)xyqTT>a0p@fqV2 zd$^~-4$}E}3iOdMfkAo|st>Qrjt>qz^R2IIGTgEdaUKg5w$dm@UfE?fwltxyUE1{o z(+S`b%N=xKzm*+MF|yO0jK@*9N8?*r+aKVuv0mvv^kV25$@bU-Nhl5lX2(RLUh#a`d$?yL_{c`OLhYyk#1xO7Fz~FxbnS##U z3qlhqPe;B^XKBTp)E@iCLL^ca1$mIr zZ4yyaZ>tHiB&n!u=j4yR%DDC*M*fS|zxHKSqV~g-9xxrs+i`mMSbn}!6t7Ce|LPTz z$O!5cBo}hI^6iB>VxicVDcg*KYa?K0v$ zi$h{?_6CDNq(Wa@g#6uy5B%S{4PMsAjqe(EG}}Jz%3jL9?lzb$^%>XuF1@mNqpEAu z_VDfb)Uz8X7tI+>cJ|uZ+qH!lanO)92M!-+dz-4+V8)rJQQ6&B zzTq@o?}fIm7uph8nAE_7Spc9v6F9rhju5trXfqL$eiYbe*Z@707n`gGK)m+;_@l5n z;7|a4?PXXPJ{Y??B>pa*!dnia?P z%)n|A1$Y*hwKwY$mQZXR6QP4Hhw9&k$`+Q*3Uo%;K(*xsiQ(O(f_hIR78a1T7n>i( zP~t%~6DIs4{!SfSK8S(=N&W7xeQpnrcX7bIwkvuf77$LDEK)*17t-Z@7&CkXM%BO? z2?H$FP19Uuy*__)DneE6-o5h6_x4-HuG&`p%?d!;*J-CQ1H^d7cfM^k_Ggb5tR zXnHv7*u8kIb0Z8|Ft)PUm?G^-OO?*KV$@dF&)My`q zRSh!l0)Ml1`Y<6V5+$%ic+DU znF9}4D~yds#Na)DSEaUcWs zA@aY$L!$cowa!^h6<+wgFZ%nD!D=NqYmJOvo?fb9b5b3sp!^{IT(d$6x9RP@&Zu?j z2fy-pMJKv2zUr{%-PfseF`ps65p+*J_pRD=0CyIe)wE|%f1`_*(`~&X-}{f*Su9lQ zY42zc+)a-z&#%_X>D7~Q+0|teR;yT;mbsp9YaAs=SU!RLR6n7efW*F!8C@x{u`&RD zBS}nL+UUh3w+W&9@}!;)@>Q~)y8Zacg8<$`^F=YIce>l`=8$|jAmQY8EIZ0 zo~qatJj(9Tm3E}@j8@3fN=UA@PYXg%$ktT-tflYFW;Vmnkfp^0d>jP80~4xg!X+g+ zxmhUY!Av3o0z;rS%j`yGWvb{LEI}WLGbS0M9=v+@wPQG0xT)ZBs8Hvd`B~$0SCzn8 zPs*$9&2lsNZkjh}6Ie zbrWGl^Xj(fQU@34cGP$j)|nYdj`@lo%0+j5QD}eHv&(;Y*G{S!BXYiyDf!YBt*(G; zISb-fb4+FqIYtyJ9{N6UQKM|2cc8p~H*vm$fG?3ONAo=%t~WE-tM~y;QZB(Bg)177 zzE(HVDVI{jX64_-F9_8P{Pla{7OYvQ|LN)&13`C-IA5`Q81(qu6(NkIEw0BQt^z6^uIkU#Ovs za4?GA3@j3$)mIJXruSHuT|$x3qy1&$TK~x>pHX(VwU1Pz58cHkc&5o`rIl5DQPxpw zF<7c7$&{Xqe?1ii={JzCH$#3uW4R1!t;}41h|3f3UzoRfg{in2{f%kT|4#PH)#TeD z9W@ok&qp(eTj)D5qFn6EyBNhYY3ruHTpB32MJVIb@CKt?*<5UlYk#-kJ@Ui-DMM=yA)FseHonD^(Nya%tb3?yTPP4_qd;%i6YbPM&3CVGQfDfRw_dBJ~5B##1>bt`8A#*RO85(VG|$7pf5E@pxQvx@SByE_RH5D19rFqMI%jmAv*C{+W4 zTl!v*MT>aN0{eyt1^!D2+_Zplg1hN8fUilm^78YWpmzom7s%>98V|ga_9l_hvXGa@ z1%5PQGYc^u6wpCPxVQis3!NQecl~UA6c2nCo4~HDA7C-$U!iJO9yB}d>l6Jg1R8Z{ z1APItGX_Rj+rr-K&Yx?8mHE`CHEBOyuay)PwMya(`vB7!5%?exJP3>R=oeHU;i;)% zK-L5*w=o>MKjzBbBVW1AezCN6%JQt^qv}C;TTRwSP20V!fnUy7YhFJIFJ)NzY-Ik9 z%zSawy{`!a`j-|!D}b*Z47ush=E+tYYHIp?uo;_&$s)>2poqPzsDMxaX=GFhgU0~q zc50R^dJ=tMh-?HMB6v%qgHyh+O45_JaPfdS1u>#Oc85m^E)N&My3^MU0$Kr;xD1}8 zcvUmb6kz+Z0||qVptN*i`+~&P>p*=5E@TeiQThlRnbO;`kf%^!8wF3mYd(+}`F!x1 zOaPX$1eqv+N^^#(P#}Oww>PjS5!*8OeC2LE1I~IyIY1ur^_3=##OROTB13iW{FWS9 z5}s9Q-*`2$2`$psJ_OUb<)`;3b4Y`XQ+VJ*0+kEjUmGVYzrhMFyYI2H<>xj3CBy%N znc>;~li(yiGP8%#M*G;*X%By&cUX^gYTV}LCWZ%sI0T{0LSNMk(|vFebUyk8RLux* zfBQOA@Ae!DP&7b`X;F+og+>Y?P)KL~r@XsgtRJZS)?^dNo!3B9?ZmsAFJPv5|2~AC z;v-R6+Y`0V*}>#R4Hh84({panM;i2~kC(YOBtKE6hAiEgGVulV&il`M?A<#nimY!a zo`@g9*k=xA3*t~Snb^E9yabP>1!!?-DBnj4u7O651ExsO4~+XGk(*8L28`x1!e-kg zvHU-67me8Lyh*ZiJ~GxC8PO?sy($w-l~KRa(MUAyIVSvbG+hbhrJSOF_JvlX$j)H* z4lzF0@cz4bO+F}H{j`^wt_S|kYjWpUB`!b@q*eM>A30<-@NA*vV(Fd@v-m8_`^WSz z_>Cjz!0=t|r#?7b>&JE8hYeCYf&CKTH{5I&Gcz+}x_KfDM9-mY{S^S@IiT7B*!nUw zKCnT>rKNrSqfx|wUAy9@q@*-xrgelW22F==8PmcbZTC<0nM!$h263^mbfTiv!1`=@ z-f&_7TTLl`ABvB8AP))xkP`qyjs=(>m*L0$wMMQJ8q;CnqPPtZeXXD?Tr=l3LRX zsx~C6hEmuST#K)Q0Jgec2B?$o!L1)aKWwPIN#Xr%yf*uD%&BP;T?^r2!EcM=iFm); z5+aWg$dA!^>)Ofe=v;J6F|+cXqOaqj#2Norc8+Y;cD^$6_nd=QuHG@b$(VRk^w#y) zH6-kmxE3Kn9eIl_?u*xCQu1Bji5!-5bA0_ZnhQrgV)2Xk>p+YEqMSX6r3PDFWTQd& zZ**MT!Ygd5&j2#atV0Fg0!@Odn%b+NpbHPFd9by#w2~Ehvoq z^q$;;MF?pM!ChSn(Xp}faA4q#c&eVks6i4)LdXnaczDfAh_(L*p@0IXO! z+EgDru=&08;jhDO!I0zKWTwo5J6k@ZDy|6=S1pF*kR1=^lx#^T%R~?By%G(niUyxaT{zUe%rj z@K(yukP2}q1ZMZIScJX`b0-8A8jyIMS$Za*!-r?`6wYD8`rh5AFuZUi&B9}kWGDjx*AWt?r-0*cl1)EpI=~D6BwOdl9bCrq;>zN2=0nMwc8LW^B@X*4 zDP%^C+ZWNsLLO3^+_`Qu!=Cj@X-&|27U=3A+P8$+K$hCs`;<<{k>^t(PQ8CF?VC;W ziWqmTwlMBG9$vU$ohtv3#&oD41^XnkQHPfEpsBa>#GYMQJuDyt~58dHHAYcJ2V`oPE)gVv{mk z9HdD_7#PtpG3oE$tM*Uwm?rujnIFALgVVK%|w3{ZN{7xn0BFegS^0d0uiKm-}R8h1zJ z_O%jhjY?@;d4h(Q)8)J5I(0V}tfM6o%EIv--i`P@5&+B6H!w0u&(FUA#7aD#frx7XKy0+ zaK)6(#FcA$c9dv;RG+GAa%yV*Yb7fCWoJ~$0~~b<(bHr)nwcjxhdl8=!&X_ z#rhRYM6{QmErs(p*qYqgtg0v3Oj zd3boeR2(zooBqei^P(K;TOM!gi$z-pc!@;NjGoZSoo<<|dAO->ez&$j>0qhjJ(xO(UzU}m@wr||CQNuQk#Ww>vZcpfOzp1c5Z8$~Jqw+3gT*9TZ{k?)Ffnf`b%9REvgta5|f z;?EBfgwvpM!0UL>H=BL0azmC&$HRi{vV4BLiC8dWL&@bh&BQ(t8B{ZkzNWo!Gfo&qpf4w0K?!i_M z2Zv;FiE1&gPWz3sw}zG3IMp23QA=JQUe z4)KRPsX4fK()-zOq9ySjQy%&N5cUYt3n#Zj@bJ`52FF)g{+(T+^>0&+&3tK=qic*=9*>_PD!VbSu=sUZnL$c z9bqpJE2sd32SB+A{JxO;4F$JH&D=bDM^|LU{UJDjz!W?PxCt;c!5tYH`LqeiG*f8e z4xf%Tr>;R6goOeZ#XI0#@VWEFj=MwUhnOpOb#;)!b#(rts-foFSjoe%R4`*jc?k*L zFr6U*ixF8!P?rfI_l3*q5!ucjSKd8db~a6I?F?{M14IsQ5EVRJLQ5J#-`1Y)=_DL|ee?T<_ zpFg*URq1C&s1B!=yosX;rQ|v0#@B6RyCEL7R=lb&_{PvJ+@Y9O}QOb8#}P zP9|_jUYas5^DyNr=$HZE5=rrbxRhC-7PZ5(KxN>OZ4aZqCh}#462=UKz_AhoO%oL9 z2$0M83iTyCOQaA105xSBW(jTZcc7v`OCtd?x!utR_NXY}3FHs{HFwR-Op)0#c>A}& z6{@PC@fz+#Kqx6tIDqE|TrVV6wGndQgOGj(Qag08gcR2Xd){0C_)yBqiZv)G=)KFn zIUx81K&m6^f{Mr(bS8-90g4e!?!fvN1BpHaJbG5x|Blu2cisln^L^1*wOeQqfmwZI zXfL|liG`9al#Kk&1(ur_R31Fy{gaiLmA2^CHm^nsUPUoKGF{!QdX-2H9gGf{ z|95^;-pfC~{l+{$wSXdov}TYtm-_N$YOJ6j6O1RLH)kg-UU_@BI7M+55L8_DULJjR z{m*H_W7m&&EsHb3JrgT?qTZv)c&(e|LrwipVNuM%R?~6$0J)!E9g>=4A#0 zcxXn%U-zeAGW{rCFin>H$+W^%S38&bbML#cZG!giI?4qmWtoXz?29R3cW8gz2injaaH-m; z&v&r z)2a0Nw&B6%)YxW*knD8<6l{F7tSm9-yAIz8`itNGv{z^k{d|7*mFv178Y5#V7cmpc zz1WtH$vT(MKQ>EG_V-K}R!_cRZ`BdMSWftNpIm)O&8SNEJyu&{pATMe< zJc_ouDpqj+CA~SkqLjQeCxV0S;~9HoPdU1l?hMH8EYQA|{B|_DcIRiS5^wFv`}{TQ zLf!fc^fF-sU!N`-;o3E z!*vMLYl4~R$lkyK z!ik(N*;UWIsMJ|-FmBoQJQAFKHl(z541*|RXqqg?imyYfh#(SBgTsl(k$0oJ4$Aae z(@Q7_)sog-=oR`)__jbYY&=UzN?I3`g_Mv6UER_K+sPLvj^D#Sc3*qQ&~ISk~k0n^C`>g}2p`})KC)1D`r2tOF$Og|X3y_Q#O(!^qN z@)buKx5|5e8n=SaZkH+fXb!Y_WyQK%IAzXT8tBwC;~a5FQBHUKIp+@+qdu2D!X?sH zLlrvI+?d4o(y97jIS5yekj$c?E30|$aSyNI6HBh;k3ts@of`h25A?K-b7;{&6XdWW zh)UXe9zSRr{$!SIP|Ti~@%{1;-&pIDgjV;tc;>at4Qgh7PfjIH-)QBF9{0?Dtv9JZ zJ6s#i*yGnVx8USfuQ^rga8qFh(cN6)&*Qh~FX2ch&Y?5|{C6M|z;8 z&D$w1ZKF8A;0CeytX@vEK|vYQe~JeTHJb1s&6v59O3yP_D3j;fDC}Ec#-OIJzmdpr zUrQ?;kR2d0e1_>{w1~AQ*Q~L69JMKRGfealhjbQpc3Bq}eySIoC(qh`u=*so!8VY6u*~ExG_&he8Z!dvY9WQ{$#*j3? z`mqmR&!eCDwrglfnHN081x;bjhu`q~Y#Z*0oYSwWgfdtb^v>H~LjXK@1f$Flb7k^* z0n6{}9SH7JI;V(rS029#6Yq;N8cwKa!(!#f%x?>0zI7woD|l?i%Ae)2LPt59YxqKp z@2%a-xEgzad8-~Po?(jDGoLLetjS9?xMgyu{yXq&Hcn>d{|v9HK^2Ke^RAGPm;fH> zto&EQ+DjzWWP83=Ca?IIm$h3sc=+5RXw!cDthTW8k-o^*=Q-?_>jNWAe7GDkhTH-w zR6ND^6_(t6u0-AzeNdM0`L)T%c%2Zg*L@az{ee|3%f)CJE5UuH!9I>zKU49Bts-0j z8-Dk&!P9Q`noZ?j)xYBp8sQf?*G-dT)Y-N_+N>L?RpUl>2>K@q4G5L8VpVrW>o6$6g zXZhVm{OzZxBdm)rtbMYLZ|9Wvl!y1Pz7A2Pvrnu2p0FZw;YH=ou>1Sw$Xy9vj=ho9 z91k?SytAhIxZfV(7c_W?k|pm?{k$RE7oS4UF%)zrNAXP!OE_JG7^9Uv0H+*3axc$F zj=}o5VI;xOC;Esx6P$D%SB884bP~ufk$hQ(!4eS>FFEj-6lEv4xT|?PJQS?@+cNP! zTw&+BX*HY@@+KB7fcohdel@-X9*UcJpR%IK{Exqecg73q&KGj#It``FMftf${hW!i zqWenq3RQ~Ei9TxV?}iB4q7X7g21nycf6qJ|G|~iP!t5zd?1S8`LZ3Ae8m>4af(WDF zqu{c&Vpn=wKjMYB;?OJN7Mj`Np0|Ckl*qNB-g5b?Cx?CG@WXfY-C4@R+$YB$d&7EJ zsT%BZJ?_OO1ezzU-6|W)3bAq?=q46wNlxcHy!&v^fPMxgp`z!x$Fldl!QGorTGrIV zWHn&me`-T#5u<9-C5@`_emgbWFg+(xHh^bCk;#rJGlXSv3jNOuMFv7Lub%BwYOpDJ z>v6YU;*Ghv`o^;*kg@k(TtcK+R#V;==5^kP0=-PtVb$1Y&F>t&(P69XP-HV2tT}h6R!2wI{j~w$SMs|i`LCa`lMT9L<)LR^q|hQ!tX!;k z6r7;OV_wl?v0STHMc>`7FvyeQ`MFrHlbB2vb1{JJO3-<(iC>vOB+Fh@x}@@%cOgOE zk^%uP0rwW}QH-V*n{SVt>*}mb0c{beC>se}hHQ0zS$xfCv%s;NSnAWUeuFL&0h+w|`R z9K|={tY%>+*EAa6xJ!Srs>qZ!Ln+_6UGc+%*ovEam&G!(WrO+d&?Y>ik2l?0BX6uw zZ{K*<5=OQ-#ia6k*j4zt+Tg@t#5Qx*TELj~@h^M%bK~H;cZ_dIbjWk<>&VrW-*^hh z%U5WQsPzk=^4Mz7IQpo#U0L-1>j;2NH1I;65;L4PK|^)t#~t0+SW0)CYx{HBzjopq zTNIXs8~2O?-&Tg7Oi?UiV4ZTlRJtId*IjaVk5-&jBAjWUytw0Gg7in+`5Od#6=XQ0 zC3t}wjFRyI2g3N$=b84=r%{%Fwkq!evI{ED7tP4LxA2sMMPqS38cVE6kn&?O z^_fFv=p_v%yZiD)&EZ!)iXWz0NnJ?b+gk3k*N$6`?1{t(vhCv?Hrr> zBy_Exnuai(+l5W5z4CqPe1CthH&1<9 zFtK!>&CJGM!3`(E_&lS;6)1&axi81WDn2nAK(Fgg^q8o->*cHwzHtVwUpi;rxT4Jo zwdH7Boh>7yJes6@r+l-v-Z#BlmFX@qfArKw|865g zP2r#62mB(P!R%;$lTL0kdpx#Fja0ImhJpHDT!7bP5mBy}axE)Hc-PIiG&#sz)GnAx z%J)R3%5;at?^^9jNwlOL-pbgiXXK)0#=PHx86M#=)?_(eEnwy)LWEWt9{0YLg6T-8 zJn`Q@qJK;005jvBv@5ZUn6tfxD!EC%H&(FN0(Z8Nil;7mQ+T{-_iyjL%Dl1-%z+V( zGmX~FgL^Y60_8G?xKSPPlS|U`r_7QHa?PZj4o1KD4_u3O8A2=cBtp#lhEgPlO`BwB z=Jl94dtOBih8OZ@{rz*c@}qhOGKDfbG59ymW=NG~3Zi02hc2G35|O3XFf4S(wQw|x zu$;tPDwUrXxTkJ+ezd+2JnEuDjf|obnMHTO<<_;bwlwtUwAc_~PTmp`2~oBDQ*|m(aNGDVK(>eDj{V;R>!Vz7q}8 zbbfwgc_&kkvcCAG(@+}m1PB?aE1qHq;Z+p%y)KH`;iFTia~j})Ev>WRiV^tQ6fe9g z)O3+;R8~gT=l7T2*Txhg-qA*e;@}Vx49R zXONJ4LvzmSoGJUVf`^7keBKR1ZY7LI!qulA{wPc;eCs?Ud6zmCoSUx#R}Toq*}KBV zU3$qPx+zNggQ}x)T}Df97eB)f^?B-*&%#*K@-!F=-JxJepuC)(2H7<&v4iE$(JFGo`vj|53` zW!$0tmT6Y{?%)N?U!F2}GBtH_G!==jBo>f8#omsQop$FoS<+8pOt^4M_W#0v^T4hK z6UbL2y&y2VST+6R3%{%~G|Rh4+DUJTZuxR>*ut}lzN(1)A8Q5QejGJ5%^%Rrh~BuG zS`u|>L&+tvWk^7maF73QQ^^yxWzm^d(Njw$`c`0`&EvIen z1!i$KBN0vxm2d*t^uz$cD1E=0&&OQ7;>vALxI)-iu_yzpxo85H)KCI7!+fQbIP)Ir zuy~A{zEj54=vquWKCUtWWxHktxOt|j6eo2LbdsaO)oG*rJQ**V ze-4X(zOG`_vw)8Nv2h>0Uc*+P=0xY}qj~@lHZ26M(8ty*ZCwgXZ$KJT@8p8ru zd%*mN;F`fRLL>$%C&g7^q8FIPh;0^PIW2Ptoid`|L#EQ8;d&1dUB;B+Tp$6)gR}+E z3HjF52_YVNFV3|8H|mVOk}M0uUZgWT-HU5zf$^Ush=PDMK?XQEmtj@*dSmA8h80b} z&hh49Y!qz+r>lq+)zQh6eM1N!raqprXOl(6#cc-9XO@cNV7x!b-M5!)W^O(Y+)^1x zUu)#U_G%-AR1Cy!8~eu%U5rEC@4QosWEb}ZGf(Pq^zeA+A-0g_l5e$iHdJa8hZ=Tas;y-T4AiO~*lH@YUnU0REQ+ zAfBiEf;sV@Mi``X@sJmmO^Co)LWtKtMw2Uvfh@qT^rDA&p6BbDOXo}02+e6X-0ghx)mlIn|%llb1|=@r|qhqYbAsU#sqi`_dvSi*A~zMo*R`QG>87Jlu- zi{xRcnRS?JdklomV;0I6=GafQVnfbCcE(r;lhlj3o9^5kzNr2~iD!yolP`H++DiDp zSUNd! z0ij&MM2gi0IavOI3-n`X(of+$|M((z2@|Z0YM`|uTxy2_>1(X(DWFlI@;Y@q1;axr zAQ=R&6a$urymg4tE!qXu`#WG-Z@us~odyeUu)sG0Oasmv+-Owx99XxHz!Rn#&V5uA zWSD}GkKiKMOfGm2FBBOBfK#ggkX=ZvXZ#HCJ)Mq)bGQ`SsIoWph3F|Unu_+f+VV&6xLn+e}&YtGUR34ZYMTTUAYc8fLBlm4!H2SQ27?zrRk}uY^F4M)@ zADxb(u1C%8!FP)ZrO}k->THi4(4<2X6UmRS; z2wEVw?!WE`o`h2WyuQZk&!=AjL*!)uTq+0AVQ?%dh9_7ntt~%>Aq*1P1YTjNZKTM& z6gdjo&J?hi&hGebk=rpcwSYbgbtFM&)BpCP~Vzy`E(TPv`@GeCsq zWZlfEJOAzW$%lxPlu+2yM{cTK%}phnG-RN`!h%9#^5Zx6eI>-!hU!~vnkzW#hroe= zb9RA#0n*crK$baPZh?;kdchtg{et|Z-im*5!3tElJfI|1gNYpyZUBD|9#HFBRo6$K z^)T*V8a^7=s)q0iH7zY)_|7n85LGpOU_p55_ii##qWSa-#V)b6it?#lYK+}`xgP(C@$3THYyCuKYW->n}zz2E<%JtrZSCi}p{dg>(lr<`IJX>TUT-d&jP{r+V`ZW#|=O# zbp+dHWC{WWTPrLK6&pxvIBWs|74pmn2i2#+Vu75Dji!}&!}xpNdh2SqXx)&@%nIBj#gPjMr6VL-AAt}{r`oKdiqhlCcw zKKM^ET*$U4OiUrpAP_3X3t(M_m=z#3?kpSxZU1`fE8}N7=O^0>pdQw?R#+22OhIe7 zZm_ergHA_c#%oB47a{WgX=dQ}WJfn9-k&;cmUMEH{CF;R=tk%)jL~@mIbb8#4(*NA zwvF7Mbq zGc%OZqz&^*;P-dRU8Wizwq`>FSg{x)x-Mk;O)pNQw2WI_`AsQG7l3`0R(ZjXkM-&u z$d;s26daKmr`_j<~fGs`eM`8CFOd1T? z&pyrv-EaUSRD=%;5j+P3F~95{!TNsz$8H30s=&O+2;@b7zg_p=XGa-Oy^(@{!0q}2 zb;RXZ!wXm-AeMOrei@Ix*15_hSo(AI^OK^|_N~*d0?-H*wn`y`P>&5KqQ2TR$y~rs@W$!}aZgV@q zB2A<{aW>&-n_XM6FTjn=1R22!{omAi`wO!G@_JaX-@K;#7KwHyi_bv zS;D0E+B}sCPj7=lw5-q$7O~GVafgPpfN7#&{NO{ixS?PlF^2Aa^E-3vak<)LmQr2m zB(&^vOu186(G$X%v6G`*Q7CDBnV#XfEEc&Lo_d*O0IwF2r! z6JIBw@E8&7^F+GXL*%z!XD}RJA;V*f$3DR_Rl``GwbP6wHfXXAHNj<+lO3-voK@6{ zuGnb37yHadS~~QgY~@Q=qcokw4k1&pc>6$WN5oeY#{8BkaqdKrZU z$Q_(Jluu1SP7wl3lX(z!H$yuGi-|P1r{X=|%zKR9rgw8Dd!QP>as2d$+bVv)OK6h{n9nd@9pma|sscD*jBgk#k2UQ}OWBI3~~%VQ*Z zoa2X*r_9ab>I_ewzsG0;S4^Jy%xKVm^89>O6zp^e_lciB(8N5t?}G+i-PD?6FW5YNEjdd;>f5rOm@rf3~`G}tM>n3|xZrD%uE$=GDb2KXHKORd)fHdhxVy;rk zPkN#-O{}Sy9~>Q9GB*8cu_`E({K_>@-P;$hAw(GHWi(6wnZuWn!DWI;ib(p?*}ioL z8eet7%r`E5UUoK>2lM8f(yiYiD5O z3svuarrf+2QPjp6X`WGX-O)Z+CZ0Sh59KKfs7vpUuqU}CVo~jOq|l#WV3pjCb-^X) z6n~Vrr*Wmn^wBlCLGq=u9U?38+2yRKbh-jHo5_93L74xAAGZaMi|`m&v8~Wb59;pG zssyhD3}z>Y6Y@p4OGoUu z1(eBylTAhBk_}R9xl?`Ow_5-rL3XQvz28t)nKUjqO#*_UI~@I7;A+? z-{9UMIV&U;Pqa8RAonp38)Kg226ejB1swnP(v*87^6p^{E?BpEZ;uB=;}Q2}w8a0a zjWKH`f8g=KE4$5%URO^ixxT|LDWm?!YUq4)<<$t@Y>CS^mgah{#gd59={K2(B$U@0 zGdiVkHt<-wPd#zv5h;m(%7o@&D&{foK=kBkr_)8wc&&Fqsle%sGUHp+5_ zN`vt=o^DTC2`xOo7t(v65UIQ0kF%gOUN*c>uupKGKg@&yjaR;g*^xi)`E4REoB0mj zx5>#)VlqDA5i%We=!r5oWUD^G2XY&hM1l~Ao@PZX5ycefv)Jnzco=`DgSw7`e<4yS zz)fJSsN~a~7MJ{sF7v4c7jL5!*Is71?I#`iREv6lS=&O={j%aO_m4|2icgDqDn8g7 z6Z$k~`A0+6*e|{%+bo-JU%C6RF>ehf9AK_?M+UZUYb~*w;7eTfRo&ukt*ULbx?D$b zNk!N9cS6%5e+!PNi0M!dpM%-Zwgd@JKFjh zXlZNPH5Hi4LyVEDb$=&6iSpJJpOAvSMw?G^PT{$&-fJaIQYxbko#c|r`{*MM64c6e z#XjbWmuV#SWKxEFI{nj}qKg9)*%bi2an+ZM?Y(X_7}0ArOoYvc_u$mw!?Tt%CCiS% z@cy>0CjmH#?HIcO1SOb@rdYBC1!EO^T*04JK7HL&m|xDQk0w*4nepiox8^0XD5nHn z*UC{pL3f-mi<^s(rNUJVO8zIw*QQ}faj^_25I|IelooJ>TpU~C&G}CRQlbVNbmmh2 zZ!jbxcluj7rhc+~znC}o8)m)!(m=8Wl~W7Ie^FbA-Tt{?oiJJ=pHH(f-e;NO(HKY5M#=mE?4e1Rn($@@p zfRa|V0oQYX*1cq|YsE3n8$dNW~K2KEKpnIn{NJmIb zw!aWeLo^rmlfU(s909T1dYk`rBpu@`#b236mpIGX=KUo*bR^!a8a^%NwyKxVueIv^ zNspVr|Mbd3jb4itO9h{7LWv_R1-{wmncCzFvw}!51s3jK$W*@X8Ny_3p;09I}T(Tl2%PHs$w{BH=-{n(Zx zsf73bvF^tHY-8a5{tEi<^KFFH755Nrp$!#Zh=AVtG6{RA)y^aU(3|L$k5Q97zE0PC z9?tvR=ZTffhZ;$A)+i7>BxrDVg1ZmygS)%C1q~2_yE}oP!JXh1 zTm!+~-5mz`n)9A>zPs*Sw-!H{H8tJUPgm_{OPCQGu7D@YY?UD@)LVXA2A6#VUJ7%y^EqkguRZsPF$1TuK)+oXKw4GpvLg#5+bnpl9o-OYjnTW7fOtoY|SU$*CS0)FN? z(g*mlctal?Jtt_u>f;+A+UsTnw)cE*q94HHrV*td2CBMqyUx2Jr~lgONA(}%>Oomt zCGW(+lBr>@u_Irb7)QPKJ^W}@mj zRI1{?E~CROGP*6kuST5=FT43QPr8XnESC~3Ny=}7H%$s@mlAa?WV6%4yX{2{d|_ew z8POYfnM+`DXcKJ2W(j@jN46)^cy)L^PQx{QTE6% zFR1hakYBYpevXWYcoVHcbphPV5TKlx0$N0IksH`pSvu(k}AMRYGAUK>gL@^sO!f z;g{#_fI@QdcL%l0-O%npInV5h)F@dH~_5}a`*24GLH3++ww2oW6qlah=Nv!FYjAo3vjf-2mGIU0sn?- z-v^f{0`89hoKE3)olk-{*0APEnGb;DfIo5jO=jJUoXW9t>qR$;Bh!{@X7cqt6GYid zI?17IBG}7JiSj$OBdjz=<4~3mu9RAs0NKs+uMpfB{E8t&X0IG^BSu3~&bg9L6c#m3C}Y?o%QB%|>Ht!@*fehHErsNKniJ?S2?1^9ghlnHF%*?y z>qX(5VCz3LX_3TjyGp2B0N?4@rEWWr1IW?Js;XN{zX5Ouz(ZS~BP8>Qy&&j3L_N3s z=@)6&E6qX_6o0N(6uGFMQR$B!adR$b2;Ozv!!&IH0%6(pom6NV&AaaJHJulNKO(x1RygDm2%$-;Py~GocX2f;qT6?8}b6=6z0Ub)#}VDq82%504#;_jEUYT_vgvZmp3&TE+}NG# zacl#xj3T?@7zj|xr$5wOn_@wah;L4+ZvYH{ZlVBUMxg2S#&-ow<_bPsgEYTa0|MIa ztO5Wr?YRN8JM};^j`_3Qn^hQqr{n=jOFAO|uXn8=h+oU2Va^r+&H#o47Ug`0c?4z#XkdJ3L%dz?J0#@bH6C1s7ngvC@u|#ChR{FTx=L3L>nTdW zL=cXM&+W}dx8+($%;kaBiZFO%VF$&N~GPuOd*!JC*TYh|4WGx z9!uw3&)<~}l>#GgC%7YXJ)h-<)S=BWM z(`cuppF&2ITLMfhZD4mnpSehZ0?jyXpCLaQ?mHVir9S}~v`(cd8)iuxX7*S!oG3F5 z%4##>%G#I^h&-d1`3Es|;Ez$vog*TV;Y(IT?R+<`O&&^dp7OM$X^yQeo=twqO?WG? zIfe$*APn7&_Dd{)H698sOPAO>6rdVHd!xPs>|$2Hl>H5uYUcuq<=dqOS|`cFvTDCH}p({vAT zLiIoE6ta+g=zM)&t^uZcZgDC+7?_hmr4M33)Mqk|8D`0S6${zF#F0Ph8oyfStN1@Kgcu zTi<{p;pMAvRJLOFqqX|3z-DZ2&oM9jIB=I15vUnrK#&}<-@WnE)1Hvx5WCrA_21`B zho+}e5l^oLwyiB-_5FnOtsE|Mt;|9MimqhX{x!wrN=X0W+zy)Y<0IHD>$^xoJx6tI zS+`D3Z}>Sing(?GgJIeECSlnp$*R1_tUnooCo%Q4NyMg=BUhHFx@JvP3z#yB_d?7<=6t>&Hp8mDli{zW8%br$>%$(FnY`zr|(z&(2t2-RKy0qET0#9 zUSDH<=W*tM*Q7(C-Ac300|HFO3v{k=U3B$ zk;no05RZ;&tfYxQlCb8vcK8z~=aG($Yl5~|BmzB1rNUmlx7`1U{Y1?b z7&J#7m|dv(qgf=|k9UKZd{Tj=o)JQW_viJt{y~O)NsU%X4ar8_g!OGKA%ImX78ot{y|< z%w)ZVOGpwX{;4+9%wzy7h(KgDrn_3_e_43&(wkEhShGq>}0lYp^0v6Zprc>0A|0WU!_oess33|6c>d+|19r=HuC~mZ#%>AWNBmy_% zA#_RG<4cPKjoWJd;@YK*y9nc?pfUaCd6kX+om*UHn#wB%oiu%l75UE{Z9J$u>BySX z{&1bH1KL#29^W}bi#nYu;wDaXeALn}jr?1SFXwOtf8c7tksNMw* z(b(LMiCg|PST{m}SLleb$wM~|8tum(rF|YslbKRRjzbMbQ;#anAV?X8je+AB#1dEN zIDIU#<}h|q!sLC(2vwmI&1KtPi%Q#eF_lR*y2Tm$@7t7D^F6>VA`Lw&ZH?glJT=>g zD)g*%lqGfw~I)4 zFICLAznZaQ`T&WzL{X$_g7?5;O^%%)CHF?0#m}BFQ;4IqgaZx zJKCJhp$tuW;Y3U5(>6ba9dZVvHd`1+(ftR$f1}#7guW97c$L!a=1IrYUL;(8|Bm2~ z<2XcY*w)2sr?=s^&I-i6rV86{X97z`lvw21F>(wdccQaOK2|Y@%-$^pCB||oeoRy> zpf>AuHr~{Vm-CYrwA}EF2ysGF9GeN>NnhjTW#vko#oI#C+r($qEwYlHPK)1bwPds| z6kARG)KNe0*yzrT!_nd6my-Pk^8MF{j_U2ZjXQ`BD+f~~-%x}NeTkzifFu1Bd|@`P zv6E=(z!NK;T_CSgp~xa^V6sgq1Zl zqY=C4;|l7UYwh`0wg5T$1iDs=M|`%ic9D8@g()W6dVP5sxi*@Mii{_uBH6~#(#^vU zZ$UJl0wul=cxTygLGm3i8)dpdO)r=;(|>5ewGd^`^DFlv^CiVEvl7 zoamBWdB?-yr+vDAnAR2org@Y35jJ@7G}z0P^Fj?s)LPZdS%q#lit9}6n>O?)k?^s= z+)w1T0TbRRb^6t=>re|Fe)7AseV%Ap$n<($)L4(YvvT#H?VW-^A`o-=%uj%D#n1pi>9AL2@k@Oasl zyL!q~C*RgsO`19PGmfC8Dww<5_l{?&W&h{JBL8}X)f;F{j%{P7tSyXycfE1@UG&5j zSl}}#K9&ZKr_u@2zN5I>p1cXng;Q%|zC#%7w4*4r+dzpXFEolG!;jVx z2?_{rE7z;gBS_F=#D@(PYw?Fxd2B+bV3GZc<#@`Y@)ca0_+lo!Qzsrr-Y}SHwQG4> zvUto-aI@aM?~)U|U`5}+3mp_(L#l6L^5+cp17~C`?actVuYkjX>K#lG7Z25zU&iq4 z8F3*h*;S6AePv_7dM-m)80#6n3OZ{u+J&(9swE(9E7`?3>e}Q z0?~24FE`|ra}f5mm~|ASW4}@{8-~Sra;GDWfd2VjZ)vnlczPt9PXBqk*@Fa*dOX(9 z8%{kEEVg}prweFUrgzqIY4enAe_%T(5;nLrxY(uQBRdZfzJ zm5TTWFT##gY)H$*e_pKQxM#1fru#lj6P>jpXN>sxiE?v}#OW#LEPZ}iSi#>#MbaKZ z(+5@(AM&~4LPb){UdOnhu%l;~HDztsb}?WXA!gJl)LICITPEMoc{x^1qR@^T_6spZ zII>|kf9lXN@S0$A^nu0V(moG{rFW>5YvwQnK3t2)t)@*p)m5v=0PGbu0RdO8S;ytD z!%~~=9sNKgkL3^&16TL&_a_;gcdP|>=aGc$6wpsJ= z{(NC|;xAV#BlQX=biU+MPF+k_-zXi@VVEZ+JgYJ~??UyMDZHg<3<}qJM~7B#B8-F| z>y(6IQtL0dWAG`pVJ-<+tQZ%w4OTwqQ-9Mq8*gIP9GH!vS!s-DO^7_8MvYpF<;Kv| zM&*;sS2Uru^N5N3oaqGK?|#w>frmGTj7f;Al=M~ZR zo?(of_l;}>7AIkI5%GxO3#K2J4J-hjEW5sazh$x==xLwg>G7NBsK4FEOXg0(!ce)3 zX~!JiBk8O^zsVbnjC#?MQCY;H@0^mP$34<%o8~s}=3LyTUGCUsy4NN!95wPTzO!P> zQ4<;ZKKUyb+i@6xhLs4SCFmn+t&V+@fO_%Z!dB_`JDS#CJov0(@|PRaZF-HCVLpnH zXuA`H$Q&$a;I}+}pEa>ek%H@JvWzrDBkR50vtD(x^>|2?$uL9$SEIS^y?4Sbl(Xs{ z?+Hi((mey{3EX#ZUzvx48nB{A7WLZyC1Gtn9F^i4D0bxzCk1;7`L zcaNL*eHN1M{nkd#kNrW+*9V2>%%)v4LZWlTUbtLOuSNso`itDoQLJvKi|^Ksrih^4 z)W%>sU$oTg(^xt0yMbwI)Hh~N$1`vYf^~;q!{FG^EvvA{4Bws z>F9LmW;P}`jJbm+DA}<+xXhmg@eXVGjU&F<^^LjQC;?zW-3$=WYqYGrUX1Iwr5H%w zpD<AM zB)apUs2VF=lqMabX4Yf=QK<$c{AVfX4^4cXHeyShd4e& zHw6kQKSZ$n`FGEfVv?yg5z9nL1%OWH(5!MdBY>C%DiLdQJet-W-f zlxp8fz$4PrZ54Cge?8#x@!!M~LZjo_w@+2=5qWpqq!bkIT!}N!3`qP3#G_houzj1X zDL|f%f=tKDcr9#41~{Rf`3G9cP-#UOb#;pYA;j#U4%3jpVfJbFj7w(@l z0>^HlRqdmcmHUZ1r>lxB{V{c*9&B%a0Wq2)nck*?+sF5Sz6khbXJx+GHr0oT<~Mta z03_#a*;&n9h#EHAuhqPJcvmUOfiK@y9VHnrv~F`e->e#^sjklH=l+W2b`l>7+|=_U zNO4|isg9NADZT&c*{dglCMt1Y49=H7<`3^K22xXU)Ll3QSC_6qek@jKKsbGvG-cp> z0RH?-VpyD&1GKN(>b?+RzutOynrx7_y*wft+mpOr@)&sC_*VlL($lw_{ON$XY8^nG zovVcS&YbNYa}gC^9gv7KUwiTNt8Tt!IzGbr-H}YRoG|M==|*+lyds-F-C~#eLsXl8 zLj~la3iZxtqD~p0E<%WgaZKD=gwcobMhF4yjr+xCQ&Nchwhgv1-Op zYt%^=xbIh{H>HftL`iI{9yN!aRh^m#b8vkkGsEH@ihjKT*VWIu=}5v?`9ix-PmwY_ zoFv}wW;(KXkIL`6TML07cLZq}<)6;mpY}S9`maUJEPrefcSvB<8k{95yN7ezbaI2NlPsCXUVRNfm8%u8j)tkzDxA-4G z*Xr%-&O-~CKXdmff^Ik(zdo_9dS7v3;n<4;q*>y0L7XU7EQMy0PA@ZTATTE!D0v&) zs1v=8ML3&AL&Q*B-3fv`TD5!SWX`|DfQ1Tl?HPPsSX&I2<(pn6Q%u@!c8_?@9~=yu z-8=71fH$E>wcj7fyBGH(?p%q;D`)554x+lTz+cw^S**IOtTuI{O)6-S^o%8k}`m)Pa^!;xn z4{}C9qO&$grO$J+rlHsxsQtq6l?(cnYvW@*;D!VgM%15`ZzNxrEBX7G_Cx}r@T0#S zf-d}SUAm61pZp;Zp*IqBEcLjVBN;`qPb4PI3l2`b)z5a~>CPw%JX&V@feX`t_{4wM zu9iY3K!Gd{6(g^f**{RD%(ieAVj}kJXY=8JJ=Z)>;YYw>1Ziz#B$oWQn2&u9QxoaM zp9P@N0GMgw#un%0!88*A^d49KdMSxM*0q=UUnv0ZhxpZR!fg5cU;O>UzVch&D%cj- zW3az8U3=A!jl)BMn_uUeP7NyuveHrWEn`oc3N#g;UQp%G!_nYBHX*M;42mV`@^7=5 zV4!@(|d6kd+ik7lNz0$@{I^RMz!UEv#-KCLcUgKd!}pyRU7x z@GqB_a#k~ktu@i-Q3v-6^O-F6hwmi6I;6yZtF3h*9&v|s<{46)d} zM1p|{4@@ zgORt@YJoPl-k*COf4W$0|6S^!zS2^)cI0OIeCdAP?&GMwqUwIe-^sU>occ=2*IbSQ zEcrj113PKe?BlrKD)l>S*Fa~f`h3uL%lstbK?FsL(L^4TjA~e_zX6gu3_s{~xoIPl zqeBWuASjf?3ky}C4eHYhJNSDIfV zWRQP}JeI*4GwVp+9(9yk>E8mXB^y$$^lEUAMt2J^hg`@UA_wuNMlfv!oXair1IS` z(Xe;w`58(WSTZ-4yVgav;gOu&ettIbjI6F6YF*V_S%l4Qxf~T=j4B1_pWc|kSsX^y z4LQTZ2EUfHVohapt!@C5F@mEb=jnJU7^p+8*)1hU_p5VSt9MoHUk=mp0GfVpP-JIp zC^kdyC?2=m*^qoDx9RlnQd3z)r>F8mN7K``2P+$!9_E)DI^GQ}ejNfmc03%uqUa+H zU5G$=t;(Za;!^Wo)WEXOUVe=;K^mSTgLZ_M$3%R&EY#n>^I;S*JOWR?z38F&KWkW( z`@2121zVs{K~IRMKI>#^YHkC^+P^n5^QGKrn_F_*+6d+4eJXlC@B8mn>U$m<`VspL zj81t!AJ=u73;`04T621~bg(p3?}f+FV#BuWonv~K`Mh7p*48j8Qzct=70l`^!fN>td(CQG>O(#a zi$~}R!O-vCtPINwnLuJS3MoHq44~6wN1$ouj96sT2GMUtM2l5DAymfAI`fAL9Sp<8 zebM^-Epp)bfZ2#lSxV)Y^8Jx$%mD^w3oV_1R^6;yWkk<|b_km8!7esKqFl-nH>%{Gcq%4>>*zmw3-lU2>taupAvu@qigZP&NV&r zv#=13UbCVnY4PB)jvQPD1%){wBQBzLYUaiJk%4)j|Izzte|8B2BJkSg%IY(oJzsCl z-f?e2v%Ads+e!#!YofHD$YWeW%#;Ejp8)s=eIB1>ts_nl_4psLvWp(u zRof%};gL{shfsMfh9jf@yCV(%pc`9|PIeRCY%(h|L~_rcwLA4ufb zcr#z);N%R>`E9?%q`&rdmo6_Pv@T9bSoUtUn+{UaiDWA){l7x4yIXFKvbWdTb-DF8 zFOb3Q9q|8bij5wpk60_d$a+3K;287{(cBGiCQ_T|oM26ZUy9XSS1OMhf;>-la4r@{ zm~ASQWLf}?_9rdKP)ouA_MARH(%sWNh(Y(ohlAU)`e)@w?iIFwUcQ_S|7tA8bj;Wo zn?EGYYFM^^ZXcK0$LJ3zk+r?oXE{(pCKKZ$?*CQdYzaR$H<}nU8eFNZf#KMo#12v?ggJfU05>7VUiTJPLLXJi+ z2y*I=_6(2GAEvz4BSlix`~6M|x^d1x5J^k{F9=Df35MpHAdF7cu`As&=40$cD}-s; z>rNnR-jS54Wt$BJKS{6Z41OdV}{#Th&{+{`A#vx!TClV z)A`nGEt$(WvgE&N%hloBcx*_}xu?v^1V{O>i|Oe0ejI@42BTFnw%tzp5by~|=)TG| z%rcCJ^C}Qc7iZyverj1Jda5{ zABTc*eHuFg&L;dGc`7SPB(7GA5@NRoO*=zA*lNn2t+-CS5^MOL7oS7yxFRJYNd`Iv zpHUj^79vbzK**elRe$cCO`SLTQa5YmXpHP`enW4w{bkgv#})EFM0zV=u>y~{fVi3B zM)@<4zW#pVG?C7v5Ir=u3;OjwBWd<1&%_2#6YdtuX^(@yI9AgItmdVtRZB;9}22m8-kR=pdSK6$G>q-c+CF_KTQzG z^&Isz%C;M5Rz2cAD-v4?o}K(&1?wOC>~kyJFfU-3xITM>GXy@hH+CS92RI0v7|9Ky z+q$v_WO0~lizp&jPFa|%ZDt|oS~RLr9&lL17vOE?=E~tHDjc@+u0=FAalh~JkfAgw zU<>Kl+0C258b@@+s3;JSaiRCKrw+A9Nb&8oBa26lq+lyI9uC#2-AaM#!?v5|D0Hgf zh!=Uza3XVNatHz)gwi+@8!BLUjG@|2wt2+jsL2-IH(UN_OyFUj+Z?(1{^`tgkUPYu z8Jl#DvrN+)V-CqZKcH8gs|^9>CwTl?+IeTDkFe+C_CTp&;?MW2l3+4=ofwP#*o06t z{@|f0L^_J_e@MJ_g{{HSoYvCwDcj#q3VO^eW_0U0o^c1gG}yV`iA8b$Ii+MGmp5CW zByCm}MV7VG8tr~k1(8q{(^nB;*eRrPPAM!;*}eA++}+qvMwHD7T;?QhsB0@*-UjM~ zUtI-<%Z>DJuczUw&gZGYLRUdWUcqYc4{#&x26|zfx@m+fowB;cR2=@hx=qUd!d6K| zXKD50!uluY9&&yY_-VOD_`@W>21h}vbru;573$HhF_p}fN!jEN2ZsyTKEEh5cI}df zmb1sif6̶>*DFBMj-!Co0XN>5@zi$Pe~ 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 OFk~bY#4AOO0{;)kwB>^U literal 0 HcmV?d00001 diff --git a/website/pics/recoll1.txt b/website/pics/recoll1.txt new file mode 100644 index 00000000..798a77b6 --- /dev/null +++ b/website/pics/recoll1.txt @@ -0,0 +1,4 @@ +A result list with a preview window open. + + + diff --git a/website/pics/recoll2-thumb.png b/website/pics/recoll2-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4cf021abd0ca022b40f527d3b157861d043799 GIT binary patch literal 25877 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 HWyJpggiLo$ literal 0 HcmV?d00001 diff --git a/website/pics/recoll2.html b/website/pics/recoll2.html new file mode 100644 index 00000000..d410d3ab --- /dev/null +++ b/website/pics/recoll2.html @@ -0,0 +1,13 @@ + + + + Photo + + +

              Prev Up + Next      + Image

              +

              The two tabs in the advanced search dialog.

              +

              + + diff --git a/website/pics/recoll2.png b/website/pics/recoll2.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa3a339f9ea701e633d0461dc42cde69f948202 GIT binary patch literal 46698 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 literal 0 HcmV?d00001 diff --git a/website/pics/recoll2.txt b/website/pics/recoll2.txt new file mode 100644 index 00000000..4e503cb3 --- /dev/null +++ b/website/pics/recoll2.txt @@ -0,0 +1 @@ +The two tabs in the advanced search dialog. diff --git a/website/pics/recoll3-thumb.png b/website/pics/recoll3-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6230a7cbbda00be2ce285861c95e1882c6d46b GIT binary patch literal 56412 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

              0#K1CF$yK?$o(^uz+1h1 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 literal 0 HcmV?d00001 diff --git a/website/pics/recoll3.html b/website/pics/recoll3.html new file mode 100644 index 00000000..74d8ba5f --- /dev/null +++ b/website/pics/recoll3.html @@ -0,0 +1,14 @@ + + + + Photo + + +

              Prev Up + Next      + Image

              +

              A result list from which the native application (firefox) +was started by clicking the Edit link.

              +

              + + diff --git a/website/pics/recoll3.png b/website/pics/recoll3.png new file mode 100644 index 0000000000000000000000000000000000000000..85de63283512bae9ef1786474b48d9d6fd8fc54b GIT binary patch literal 169706 zcma&OWmFtZv?w}QAOr{&g1ZI?4nYSE8rNxTx6M7AlC(N`IR$&)rdWFU#t?hX30ST6+*R0? zwAF|<)FmsOmE*~TcY#0j! zk_QLjeA$Ruy`2onqQjkJ`l3fjZ1WEEyA00KMQQtgnspcLj3ERRAnJ3jr%qa&pKwi* z$k%=dK>}qf>~=O`twnMNfc#9EA5XHA(0=b(iK)TIr*R^IlHc5cK>DUBSkk-dtKJVD zq9Au4ArR=?_GUQh=;M26QuLZ|TZU|M;=%Cs_JVGJ!e6;gqTqHUG z5TJOYHz!6E{RnMlV#4sR1+`IhzJeX%h84CMug@}I$7v5_r>WQN;_lz`J)=OqLTo#G zr#D<2N%L~bG|>b!>ayM<>U0KZ->SPG`z_Op_@|qW7}r1{Mh{msAd2^t;M7j?brI|$MFKg4uPKOpYh|y1S-!Z zHNhu{AU}j0xYWAywUG*%{R^^X;ihc?@B^?Y5YYrfDYLXG_GcOW1E9a{u8tm%6u|Vd zU+D~}{_p(xXAkyQmRTj(^@>OTcXL5RnTz|an7pW6 zoF-$S4nGf$*!St;@wD~54SS;~=rbNr2vuLjF)=qcSN-6sPpjd@nl`gwt!l-_NlcS# z#Z_r;T^J|ny>6VIJX;>x5IDo|5yn}!MuwVAKp=C_IFuF}xxS%6GjS&JpJh2wKNc z+u0;t{$+GJyM39%YO|0`cM~^5aw9^U8Z=%WO!P*b8OV=T)iOQ2G&6Gj@l1X>{+sES z=f}9ge02ZNNS5;Q@+3VU2$Ab@wdrVTa6DUz%=e`RoBn8`BDpNtqA5{qls8F?S}rH` zbGoi8&c7t!#{tA2X+!(nohw0y%ur{LSix;z+7rxulzeev{3*kp@cF&oOFtsmy>k4o zmL@NwG^TaoT?i`YKyK7JI%TDXszsHcyS{9sov%#P;arnr{NUxhxJ@1iT<7qdTu;e?pI6R&)U4WF zP8QQ_JDS_uGg8EX)+FGUa$E1C>V9I+Gtafh*~X3!F;u`ptI!5C;`>Q_pLEVV)NCYM z$-DR^tjbY&qgjH3&{dNDrKa{z+%*26@x?GCcTrt#e%a#s+}z4!ocyx6!LLJfyVhaky=x<_=d%`E33h%$ z)O)^bujIeF3HcsTugr+x;pzFFh(~#{@Bu}2kBZlR^RF5BaY3Eo_9Djj>6@*GlDK#X zOP@WV5ekM5uuXeo8J;hYy)2)HgI54#Jxmw1v{+tjnwNK87cjLyT@G`td0hdUJ~=n{ z5jiN5r4P5Av4cocdtp z&Kj}^t=>Et7QqwIDD0@{+KkR7W0g^Jn$L1SOI?F3uY^$Fi)7s|{55WPgHZ*bqbRw8 zZxs*I!omOhG4SFqF@uZUFfeZ^nC zD_npw=}Bnd`AXp7uQ$o#-&m&M+D^yGk$@uKm*pvNC++4BI7IMyTI1vRzHQbQPh<79 ziyz-QT~*SkXpIJLbe{TjjtHqk2AMN>e9Al_L#`FJ<1f9f(77|8D>mQu=UV6qHB{sJ z?oRD^e-HNlt@b$8`$h|~HCb+d>usHc2|_;2TpUL3idsGt8v^mw~gK<5iNL&Cz?G^ol2oT9A1qH>0o3>PnY>}3xrfP+@MI^V^{W;`nuOMEOvOv4j=lK<3+Rwbt zf(gFwA0Pjv07ME~He5+P?LwJjneWqtWUtOJxwJn_+Ga2sPq7Wy>lAVZ_Szii@aloq zi+7lnOv79tev?Jr9-srw8T=gj(w&_k%Nut=iLub&P~hiF{5S(S&)xT2tD8?GHnAHUe? z>r07waB?#0E)_~UcXM`fg8C-lG|~h7;)kEk1+bFwil)u*(KN32sHnYL_Tsv;>q!G3%~)B<3!Dhe3=RL__KYYF zaahfMiFQ0)=603!Q?z`3xOu!ggYGc-y5Ft1ZebvR{0bEp!CByg5xGw^W07ZJ;$k({==PR z%K<=iy!R`;VD9LYbeV5`anX4J-2mlp*f}>pIm}7SrJjD%`B9crmJ^wSqSPnzy!3n+ zk8~f`30=!bvt8vN^YQZ9ym#|hC{KbeVIe+8_}z6vpF_}y9!A%mzPTQEc6NfXk%@Sm zes==p04b!cJ?)B;Z@gJ*b*=RLH_q_Gl1T&LngBQ69Zh2##wQ~BRy5VEZ+CMzQ-S36 zd^7i+@XJrxBBhUZF%-WBE_a6Ye4m|Nf53o`=c~8E=_~e6Pl@sI9SCVMWMiVEO<7X_ zc%LpePvKGo&Q}?Tn3ot63PmrCY3olqu*T}wKy4VHxf%RSvS$&h)0p{aB zF-x5^6phW;URBRh>oYVZxxHU;W{z2J)uk316jhzC;NJXqk=t6e#|T`gJZyf#kbJV{ zyR-VVmCuTXVUj_IDA?7|lasBevdx zTm*$+mD+xZeT!C;+Y1O!03m*ZZn zHlVSn@88oGd~V*3?e6Z*$swcLS**9RS)$I3qmjG4yAvn>B~NP%=p9SKNNUK;j^g6t zpAv==rqV>oS@`(cEN4pG_)f=o(vy?zlHMyyW$?Ow2PFOoL*RUq{nlo01fb0v!P?W% z0vf^ke;D>J+1*z3EjOwaqLfCFL-dwJgH0RDj>~-E9 zyO+iyMw%hpZ^%OSx2ww!-EgY#TeCBqr>7^NV(k*Q!twMaC+T_=cXsO0nJl@Gq9>=P zU&l#*O28BbMB9%aKf=PoxY`fCt*oqw#uI!WKn+DAYp`C3m7oOnH$T2xUmgh~rk|IG z=R6)j6sIFUOPUNSFuIdiVWdwWFviw6=f8~nKWiChu27S@CGF+27g0+Bv^ z#IsaY@H>qYs&_%cnnyC!TRsDKBW&Z_IG4O0*ZYHUGy&bDdcdxe@Ow;WV38KYD}K#W z05{J!*l4KoWB|HHTwEOZ`9RLo!$aGfG|-Na1|3P;2eMP~<%`4iKr|6=%|aPLS52AS zmq>BIQZyArRBrvE<4PKbpH)>pTPLE46hbS7O@@qdvgEj*MFJVx13%JnZOdgnxw0zG zZnwD>2wofI)cR)dKuOq6)BU)XK|;g!mS+MDfhz2R0ph`lcYg;k|6#(A`G@-}dOgK} zr+ZL_br!DW4|vTbO9Y(NA70|+z-Ea)?X5T4XbZ&UHEc=y;sI(lRIZr zyF=}`lftgtC@f3a+|tw}b`_#1tY7IqT=ianQ>fw5Rb;Lg5V?A{SUK2Scg; zBqGscC>oB(xU4$QEe2~xK0#o7FKK)?(a_`5*yZ=AtSl@5iOTP|Db1+pT zk|WQIixSfF3(&m60(&+9wZ5UTy}YtACKS+cZ;ornKNUDM1H7$FtFb~-iwH1Z0mn}X zzO8Pv;YDhwz{T*MlF`=4Ho8gZEs4O*JQ%8uOU(DO*yX4<7JU=(PJ+zpb9HNC7Xll_ ziVcF4q1H?@(Mx3`BX6~BHgvr?JGTncKw6X$uU>RI_qUh=0F&Ir&_#0V!Jn8yRI+Ve z$NLfDXPwZ))Y7S?r8Ei3*)k2_$K!rp%x)rv*Y%|MJJ|n+D@Z5`#$x`J(V(UamHZN1^EEP(8hX(AGHm-i+ecq<&dZ(c zmeb|12D?2*VDvQN{M#UNeMU{M9YAuxlV`h7(_2#}Lv6HlJDDfGq7oQG0wzXzQxJbT z;m7;K7m!s}z+Y{iK+U?1bYY!?HZNc(5ETA}$kbqrJwLc{+RvU#p{t*0} zq^9TX3ade1k813FVpwH zw&O;crftUwdcS$(V-vRQc&`WMviHf(+12A@u2-LaSkzm=b@RJ0dB^0dC%?g@Ab z%Ht1DPfz#v&24O=dJU`9%L)n#YHMptONVi50SgmYs`q^lNp!E_%q%&6l+QK=3Af|! z2*97~W)YhI8nSSGEWZJs#?rYR$NBH>pNIi>l%SH6;8?D5>sgh73$&WdXdV}>muGg> z1A5V2ATC>&*bX@vhO4xGd?1lHU$MOJuS(|HzdZ)<}le~;^>9(ECK~G(Mx6W)=TFMs4v)@=Y8JDV-x14o6 z_Vx8;dK?zRA)*=AE+i%<-u`zSo0m?k<)$`rjna_9P6mstD0PTWyyUfaEJ4zC50}&fxkM*ZvavHq=y@>!eM;-BESg~a1;Qv`mF-~b(vk2B{b$kNaFl9BY*h`tjQQTQ2i3l- z7r%WvAbH*gM^P@=%c#}@9;xouQ_aUcaBDv_-Oti~ZlPQQe!5EKI+jZMwEb?C-}Cl( zx!Dnz(1zU?LNqo<@?R1KiV+`~d>)t9I((iVJiHmJlUp1A3^R2;O)JT1B<{%i$WUTN zZ!ze$-DjM66+urT0J36Nc(r9)mf+s|TZNuf%9`aKH`tU zb#--4uC8;;=p#G9yY39_E7 zGs2u2mpH6KQ!Q*zJ0PROW{@E3X{w|B{p4V(XTbE-zX#}qQ{EtxG?{)q7Cfxm|kZji1^>UctCy!IgO2t>#t8vAQZS%Z0$gF z!^O?rKXY+F9092J2to=R*8YVL@@pPL@n!l6Z8==1hGGYAkaDaft5AW!!4k}vTH4b%SeN8Y+U@$%uQ zZ__EVc~UBApHrx&h>OfJ!5!3~>KvqEsKOJz!q+1EDfAo_#0*WA^cC!twd*GJXjZu5K4fI#GRPm(+!N2z zpiujKx4Z{O+%2_=@*w~Mt<6jXyfk(%S%41qU4MKjBVw=Uqb{@NnK<(FMC~{erWYJ& zTJma@*ii-X-o4p#Db`S$yD?wT2B*%joIbOg=Bzf+P(;hFaQUgbWEV40dJ4)Q1_C|7 z0C5A;us}r6`pG1ERp%={R@wddj}HGY;t7J=eGALH0?2|lQU3*=uA%^=b*vWuWT6)E z8$2i()%N{9h#ApsKPO}Y$($V2)pmoJO&{>)V%;(8kq{r|waqvWNC%G{h(h@xl)z0S z2n7J6CHtE2pQ`m7r1~0NI!BC0 zhoKs0VArVX(gL2lgePIR1NuMu0VWFwv`fno{cgMUZ%VTuJa+5oa0Z<$oO zkB#|X=|a`N`}N3uKvqN-j#m=nh#?)hyhwWb^jI7!t{-DH-KMDGY^JJ`ak-!{D6um( zF1xF00RxJCB8=Pu=3>AR5dcZ7eUhH@nbXU`fg4hDa73zgWK`#$s|q$*=VqkfW1$mPeP zLBij(&VKDW!T{aF4LLO+i~6~8Rp7nJ`*F78pW=PvWL8ABps`tg(Zo_Bnrxl&zqtUZ zoL`<@|1gl5jhRW#c+~UweXDppE;brB5h!#ubn^dSnR@MxY ziIk~=%{u<#gjuvR58t6)R<(kmm4|A0S%2BCmI)ZAWf@!e8jyqak8o0&J6_WAPdC2R z=D$bTw6(zX+PYNlc59JWHQ3KveZfIY8poS)0z1lsqFx@smZil6E4))BC8}l8UaCWK zl9pD#4Yf{dDNc)qPcy`P$cbtA9ezl^hHsH?o3^dyme4&$?kbvDIr0ynMX&_NU_1W$ z(%a$CaGGaA<+AK?S{0SH-AVYf@M$|NRh4PW@5d1`7DB%ru--^h?>f5VxN4t?e$qu9 zfCb^SpqXc1ywP7(x_tM7M<)n}m7=0V1Os9#gG+rvF73TR?mEudH38vM!5$9Qec?%m z0gcdXYtzw+0#RXqeKZrzp5K6|egVJW==0A;x+!su80U&m)6TolQr1QOEvGv zsWUa@Ba3Ef%!U@WbL)ri|8T2)#)dxhLAjwa?g;XsKjY#q%(A>)R$82ih=`ghUT4(f z1Y&EfuRrBwMEvU1wW}N)HXlp=i&Ms0BVM9bzXsckgH3_Qh`sd`hVyT*BtcIwO05B_ z*T#Gm8EbI8LC=Ux>H=<$*M^$usI|;zI#$!eCuPOp6uJZsF1^)T-bUwdva)DsXbp{x zn(xOpk{J`{qVt9q2eaC^e)sz0pw zS`n~WmD?-4j@5SvA}6P#)mKo9(3~>r|C7u1NrY3!C5-58coaQsYjhE>*0!5sgIHhz z{99K4e9}Qm1WBR3pX`(=`6)cJ{_Jrq`76GB&iW`86!peN5^Po)!iehbJYBdoi~uzO z1C$h>dcu&In=3M%#OL_oN+(w&YcCd$Meg4W!!nW`;2Kif46tZhdgx(w5B0o)yVgnY zyGtfEd&;(Pa0tz)@lctLX-w~E_lx!H1_yrwXFlp3W6heQ_wnHj8Qc~M@XE;dl6kWM z=8UX$q7WjRFQwf27+9!s`%@HSgJd+=*>iGceVZQUBh?Hn?5D;V#bG`bG@bfBezV8% zDJ1Ke_TDcacM+4H>|y%bSO&XrWld%Je*7n1QuE-FQ<4*1hy4^!oxG_X811d*Tb#lY zX1)@zj_5G5mPT~Y#+-prOG;cV+FlwIS0)hTYxWk$!lUb6HXC3Rai19=m#1WalBU0Qu zvnaI8Kbw;Z`z7zPbCGCebMnW|Ymvt z{{uX+WwS6QCPKxo8XJ`bn>c~?bHu7rqb0IhKkSNqE%F>p>54R;*juv<*(Y9_{Yh!w zIi&2xj;oC!K{<{Rozv1yrrtFBvez^}kD)iK$Brv2@A~ zrAWAhOB41VxF+z{iwf)cu|M?41*Dd-y}Lex@k9Gv9r8`|BL09xl7u%+z+J%8=Z~c6 z2m+W|EWkmbRI{G4DwnsaPDew^xF)#N{*Bua=+enFk=+M@zt+M>=&^Ab^{n-yT;{nR z9~gnILyEgqcPvrPQLR=R(Y3IpZQl|OWEuoyJTbalTR${E$5j$br{fOgvz4W!(2jEm z_Wi^bma>fajXLbFH5XE;i5LFHghy-kX-^t{sxIN3wCtyJo9(5ruOH^et0YF-Az#HV zRNvo}{_w}hN@;`W!Vr-U3NaW1v1{BHl-+3D}-Tk2i8_>nZ=4ZPF zH^&kNylf5bOwM{*VE)V=BvWfVvbJKkVAwED7P1L*CZ9fKBon zr-f{!(ID_CCz0qW7@3*6jYyV(iJ(E1Y&;-+m;;chhsWLDPHO^gu2XmhjJHE&)HYwR z(Id2!8S-<57BDeK*b|xKEZA`7^6bBf=J>_?qh${IyomR7`g|K+nQM>`N|h!6XSKfD zl|yJUr}I}lLY(L&f$?a&=TrP$tEJ~_iAtx{fo(2vak=*Zk;x0D9lb)mFZStHo?5KX zd^u4&on;)$oe$Yi@HvY^xRc|bgaKWNA}Ze;&ZTxjjt64&@XQL$(~*jPnE}RM4T%QH|vrk9Zjd~EDjmZ z4URbVu4yF++nMDO}~xZImn%FIjs%q|mAD??g!R1L^% zMW-KDKr~w;dz30ILNjibHIKLELP|vy^x@e-uY{j`?W*wiB-LuUY3dz2yh#RLZ7wb| zKcFyQ@vMt8MS<(-iIHiIB&0mXXXka)8s9JgGOb6rDqdJ}CpH|-i6t-K zs!E|m@yd1ZG(U=Zuz#;f4I5C*E&8@n&0S;fzD|-wOp?wl70Wq|_u+1J)}cRP2tBXAThyoWyX+h{lBr~;-o@e{;F*nAkh>sR$z$EpI-ik3DKAj*BO0pC2w&SnRX_p zrE(#W<8QEeT259~L;?`6i3s|G<+*&1I;Q+BF^K~!+FK!wkXFrOa|zr+Uap|qtifoS zlu*|!rwVO@Ry>PxgUeT$96XWyjIc>p`>g*@H8xOv7SHWbg@xRZn$BXbdYa3JMSykC zKxAfj@ST+@`6g-2wWKu!C9lLAeP}DHoUvl$dED=*yi~Mwa zH1vXVr7_DrEbKtre@=lVF4PPfYdmtZ=|NecJ|(K3na&8U)Nd-gLX=OQw{%8h%`B}X zq0Mu4dr5rXSC!N7PeUGhxR?!_3#}w{Z`fP!>PxRU;m#42M~{lw%*34s5-s|d>&X5s z?;RN!HhKgY4@64h9}Xo`({ka{O1JdvAR?`|@{U(5kDHuGXI@J}Sg9C@}*r#fd@yiH`j~~^r+Zvt!r66w8e^Y*UeWEsi&$=bcOaR z^Girc(v;nQ$8BN{t(30bxilkE`X+5}uJH5yqbtg7Gjiu^dm$MN2jokS2UN37#Ysd; z{j&ICb+6^eyPzM<(r|qU)UmtMKe6g4*~*Vlof>7i;Q%IgdN%%su{fVOxI&xQZTN$M zsS7(nVOdWG<7G(#=P!9-S~AM8+feHmWSjW}1cS6ci9dyrFb7d0zP6QJkq{?2q%|ci ztqpiq-uaugZnI@&*^a8_?Dp61w#RyZwN`}Y;mN9H1rXI1U8$W8XDoZ~tcB^Y1UcMU z_IfV$@G7zvJ3w$+y^zbYq00o161#sq8}nWLdq38ZQH{v`g$A8hVEBQvYlI0iC*mxO z=p>C*?_@@Ije3}fr3k2{F{)7z?h}WFrDEe6(W^Mynp6-N=%}!Mk!dbd8yW3?d;L`TI|+;xyBr_J&1^z$R$-{NwXQX6$B)pcBk>sMSM zKr&}^+kc~s&y^Qsv}g>KK*q=AC>lHRqY9!FS6U;t(kR+V{!<=kBTXxI`R60NH1B8D z+hP7=_H!-|PNC+7a6FcbsBf30_&HxG%BlW$cY8U_0tW(x75UVloOX z5GVYV@qg3r^l3N|Q`8v##(4=Qt!Av(G=Mh6fG!_XMwHURzI13M%ztDcU(#ey)jwsC ze0n~uPBTI0vwHn*?e-Qw|G4GgH*@?C)ytmc8%(MA|H^D!cNaR3oZvEKoL5a}#xzP@ zK2AJ!TW5{M?DEHOl>X*Xv4(3!pCVo8{__t;GmbJR5NY9)xpWUh5H9YNB9iN2r+jXs z(oW@@FE{$q_$kIh`GNX{<`Pc*fdnJC6!2MJ#{Gk0jWwoc$eX#1>U*(35k;&CeBW<( z+Z;1IblFjtE!~OR&b*=#+}f5)`ETRuvm|SL_zY$Wl~^JhFV7+0qWa_c!LG`KiX6p( z9Qz;KUvA3*a#%3!^38cA9*hT8Gz?qNR$=QCF`E4$4bO zLAWpukIpLcqvBAK4G zok%nHBryl<1dI<+j4-k^^6-jaXdpd89rYb01|BulJFIyBF}d?*d*nq$bZ$`{76W=0 zcC25DhPGh2!ay4gJk2EvI8N@=!*r5$UshS}_xU89Ezk_JcMiqwaGUrp!R4GuJY3=x zw{yYi#V40DPhalo3~W+VTa)ZBRLp|znxH*KkHuUGUQ&5aBaxgjnxL zDIZ!;0N(qC+^L?rJ$Qt8W|;_0bDj4V$Mk?lV`@hhZUTmCLX$T-ZqzhEu>#)?tY8xn z>KCghKZ}7yciMpP_R##7R4N^pU*Q#&seRf|F*20}<#*jPE+MKwO2b$j=l)QMc^uT} zNhV#hekAE%oOLEtVj{u>mENb-Ueq9v+x5=+6C&yaOf$k~ARA!oi!c&hfz4nvErNBo zj73N=^+>L&*k5Vh{DMFSMC4Gk>ogT<(Jpc$b>!%x`vvdx5u{;{ZmIJVgFlDo*aHW67=2K?i6`0+oMh$ako3qP$%1(AABWVw$hoMYm#u+C^qsAK1nk%SA6cDvJ z6E#0#i^fN8LB zL$2{x^k0mFE3u?B2xu7;hKk|VLeV*^XdM=CVj}q*qOY381h&@+)B1^gY^>_%Tt6xX zs+wp%X3`+i(YlI|hU;JP{u&Zw{tf7qwVIlW5@an}#f-wD!h^-WFjUr5p+P2L^q)6) zIUTf;=YPg4K@Zj7dY8t=N+J}r-0^Fit!)(O`-Tu`1jqz< zax&2lqbJYvkrti2BpA+eKdh9Y+8k`%;w<`VM*a=jpd&zktEku5?1h&_P;?R^%0nMW z+D%C*7Et#)N{w-&m&L&hhmtjZMu`MF5SFl}IG?)swzb=x+tUSS_ID;Gq!R6o01PO* znJ4>C|C%U_SQ6vbNk~4nak2}s(q#5&cy->vKe4v5jQ&{m6wGLxNz%q(ZhZ0{CrO%m z8`eDgUqj*9qrX7n0oZRbF)Tz9b8C$@dwV`@{UlY4ZK#+sXsuB5>2}yB4j|$<>(D%T z$w2^rVEVP&POIL_uiM^wfY8~xcO{qj?f^p?$*^O;^FuqrPF=>GrMZu?PH($YyKCNU z94U}H@8k=@z$^T)!p=NI6C7`&u$Z&=KFms$ho8t=omOmxMRR&c^zYx1KRSlVVTJ~l z5$8c4EA41dkjb^|p`mV&(1ZbGx`D~M@5QIqIS$hA)OPZ3)bFPE-fSz^nY3nQwUv9S z48KcU{?fKxSx};3Ui&UO;yrS-bm1;dRhHp>*%y`Cijsb+bKf7IIC%lwawJ-h!meu` zr~K!@P6mflP`eq_^Fu}Yx}2h)@I} zMWS+VjsFBiYqa6bkhLl|b9a=Bxu9JQu8)T0s^>7xMs3gQX@LXI zFbv(@7qDl(d%!KcMOvvETk!mckE@~>s~A7CIl%31_>)5DdxRb3Kn_SN);a<~p%0@^ z{uBMC1xqG&SlxhmPQLsfNg1@?GT>i7HO$t&Z<)vC&9`YJnnX%c$JMqq7ujexlX(Ki z8&1>Y2QXT^h@?CYijA04$4YX()1vHJG-M`eFTvB{qns7m6>uA*V{ zGMOBj1g0)`tl4dHZI@7)0!2OO!`yflxYPM)mcFvBroO&D6CbinJ8M)rVR^^Mn557< z7<^;0?c6tR|B~W=MU{t5B40lBmfyv&d_MU@-W(gaZc_{fI6ias{&z!9zl{HH#vvj` zO#)V#=)y7z*3|t!MFCQZ6VzJO*!h&dNDY4t#U7Pj;s5)p9R<0x1=pF;>`cN5T%VK_BC{Ruc&vEu>j75>V^ zLDL0rg*E{lfKM?goefBFbK`qCvGw&dHijpEtxnE*@mrqLfV_a_u+D)5Yg;ELY%I7} z)6cyW&SBe0P!>KiCI-lQ`0zi?Rf(8Kw_s1JXEm)(e2C70;Iy5!HA?1dSNfXHf~+aa z9p0@b8VE-f*n~~rpK|Aex+CtE7{A!)in(W%UBihw)oqfXrzi^&3d# z&=$g0W4XS**7kkAY5EOxCP?Az7w>SjJDON9@a!WmV}qNl)v6jA(TL6v3;S`b*&*kC zj_YL{Vm4$IPEO*Vo*oH)Jgz;OEe|MtoeOaOjWoBRVb;57rz;d~K7EK8LranJUvL;> z1f~U!OyXvlDYcYYr0E=gSMWTuh0**^15TM>CPD&E(Y`89>*N$kHUgt$rl+B@l&C=} zu|AoMEU6)8wt|}7-Qgvly@rax!9gI)7RZ{jhI78fr*p9^hoEvmLl=UHXwjTbCFaG! z$xy(nIjE67mXNpB#+Y~JTUj9QkE>xMXP}b!i2-=Ysp%w;S%dS*1}R6Ut8wyEBFRo( zwu<45BnXPB2t-mfhB0}%hNfWpe%idA7XyKmqpq=N(UF=Eg(oKRbrhbJz2WKRK5h2YkkFs!P>EP$JoYahO{#I6kjGz@bb*-mcouPX^bf!r`z?o(Br> zZ>AGE2*Y?hJDD<6g!B;(V~T9a&Zea9?|EFl+eI`Vl}&-boZ`*x`5O564U&Ac8zG28 ziQF*mGbRjujTC2d^Z2ENS-3Z%(C*02nUT+7HU^hVC#h@L)RFZp&yd$Hn)j@*SPhya zy4)cfvi3bIc0I>MnTlAmv(!?XihP%_nV0c4*H0eAy;I}l<51K8)I!!X61>7@(ck9o zO~3rAZUKo$fP~&1P8#Ma|+!rO(65 zW`U65_ipJU8TO65mdZ8Crq2QXm4xk%3`xSk@lHbN-A$8PkWZ1&neo!`_mMGM_*w2 z5Ku{$5x$vMta7!#uxBh(5#H=|`9Z{|>M0JQAQfDx=N^BY{gEU- zLgm>1ldHYsB|A8`AK~VFU-|m;G#(L%IppW)SoS=g-3G!aq^~p|pO#Bd9=$-p3bFZ2 z6+Gtm)Mz7_<<%VLxYL0C@tlGpRjnTO==9|(MFsGZPe!f^my-&P#V6L4ec;-q#lic4 zb*IW%52Uk{2o53kpwasRlV4But|6MQIA?VidX<^2BX!>6_vlm;!w~k|H|Um zg}rd1)F72ova6ajC6AI2JVYHkP#51MOwpK`&-LYe!!zL4P4s7=f^C@i7;McXbBUEm zPA7>RZszvby&Vw}cjOsx)-KS{%(TBBn}xP*g`_lz$NV1U)(H)HBxu&H$LEoKubCOL zLGT&Da=+h`-A7U{J}buXDSxZ;-1#fw>uJs|8M(8}`y?BRy}k@TDsrKenS9g`SVQ}W z@E~P&S}kG!ls-&TRvRG3#aL2j0!GPZIu7)3;Rq&j%NHz>WKWM};5D&;Gx!lA{<)8G>ayR(mH zVrx)%?EqM>Mxys)>GGhzw1%7$0EB56mG+MMU0VU(%PqCO6gvEPjS$I+oh0~5oe#Qm z1jpeTi-s7Q;&X23#b+SkB`t%Q#yaM=ywtz< z1Og{~;xekpG){Y#%p5m(^pJh9s8~ErcMwWGLRDpzV%sH4)FI1zpe~son+d-2tuah_ z76)LY?dz8Z$;u>pS)j*iz@(%-n)pEP@2c}*sgB%uDK}P4o4fE6Q2?R-qp<)w>G{Gar|0K9M z2uY-hbt>0E&}-@0#<4gKvkjWutda!nf0Gog_)_YQ1y5>IW{j4@b=ueX zr%$o{qiL2(J1f>Mv(yFEMY9{)yLU_D7r;}qr5if3VyQukSjpHMai^5xs4i;9y;@baP`f>EeV{yBlRGJQXV+ zyM?B|p|0$^-hA!}UCnV7TMbkLKjuEgsU-efAdo$GCty$m?P zcAo4_{>C$9O(aZzoZhlgdXZDfatICYmeE_RI{07uyLwBQK1Y33*v2TX{oDUsZW4;9 zL;C7tMMZ<@a4;j5;tlR1K!?$T4OKGvDJjAK4{>i96;~HT3wEOoK^h4zjk^VRcZWa{ z2$J9s+}$m>yE}vsJUAo}+%32}1b2Hk`QDo~e`bEndg~3pda=6Cz4zR6>QwEj+M7Hf=xmzt^&}0%G@h1HA`Ss{jHpf#k*f8e$O_SB@iD(s7 zZsHr-tPqwP)aDWzEyUa3g#(gVxFu?T^e@{R2Zdp`g0%R@f7aqu_+M_34sNVnKFet* zdT$ZU__o}(hAlT**)Q<8SiEBIu;~2WDK(Kv z#*zl%ZJQ{EhN4Y>COUtwl?IYEwAcy|0Dl@Mi#t-!LvN{pebW4mtpO3IO#3h%mg4;6 zxT|3!dF^md?0$T&fASmuZP&V&RRb!w=mO1~Tr0zFq^|+*&z5vJ6wu+u3p#7N(KA|z zg_*s(l(n?_BQ)t& zKev`y&|A}qpTn99J>^I4U-)2e7vS|veA3^&!~klY#?q-#Xr%hI#dV2H8M-@DlO?`u zJ_lpBWik44ca|aRPV`Z~prk?Il$OjFq+K-pML==W?T*KsNIjVU6|aAou!1EU^j0XT zEE67znW4Ji7h)Oq;p;&3T~jEN07^M&3_X9=%mS-+hDs0n^1#m>UT(4k)C$YZa*T5B ztF3vw7~)hL(p+i=nj&lktnoxca>Z})62M%#}c==sYK<3e@EwvLTqW7IoW#apJ#oD(Z?-Y_)A%xHBIl- zXY8foE@_XMzcB4*Z6~^^#rP=83Z&w9jyLg|_QY339$3Wo; z9cZcop7E^$12Y4&D?A1ESKP7m#RMti)I??_HB&e>8^5e&Qn6~sf4lx8S&n>>;|=H;L` zah1Cl>_`0KU>dZ^d_0|5NuqmHFi1>)2bq>!DF?%D{QnMzoBnTt!`t?&XJ|o&;^QYA zw7{}g^l3)r$`}@irV5JHm`^?o)9Az-N^~(d|G{jjCDjVF#wpOd=KAf5b-b&WLI6_o zMXPR~bC!DhBfl|U(-!+FSAK{Oh{l+3M7E%$fx|Q5uH4H*Zwpcm0T9@?sJU33b^D-Z zH>A%k&s7`(pTd)4!%D)@vq+q@*(Ru^RGFL`!m1G%Z5a#WMdn?^P$?K6a)yQ+%@|Ix4cZpV6jDs`u2wgA=HWkzAf3H5ixD{Dt_diXxg| z-29fLc}gkj#LPQ|8IEs^#6s2 z%gFzq!^1I3{wE$D@c)j7Pgwk)$HQO5CM}x$Kj7it$xEVhii{r(azFpgRh+*^cB4YH z{=*qwN21*4C%yN@ZOzVb8oSN1+NI^@*Y_5b@Q5gK3zty{rAB;Eu2e{LW-UgJ*1Xyn zWp9{Cmgxp6o<`z=Rq0yb<5SA$dF`3b`N=ZZk}QkD|4BUDe3h(NnZ>p;0Z00r75oK2 z-UV{KVhj{EnsQ@4SjLQ@A7r-CRr;&b&@f29V~Ng8phM!v-fV!#29ThBqv>yW3pFA6 zfL2sPnT@w0A14Uw*Y+uX?x9{JEg_mBm?CzZoGAl`!qDa) znL>mFm{HJL8H$NSEDV+YBPB&4*C}!1#rv98wgdBRUY;X*)<_LTvKZ03-2#O&G1yov zt6r@r{YjcnPqW)7X6eAhY}HFsp18eMF*{;_X(?Z{bLSwYL>qTZ_{h}oHG1U0X`$1_ z^XPI~ue^HZ^K;psY)?}&Q`akz4^6h>v6?-)SW=G``92%sxJpXvSdy&)Z>X2CjD+NH zx%0!vrNm*BjBbN0p#$~Ehu*_~7CD!+F7FFcKKxGGJL10z@E9C?W2@>qttsp3yQwYW0!s~aiw07I;X*($o%x~S7-dOv0W*f|>6c4UJxGCFzR&k7d1~f&7ke0? zR7oOEF*djrwDiG8QbtHG&*8T0!3tX5h){2np&0=$<$U*oWwc-+rPp73TJ*MTrk0Ww z^K}O~3DACpZ)1kpp~13{1|00F;aj}>_O{;pY@*nSV?hul)Hl7v$<+Ok6S9p7I&FTq z;DBhdWdbi>fg3UEjUMjnlcSLiw=vHc15?*L+B7Dh zYevZJMW%1`aq5lqw$j{z;+0nXCDKE;IiS{kU-Kd@ldr~KjU{WHY}K@rU{l9 zWN#ga3ZrB;E`iR#7~i^vhLKbb$tZ{+**qA5iTUp!vI4N}!`9751dv!7qLe=d3)q*XMlA`_Z3w#`p;I*n+%13Yw-73I< zVe9EBm_g77G%}<8LaBiN5#%iP7UBE*uRwDyCsya*f6G+u`{|S6$HoAJLPoa-e$y3i zT%DZQRYAbj*a_My;jfNYjvbny`B;KzP|$A8npg@tWSy-7`xFd!^neM16hZo}Uc_&2 zZ{OWDf0hh|P^7M=r|ZbaqrO1Rw6+GQp0u2d2{slN7lGVHwS)<9NhGRafzB<5C{n@X zohG9w7c)G-vH!P2SaWL-hz5baC{;~j%U6t^CiSBN1ELZG&Fg$WKj0%+0+L*nmx$e& zhz%E{p#Vv?rAve=_+d-P?;y&K!qX&TQ-;cydBwYg$TOga8B3(yX5S);OuNyB7 zJ98yl%HeCYJA*zdapYm=1*tLTP$U`#F!a=&zmX^lVxV~a;|vi2htUe|*5mfqh}fnl z$|YhrZx{zaJ@B&Tf6h^s01OwkX~_mO;MhsgH?n&Esk96}hH=KLdBK*~@g3eDy9l=) zr`iQo4Bm)IS%M5b4f%$vdn$1Za9$_HD)a<_4=xB)?1y3qhd`kO*6f6AqC@x)f#p+JAFOz;NI*lIT` zd36S#VtB((MTmc_lq5D{E=liM+TTSI`4m=8>#^AvmzLH`yJF#HZcdkRg+L>LK*j}U z?!L+|1r`GT09)?HB9NJwop8z$$-X>@XMaI+6Z7}iXfmp|@HI6xhgV9dFwBM7hIMUT zw*V*4;9c~wW}dR25$t&jn22x`KOE`l<6PKeAT^b(^jN;7j-NX@Qbh7J0C4RyLr-FN z8oAx#Td`St|B+j8H#tl^?pu@pzddsihQT*4D_fu#B;G_qk*Jn#J^eXVh4kysL~Jx^ z4E=ceJfS>LBCaVacHR@TJ|kFBbr2Rbabkv;MGR3_@K=K+szII^p2cH)-i^6Oc-h`O zuh~L3i6v7pnApLv23gX7J4Lt{9vaEK{u+a(JCw{9R>flXunw0fvGeB~mok}tSIGGj z4JDt;i*<9}U#?4|B8Q@3LgdS{uw}ia5E9O}!4X@cEqt8oi=JL0#k3yKfQx}*b5|v& zn>D!t%qeOAT;EUfnXHPGKjn?~n-MY;QrB|tRJSWee@$8c;R)L1Mf#>!OGx((L$2&p zbUw&Y&W1xE!&iyE=&Y)4Fg>uh@hcj}=q;W6QdZ=a0W@5(T86N_0Zu;3cW1%-puP(d;*H5vR-ew)Sb6Mv+` zszXVPiu%DEf{T0m!9n-(;q8GMhegt^HB_Fz_2%d0dZ4vb%Uj8*vnBaLn#VnL$IEbM8@diYi~La-`Jcsp+D6uqF?Rp}BYI zc%1uOzxoU_`JVjdwNDQo{cSOCTu4zG?x}5K2kzl^5sb$jrFqus^6nTUFK`CxkVt`A zTlx29Vs$`o5c@BoQM!4HFqc(V_i*aRu<}!y;_KU(+2)FHY8I9@g@yb!I14QBnyXFg zcn&K*{o>1Zv9*EJ%9NV1*W}R-`OT>%V|L}X7Pvo@q!Wr#GjSuRbR?;DaN_B^F8;7tbmIwPubI4zXv!8eqi|3 zr7KK&R!dk-9UU5QLh>-$_~%;RvgzXW#x&;;5_;Ho zPcu+l2iLCub%4aE$jg`Hsx;IBqGBdSBy(STtp+Ejg|7RpDrGzHqYfJxL=g|OFc`Nd zFWtj?osvr#Rth(iX=IR$a_`{jgFCzzpRS{hb|QI~U4skgHK`O{Q`Sv0HSS{_JV^<` zNRSf-E;U2;eZQczpM@X1VbZ}L9VSrEMUk)5H4}@u!d|Z*h>K}FOG3?R$aZ@{jb+@b zn>a1$3tLY0n9pb|zTUTgg%#Ku!0SVj8Zq#Y7ykKj3bzVmi z5{nSUT752_Kek6ujQjm}1{mhIsPv&<_0_D+_0qXZZ`BBQmaqbOY+@$324i0S+0s$pI4JshKLc&mt>M(*gWyFxxPUOP>8tzOMgvK61iK8vts4-8WSlJ%j}^DEu0&wpP#7CEeB#* z%lt8hn0{pguuDa#wS)b+GHR!Xg%gzwDT zEa4-PufNkyuwWg-EI8(^-OGds*)nYo!X?z?LkpILl4!*riug1*RJRZoHsce<&Wj$b z)$^yR@^s>s2?!&>U*PrU$4;-lULBZb)GA9NlLt@86#J^fK`pZ!hp+xjG|d3T;iP3WcF^qIgig{p%l~p^={Sw0Ewwn>U(FaNLHN zHcEl(NG2R$!Ne#CpiX-T*ib>3A`&IPw~_p;u&&S0n}V-$@!Q({jG5?}$l3D{#82uA zp`8Z$x6AY7co+4{4k;{& zv9;c1*c$&TG=9@L7|e%2gnV`lO?jg}z213onQ7iUe*}H!9)HR%k`tSH@gyDk!oqz0iO2}?-n}NrzM-<~9 z@FI1{pl6}f2w^+?7!;@wO|eu52w$|zjh$u-0Tc!F{gHq|3}i|wi};nrPg=r$D$F-l z7GcsatdR`m)7P;aj`t^s90yE)-MGN<3IW(MzK5q}_fe>~5FCe;GZ6(YC3bN@2z)dZ z0u&BIJt$TxFOPd_k&Kdh{hl6#F!qN^R+Kt&ym$7bv?sV467^@S7=C@K>-~@gm~ja{ z+^34%F=N$j5S6A`(!SM7fU~5fEpj^NkOwu1X`%$%NP<6EN@~dmFSVaN)3`_ZyR7h14;hJd5f)x*v!2Lx-VdnuMMc)7(iriXSlVvVBY^ zk1=l=Ubz)=ztzrt$x(N2Cq@aehd?P3B_UutP~zAl_mg%?pL6@hdXe&S^!D##2)L;3 ztFi>bqK}1Z<x3AEZs-;6paaRHf%{3=kVmSX<$2_EE|%;UUN9YJO?%ImgaJ=fpc9M!Fpi)NY}n{5 zV(J8~S11k`EYy8jaq6Jsw zDs;+O*FVWoQkh%r-NEZCbjsPdL)#I**Un-IFIuGHt!ACRS5v`Tfpp*uc^u#Vnbur| zs=>8(nwXmJ>v{{7m|k+Q6GA~}w;aVzo<*v-3=(4W){YUO3-pO}&pdDFzomA#EL23d z^KQQ=<-HH?KQhQ)&Zul{w6*nk)nZ*VL1sHDoO!C9td!Crz9p!bcjeNuBvW@fz?$Gz zC2?7$bNQ}tBB$_#j}Etf;N!kaY_;yo45!+-&s7yUg{)20?7;>JrOtGbIczkfW7{;8 zdHUpKW!DdCd!wV93*Lrf`Ccsm&gDp3;+LX~I2?zHZD6 z!mn9izJC;yQ+C7%k6dATeHNr&#<&r6Rph*&(tA!RmKlW z>$fxhPV*Bdov|9K4*H#Ciq+3;4Dm1rf4CraYjYfB+T{4SG{0*$Qb^ND)nUFXI;YYL*Anfe zY2x3H?K4*y+UD77Y7RYtN~4fq4h$cZD4>+2`ky#Z&qs&Q zLc&(qj)ZrI%^^(!h4Mx$LNRuYf_St^OXFF7IQ8U1yNxQjLG$X|BYxB*4VItOo~`Au z*PJ|+TX|qj{0OMyWe=|qvD3nGYqsQ^-k5L`7R4HGG4I=!DfTr`msj5nz0N`D*UIx> z!(`v*Pe_JG$+(0=Izg5f&ufPMuUY`J7&0}@+M8eHv>07e_Jkhd@FcLHO^bjt99%RmA$17f&e5JOjY=|)vnhGt^H=}jRyQ_L;dq_jC}45lgTq^f8eZ@NbcV8y6yY((OlV%Mt- zYsMynL?-NWWQ0I*i7*%> z0Cpl|%WMBm8y#vn15+8~u0s-Rdk8X}wp{*! z5-LI(pGa2PkC0eV%!27Z`*et|UK8Gqok$3)?Y~&n2t@**F)?arXTe}p6GoQyPh#%( z#c_>43azb1S{nZ$*`to*IRoY{E^IVnmn8= zF-?9+_=S)NeRL0D3?(ZEMQYGbs+TjK0Pce(>R&H_==P@X*9rCwLl?iw_;8$cD$DND@RVQa@zh0sjr0RSs>ub!^lRFvG6V zY4X^G5?H_2oir?2w=lJeX7pkf%^Z({85jXe4q+-{RS+M>KD zKZ+0u-z}o^dDIqdXw)UCvBSK&2!4*TvUwgSY#-eV^W*u%YO$Y!AojA-pp=>V2iNxN z@*h<{M}z|R2EenQyS-%5%zqr`va%K6l-(YWZh2yFJL(M3=(iU!iB|bK8*O%6%p`o{ ziI)^PU1k)PieGs_0#IRoMq7_^bi5|tcYCU&Vq+yt%i9#f5cqVdg)S}t(M<6pi+fk}zIf>mx_AT#1Kk`82ExIl1x>);(>le$ z!4Kk$nRLFLxnU%(J-Hmepe-sm*0kx<~e%W63AgoZn@cL8+#)y%j<)X<71l@~%@IT2Xg!JdSDZ z-m_2aV1i(Nueh8F`RjTaoIuDjeYl-{@M^34t4&<@9L;k6U|y2gAYHa)x7s_E)CWj# zj(;EMWu4u`X*s57-lAMHSZ+LN{ta8S)VZkMRYix$_?cF_h(2Wel1Fb;Psr1wOXc$C zc^Phz!~WgAaPb+6mcet8OSEvhJuK>ZTShL|iSZYw@$YvORy_p9tfr zO3YXGAHq_{;Kj+hbPF$5xNSBnsY;ab)sVO!(pJgdP&cKCJ z-O}}ahtQqD(-(HV|6!yWr^QRP_2gc+jTGvV-T7IRCH!+{z}Vmo;fqezT9Q{3d3e zUrkDkyqGKL`U9Wu-Lq>5<3jiH337KPUEg`DN=ZT+TpdoQAD0~SRK0;~v*}aax;OXc z8r|e4kCZh~a16@5?!rnB;k5PE3xmlm797H8qNp!+-YGd#p_3*&wn~CYKVzoQ`-_;= z1t*=`JeG<@+RC~!zIq*Kq+9OmN^B7y-?^>PrF;!Kg4y4~k9I2TO!e z%L7>X^I5x85LAL4ZoqN(2jJMqP?J}XoW$PW#Wi+k;6Rh%#vA`)qcbta>;$MRdf1Kh z-+vVl_ZnZ3YM71^R2sX_zC2Sq@a?cjO=!^Q9R zco97tr_|O5EejY~psIMX`n4cc*xyTfj37g8?s3l0fnf;=2@7PReh`!x+QGd*LL=l6 zI8$vh*$=-eQXJpBTEI}eR<2l!1=P?_N!N=E759da;Pff z!WbPRMNQiryKB>$rMayp5JR-0Y0I&uP z;6GfqU2g?G-eYDuk01)i^=F9OKm6cNi6r2Dik#bdIyZQZPTMzRcN=ZHR!w!A4+<}N z{Lmkmr$$fG$Hb(c;ePi{GBlv)=G`*{l; z^>f?#dAMBb`s+)rzUL$Q+;C2syvUk6=gExf+uL-xbg2#q;e*65$VjXi|=84r)bmv%BOR++FkMlqTajh76G^0BxbEK$zj zc6lgl`P0reFN74B7Y{5p>Xt_%o~twW+jJaRWU2EX5xxtxJNH`0ZRba`IeVAQy*X|I zdK99yhfNJUJH@J^I)H?ZZO0OJZG?;6^Rm>v89;B#$jW+m@-ya#nYQmYmxu4wfdd20 z%Ci8;Bd_foD#+RS5>upZ>KGH$xy_=hn!{a7cXlr-#FliaA?-flIUom%E| zH#*A0&F%d#-i&@QOUAEpK2)<4T_4bL{l({b3I6`-;S4__`~D!}!`^wyj{f&Q%{lLw zlQ+LuT3Ov6oU$7H5!qtYXgU-TR)URkh#URVGzguiOnUMzG!8 zDtFv$PAXS*T%BE2u4MWyH(f7!c6bf{$gq89_voC_ar>}PB}%NJ|I|0pn~y`x_IY>v0rZ^v zKZ1G7yx!G|k#>w?+R>)BqAa!PWeMEwlUTTFUd)`kdJ)Mvm8J4CeOE4k6kd@z;)#opa%b zRqWf*9JcR1quDCswKl`|0152)!6jbAR-^0U)z%vWSvnqlT+3IS>hW@(&5`P*qLyU+ zqKmGLpO(r0vo8nAz=*1k~Ae1MEKKVRbZ`**%9%?TAj z>sP(!0Bg4U{uD!w?^DsR4XLQjmvkrP443&pOi?&cg|_d>ZqC!qb;_IfE_*bBu0Gd5 zXI)|Tra8mO>`t=q^(_9=+2RY2Hk*F(Km6C3wFN&dtgX?_R4nA>fm8XWB=hj_O52(yV>9Cut}grBCe+g9!$pIDPvUR84xs3oL@$4kvmnnX%Gs-Me+$$9vnhqYfV7#Rb@dQ+0}QYF@t+7W@;yu8!4Yi*!SFw5so>2goNd*+Mm)5UL^ zb53>&bGdn z`cN)ZqT^xf2fo4GJxj;?!f|tr>VYGdj+*uQuE2prbT#%brQc2fyHM$Mp2NoC%b!;Y z@1LtuF}df&&0X)h(jv7suuK2Z)bulT+*LLwZJz8IaK{7NkEe06TLVLe?D15~XrLrc zcohWFZ{}-JCD{U}X0t2=!Y=Eit`AQS=Oglzv8hy9jZfQnEyFwqk&dj*Zcm&2B{D0{ zlTo4_7d1>ckNU7hR@UadosN$Cc4FK2v1-jKIot(JO->T-@LQqD`Ad9GZ^{3%0`pLz&)Jh-O)i;`%nrM~#mH`sPBtDM?BCE^`l? zktiu6k?+jBTige0OjH?&b3eWH@mbboGVr`!dKLjT$@Ibruy2^XFHWmBR3GP@MMbR# zjJG0Mq_8+SHL08Gu46e+gyVrn+XK$LO!t{4z-V>cUa}l&jTjcH)A^FMx9okh*udYjyYKN`NnZkQ?b zO$$m8nQez6^_2p0YKG+1VE;29xY5PpI{4|fI80o+&?&QBvStSt!lZE0&Y-}=MAr%;4+1?mD&IdfIBWJoXpI{RcqEkj5?&b^iMnJMhkPzcDlY^V%Yp_kymszJqjS!~O;P`c&I?LK$@b z)rIuGnEaoKg8zm^3f%i|I07Z)e|}w;p};?k0I2#I^jkD5&8zM==F(x_771@_zO%Ei zkT)o56GkxLnv6of2undi0c;<}z_57$>Byk0$J6g5Fj}KcXbLSI2_i*dby=DQD%7Zw zE(o@;21O9jV?e$27M$rYurG{*_PM6^4ht~V<|c07yzqStvHksX$dI}>b$ko)cJ9>Y z(bN&sXZ6UT>Fv|Cd^N@=QZ@B=FChr%9^M9otCzP-j1>xspZ|JnZtw*9Rk=CS1)Ruc z?>T17H?feXwo-H+KPrN3ZSYqrG4$R_?ch@gWB$Fff~dS8d~52UscGJQC!IEZ%s541 zid>*p1mO6WG%~VLX^<(9kAVDc^3l4C(=M2UfRvB?mkex(1RpP;*oCtaCSMA@~=7}W|r2v z&zzO^ePO6JH_x+IPTH9a8Cx>?E_y_3bj}5LG)5U# zA^nnv8?ErBGh!~Hk!i~MU3(on&`xC}7OPf`K|l(HAXSu?BkI#Lvf7xN?@B5nWV6vT zf2pbxbo=&kZ1q)}$}BNJsrI-;NQ0N{qq&967eu-3tOinIDE0$wqw|nEh1lHB2s4bj zZ6Nf9pyK=Klt>psAb>s@;4)vzQ_CXY($kpMBEqy7plA12HafHW7jQ`-QACyl?B_(* zYH0QKbzA~%J5hDF{yQ8P3ZGD41deZ5hb+1tCXdIM=sDcN;qy5^QRZ7;TPUS{H1gXO z|0dYAwHoMSJRU|m-TF%b0p#Yq`zpE3BCoh%oE#TjrZyMrK}0kTuBZobV54?F!r5@w zFB;>Go?hFy@xX|Sn8C5Km_Mc8;o)KQRrF`cq^2f*z}5)U`>`+H)nA0xDkzi8=^am> z^zx3_4Y{j=15z;>EZB(CIVcDHaKdSXNMbV*HZT#S)TJOFZ?Wk?l+?_KIu4E`@^b#M zE7w1F$eZ8$V4tCr@l1W>K0w0*^^FYX;RYpdt8xb$?PCTZMEAxbtJ$E z5-0){{h=-t>pNb!zP&RP!}k8O2owehg~A9(n&v>=(_g2}>q4u81O&6iBKb9j6y(}lu#v3T)IcXQHe-A>m5ok1^!_#WEb$aM5KMAa zrGGlcVOLtB?66Zd7ZHl0#m}4Dp4V^AB|tJKl7p{EK<{iU2ym2?5!z=pDKU%#J%<(b z1#QAmG*~y51T$X5!jYw=4FhxE8#Xu$pUY~5zS*@peB75Ww*qqq2l^3K-Sn-v@$C4 z0G@hImZ-0Y)e#aZd{L@L?+8!TLEtaz=knW+;(Pp>oS{W5@0UbaBAwvoHaLaO#*(db z8f>2c-x}TllnyHQ2^zF@v-Hkg8&u6^w;1wDh}Ih9s)MsxNnI=WN!dx92$$dODAzq@ zIf#Z3;Ne|~j{}HnY9O%0ZDX@RbYmA6 z7fnabQ7VN}{i;SCPEhHz>9iX+fRDgI16c4B9UUV)u+*yEap=s2qC#1kntEt%6KDBq zIKh0i!y$bB8kR`wl8duD#=*ve@G9Y6stw~yzFMWlBX=_b7Pq&sY|8K3CnnCH~?{bj*|ZU zrn24>hCt7jR@J;{a~*A02ndmi085hlIMx#fm+nnXLGdREfuP$*pP1gsnHky-BzxGoiNNZmRvsmw zp~gjRUdm<_wv66@^A`)PfCs8Non7b|%(>@d>9t?K1|qXmrC&~4Kd+iQe|*?xH0z`T zBPVW*xpM!RahY9`d>@RFF`fz!!mwR!3mNmlca1&K!T3Cs9>>EX+Zh3t!pilG5&o5m z%@~d?0RewsvZ@OL0dNyzeET?H3(r6y!B87M*K01dfe8{Q1102u%nVH|J92T$vY z&Jv(SB_Us4W#+GY4IGd}Gw1ew8rk(y&syn3*N{`ocYnMVVAa&q~|o!*uj; z(CT3gLNhn&%PyNnbyWSTH%&;zPaJ)+QLbitgCmko){X4@Y-60bLzv?^wN>eixy@mPZVFkx+E7>coF=V`r3 zsffeoY;IvQbPlB9AuHqKrw`|&s%fvbwli!SbSnMDa+{m)&PPQ>)13Vb4l@sEBK*(- zStYBctq}cpypF&*qNyIZkM^%zG&Rrt17B)aaI>*t;z%&4?LHtw*eQltSb{XNcle?= z#;SdT4CN9q_=uR$WtG9uUgz%uz#rcfAziN{$*3ap$W+32RaVPmIf`7B?kU>pJhhd=q$PN4}k*!k+9*SbQbvGJ1fO^) zdNKKDC|5)4gt&C)9?2XJ!uyb=u2VQrkr-4ggnQ6+GOWt@}_&Bgr{cZxMjtI zjqb-bRNLIaG(eB2`YC};&h__Nf~!p%nF%udj{7DB8g~%LZ-qzlHVgD@Y`v@!JsG2ld*-oS%DVzXKIRbc{kAV0nH8GQ@p?CR5t4hJ%)-|0 zW!NTrLAPT6Nj4K?-B;Qb*o$l744sk);V#9`3ko1C#kcYcNC}1F4^b!+hKB%JoOggG zQMUKhoJ&jA24BJWUkNp0+g9}_t@uLMWp}fFKtv{)`F7OziAp~H%v~K95VG`L_B?L; zt7!)4GU2i5lU(jo0bDJfCtb*Z#OiVq)0>b3jgI_=>X+cNU}`MQ0+oahWAl;C%(crO zcu2ll4}42i5hGR8(pvgGm6?!WU8_SQ4``Sa#Rp|%WHg=Jr)}_M?;vL5Bj~RRvPF!F zYPXZ#s?PNipaw%If(&oTi>8iT5aGnLclfjM1;)*zpJI00E48iIcXf3au8u`h@i+%w zT@H(vUSgNXWnq)-LH6x;r?7Q*Ua03c`s`a?V6*-NQN-cU6i}Od$dsmTWO_S|4N{-R z{{_^9d+O2WCBnpxNROQBooi~Pp#oVlK)=Sp42wY4jPWaqAh+xk>cusOvPAt%?b)}w z_}I*vBm6NqPVe4n=eEw|V%|K0b9$#|=Evu!#^=}V>t6^I^rxp~SZ_HuzxXN$Rxkcv zwE(R@_Ii*pv|VnnJ*5PN^qf0S@&aWrn8^8Cy*5uA0_P?wL*L~Iu;?{A{Z)Acif}%C z;vzu%E30XABPx-{)_$}8rFKMv56SOu+8qD_>;$sTcSbQgjsca$_U7hh0GvKt>FCJM z{|LOpHACJ{zrR^b(w0oRPiwsyPUGAO#1sKEGXp30S`TXmZJPIJP0lF`^lOae9UUFD zw59>|Ex>mpz!24+!W25`1a?HD?TWs-y1JeoY1)KVh4$Yu0LA3zVOyU9=>1lbSyBAp*xe;Qmr9V`?J z|2zuD$INbB@pfD5^?llj$tmZha_ASW{Jo9*w#|$VEjg?j1*A5HKrjT_hJp6E@ZphI zQyECkc`^UyEeu+}1Bzn2fDox$#}gn_>e%!i5Jb{%b+i9Zu`6lR_hv1$%kU)I^H0-8 zv>+qnMo=R@YDbiS71|^bEVf?&0a~8=1w|rJ74BY@gaDKvs-f0w*AV*lIR+1 z6udSyd#5T!x_XUFPXWiKroceqFi8CjAC##=Cjo)3^XWqoqGSN0OC(-^1$+vGYWPg~ zxC|$8#27`tP*VU}LU1Bcx}?y8fw*Y&+^YleTw z4i80;1`%3ttG;apfM_*HyGicOu;^Y0wDlXqfxbGv4%*<8nu>ZsfEt=Q7_wuWarQa% zEwkyWdxS6!g?`S5=`_xvcXN2M**$SaBLi!Q%j$1GRtwgA!TWKJqblfpark0DRgfz0 z^QIH|>|V7lXU*Zv7o`fS$>b!97hw$36Mse20lUk>$XN51IY#7e*Z1i>hxOPSbaQu5 zB^ym*Q9FklZQ?7Yt{&HK+`{XO0S;E2*fc*x39rcsfh@Yi@oTw0pVR z+gFd9|6M%7WTP+GT4B$(3oB19z~&j)mX>LA*cvd)cBd5-6r`iuNi)kv2_o&vEN*CtZPFExDI}7c`)^HIyy9V95Tqat4rRvH=7eqS(Z$W^tZ& z{+R21TSbz9P#{n^&26Q))-?wC3ST8dkl_8rPTax-VXlVlU+!69K!(bkrLk3F3s+D85s18jHR~bU&_C-_KouDGUpRWjP1QWzxO6E%1+4wk@VU_ z>`CH%krlvTxLp~i=fiZS=jt=-t(iAI8OU(p$Z8TkiOkuJHNb2wkCqaKFoUz^iBLozl^{KMGwXUTYyLeWR8S zf{KM+ zZZHk#+tINvI$|KmPugPJI-(lr8M?}pc;lHd4bVC(-);rsRLWIi34rM3*a^c zT;{O=oUazv+}_^a+A1WFrYd|n6@d7HRylpjdb<_yaWF+6P9!mfffVnLm5)ySQQv3+ zkujs+voec{cIdvqVI)nu>Kvn*H02JheUdD+>ImE9Mf$w@m8ClBiutB{!SEbJ4fpF5C_>z9HLF~7ZK?vW1W zpNnq3YYquP%Es>-_bKn)SaXlwaTAY4h8IBI#)7%eWDi`pF5C^A!&5Vd12r4*^a}od zKEYKu#MQ!9b0qrZwuB%G&E}-nfZj;7=di5WwRjKnuMHGWwuZInK?OG zS$Y~8?_a-u`}+0nq%mS-lOfZXDINhSA|XHG%wfRLBAk|h*pDD=_g^`pP#D3&mxh1` zfF4}I0tPKi{D|U6@vt~_3-}B1 zU76Op&FDl%g{ED_2IQ2tz9GDdjH#?=EO8b}=jt6hLw#MedmfwfHQD`I}FUZJvmo;P~E}z(IqH>7XG{NQ8!@n*NkPB6FLL*yVixv5!ne z5?Sy(wqQ6XsR*}O-RaV2415w!Yq9W*scO6HgDk$y{%;UFo*!+(SjM=rABOx$oH+oYgJNGZ|4-F4bJMVY3wqyi{u*nkh(-8Am zW;d$wF46LPh?ac&ei+ch6?ZQVKQPhlGBThwGNi4ubDll&wHLXTpUcx{ZC8g6DLOIF z>bWoGgGuk=QuZS5q3S1kvbynZr-u|6n2)KeyCWvZIXw<~z&8!?#`euPOc>b2|oBx{iv$8eR#sISitT1R;VTk%+`i zY9fW_ejjWUqp1DR$t$I)&;_fDYm0K=1O6&v+SAhg+?kl9@v>Ia{NqOan6H#+~J&7oO&bx8_r}dFp9B$2!qmgPItNCCLv(Eg^(+bEEeO1 zs+?wci%c{wBaGLQ)a8|>OEUYplf6BWQK*s8@7y0;x&mtjD ze0$CGuxhi{xL&+kZQB?qLi|5_;ss-$I6OfT6ubIC!SnE{pn59~1VthKGJQo@2z#cJ zt~#$1B^eyWpIGKadaQZk7dvefAv*f{F)=Y%kC-yDvsdPPNTqHzCf~`dmx_wYQy4|r z8q9NfFi;(I26I2?=N<_GFcR{PY|CHV05iCp|v8%=t<6?1fU^2`H`_v&Q#u zEGIzEmD$-9<}X9un>1vU$ZD#(a7wrPEEOq|s4u-ZJ4C3^BWj&@qPlXvKYZUT*7lS} zNCf}kL+IWSc#_{I#%3Cn*%>eOVY}KcaTe`-s-Ne46zl&5`+YP;ZMpM0%;b?Avf#}F%d6H7zEL9bL5 z$_UPj`|z!GO1Y3nuF6aED5|Ow)^<;9z);1zgeA_WdyvT=cd^YpX4aGB8$g^I^zlna zTh@)$rAZlzUnh!tKszj@jCY{S9^6?n;SkK_oUybsM}cyBDw2-)F%a8_{gt(tLr9Az zFZ-6ewTp|;G9|J%LrWsv<^|oh@USSGZeP&s=8Fb1#mOpoNCe=<1Ph+xKoC>+0#r-9esj`SRtDq|+@xX9#VH>>rDR{MSSAU*pIY=0^1Q~^2f-J$K zj{*V$6`e%%Rt0ruFtNE#^%o^OC%q)c5F;(6x3{n+H_}$sI&Af-H?=&wMR15JAt1k- zj1@uyRVSJ--c2>L%BOlY9rP=dyv~`p2Fqns_bVyCimswcCo|G95731qwqkOeiRd;_ z7S|I?qB1NlHGN66yE?)mrFU}OoTqoY8<*-VLfvapw!}hLak;mupXA>_=1Hq*iTk&7 z%tTq!LAT~=?%|D#f2f?zM{0`?mfHnP@}7mgthRSA>GI~XD_uEt8^H)+WeO);`Lt)00&YNI!6&t?z>9Bn{dW&!t`#l12<`QOv zY=FH42jKn?s1Y$AFYlwMZ`Oq~l|BO$9DCpY11$nPr8zubKWOP+D_U>^Y}Pb{L=eXTnU&H`~BOfN_es< z?URCrF(X%hV@F2wh9_$#%^Cx%WXFE|+Vq@48dUd6$?iqCcHT3w-`i;Gbbdg9;!fs1 zVm$akx+Yt(HU0^VRpnhyuwrO|>Bf(^Y+qtN{(xs}Lc@^hyuRgyMdxI*mn~O4m2=hN zk&2}AM=wGow{O)N1UjMvFJhz?atJLfDO$8QTLUS)h?g7{q$?-+1ZyoNheKLO+g{@aNG?3r?RgfAYbr4kw75( z?71h3|0{(QfjX1mBeasg5ukas|G`ne{EHMu5l}0+kW;c7eBPVkDoFS?j`3p)D49Dx z(UFzA=dm(!wWBRGiLBtU~;P;k|i*E2YNm{Wf5FJ0F(7ZU=63`zEX{bZHYa? zrtf~l=Hq^*&S@j*5Iw}6%}yHZiW)9+bT81w$41rE%SxIU^ zZTc?`mx^{hM#_a`-^g3&Du<3pn-|#oqgPFHwCJ~=K}$#67wUBil-}=YywRg>xjJl9 z--%qd4_?MzQ_te4QDQ`S@;UsX#T*K04FodVwHe!Yk#A9%KBFublRcS+RI2JsFX{_V ze0+n#!;u`Hht~Yt3(E%}{{bBueq%wwN(H4zd=Ag=MeoqU?}f%UZJ79oq<_!LIXZW7 zG4Sizo@Y1fO(~MB=F!;ij{NzxOF!6y$!VRBRoP_9!hSOQ!othywO2PkL)yEnRFasi zvc4hp3DtzBe;%7zk9LU@;L)HoeECxpF`tczzRmwqT+T&E$P%Q#*&FyRP9ygb8|F9E zVJhUn_DnGjcG|mJ?&0kN6r>1GP&|IIbA<8@Z?CF7`JQV&U3}aNC=eb(jC41=b%X&# zOCjib*(c@lI%i;Y^%|8lHw*JHzK~J56G-^sBr0|5M})J6VzuG1cCr`>vMPz8LtEM2 ze1MI7%PLdXcp&DR{x#^mudS_5Oe7{wUH>5EM@`KTcAw1Sv+H>%>u@LZ#YCRN;!mw- z`WH~hX`ChwMC>}dJ9E%T+ZXsqLo+lv|I;tF`1G-uP`z|Ht!>aJV*7FHMtK8uUS|-o z_WF|NUm&5YG!U0@G5iNgM6k;_=fXkv>3_q-Kiq3AcJTZc2C3#hKl?w}p|AJ;`H5b? z{(TXFIM8F*-dSlaqN{ZFz)0Y9yWdxK{wh=QCnNs>*=XXd<&FSfk-_g^Bh8ObZz0rh zTB}IMms}u_@w-!hbH{!!`}@O>xdzRMp*R(8+}*}Lb4F|g6nCP|F`qCV!Sf$|w>8Ws z>SJ`{m==X_Cf>Wwx~?+o^yyD&DcB<9eChB()8b5242j5cWFYRXC%A9mc9<}NN$9hH zvC|T*L|uYtbO6YR(iq*a;FMo!1E`4JWG8)PDim{xBy4`m*a*Vz2m)4zzvyQi^3&_8 z(#tvw7>SB8_I-kgU0N!~bSc<_(~Ah)VZp}vEZ|p9YB_ zA>iUKE$K|4c<4X1@mz7|RA@BB6hKIpomruCTu;pOimxB93D`#|iuYdnnQon>${d!V8<;jp{BjD_-*I6tdlkp>1FP{w=U+;-N@q63@u!!>F+RD1hv-4UfzUzgH zbv(>uo)95)Y6&_zmT1b%MGdWlDucc^7>LhkC!yHCx7aC-K+Iq`CuqO=ZM5EW0<|;7 zT&<3q_Hz<-56^Wuw3wzWT8Y!BZ#6)78R0#k=^&U@Ia+QtuXWjtV=?}MMOvqK=r(=X z6W2)}AJLs;X4HQBg|M!sf6OKoLLBxVO{6lVY+B;%>0q|&snwQ>Gyf!XJ_TheRyI4H z)x$3#BLx~xeZu&Mf)a&wYwvDNa80u2Hm{mo&$V722GKfj#1aO5VcDeeyod0AM-CJr zs3PRJ{Wo%;0RQD*4g~ize=j1Xi>Q$}YgIqdC(=)glh8Cf<1JsR#B%YfN5#e{GdQZ& ztG#mQ7ex5_%J4x$nQhEWv^K%$5EOGyXcCd>YhM}8HJS$C(P#`ad#2RXTr^@V1NNaS zzFwnP?{16zFHa)I8$a9L*{KGL65#Kz>982ZVMVW2b>6yIw_>y&5CmOL?NSD#i z2~!GD%-sCk!t5MERn0#ZCTnW94hH@(p$NO{;Sl^!-+paUAefNLbeZwz{jW^8({3O8 zj0?5Qe>m~43pkv$ImO4TZMp4)=y&s)|IXgMPOjY#E=(IGIr(E!{j}2X;2Acj2jwI` zy0G&tEbKgLX>43voQJO$zqdtDKk+|v;w8#{eb>{yC-_7`A@m6~t+%(k_Y<*D!thYb ziRjbIpY27H(Y0)dw-UCgNJpotxvZ8pHoC`{_4VW&kE{7EQ|}V74to*1(|GkAne*){ zBxNQsrLp_H>_~f|^gjO19*dxg4$M@s?3WDX>ZzoN2rukAS5e$^TTXnc zRq7KOdwoUK+m+Hz)<_yQ9wnxOByAlX;^KW*p~FWLo3>3|iaX_UJ~EB>MKG&f*MyFz zSZu9xmGZF#yW&{hZ1jCMohU<31@$rSUYzTM;X0Rdi}@{yjXoNCJYr5b$W3q0R?BI= zHHl1)lK7F+AW`8weIBWWPT|VorTce1;Cb818U#+UY zthE|RqNzQ98++Ea)TLJ1C{;y2Wt?VRi+aUwZLro9l6kN-QtH&7UmkRNbxvASl65r{ z!;H|CL|h}WJ>xcO?&b42OnBTA#eUBwXuY4@LnrLOrZJ5h8R&Q|`=TO<|lcR3ju z`)Ji((Q~N*5PkK`F^(=P&Ux_^X~B0`>ibxIF;?NlR@Ts)0Sbo&fk2FS$v?9GXo#4D55P_ zM~A@b>MD9_ktLO2Tjz_N6F$g?Z!?s9XcswmyxOIl*Apu zHkcB!ErR`G?N4lYjMnLK-k;@Z&7GFTgR1~uuQL;S(}mv|6+S~qA(v-sQf{^lC8F13 zkcWRG)nzlEzJQDazynTJR}(JhN3w1~L4GP#8}qm4TTeCZ7sUEB=BcC{Ry--{tVc!Lm&ZdIBP=7Y)+fp#uR^;%TPF~7 z4!}#o4%*m3FM9P>Qu5WewpDA^(5%}Rh&IO7oebKtx63|Ro_j0Rh~qiv1Ux{&H<}k< zrBo)rC!6U{=I3kCK@)E~w{HHYe!rVhp2RUlw-XPu>9we+)^)i+0B^P#raIloyma?Q zn8EhM_W1F1&%O5Hj|{phf2=&)b;@E*yYlZFZmO0AmIyOBBO4bL2?|c!vr~^BFH-C* z`Y4RaF~SI%bb8!}CDGq))x$IJmue@uZ1@W!>&61`oOH``-`ib#jL>Tq;gXlQHqldv zOizAO`#W?P0XOx zo%7#a4ZSt0+;wzP)}%uB(XA;;jAorg2b0$pt=@hsDq`}s%#hYRnMQ+fsF=5{t)hPT zZ(GsDwzAgxfZcmR>2rz@Ud_e*C|h#hfB=^>EosxqgWQqbw6ye9EXmc_!D=wlFkdgkaJNvk`y8$9PRsqOre~n<{Q< zu|M}49w|JWbJ~KFtWJ5iD19e^-zI5u&{pos1Up{U5F-1qq=`tTG^>^2m+|IlF!E*Xg zJ`iG%jT{ig+V^H4=)|oQ9%pAQ_-pc6n1PujwrcWa)W;{ZU1=t7vqfj#MMp*!Xq^v~ z&*Y63>BeuN{Cux9cNO)5SF3udwf>6JR`a}8Z*$?C^eZ#heo}QSg*S=Yhb4-E%%$zg zqurvXr>7__K?qLwik5Z8ii>1KM5LsGr_6fVJH*Q;%IVcB7Y<4KDV7icUMZ zg}v@zIYyRSZho~luOr|$GD;PUejlles1W%ad7t!-CGmQ=FqeAnratM3m9 z{WhUbbu`#3BFL2#YcCEP>ZW2As-Y1_DyO7cX0y)f-5X6i(a{rq?Xohf8nEA8z5Nh( zL#6WXK5e}zL#(&*)ixjg+xIiVuLnrKT5kV#Dl@y%?KCIi{M}l=^S86~+1|Q&Jm0Ck zp;`A*st_vh)??`HnI9=u5A-CKuTzdXL#e(iWRmOxw?9LIjT zuiDzy1||qlc8|gfV)M+b-7ZZB+wR|89(wNo_b7qb&_#YdDRO^A3v1GD<_e29J3HH8 zq#*IkM*Cv#$4raP28DME9a5!-6fb3oAj*y;h*DOECsCV{qguLsYKQN zf#Y1ai-PQxl^ct5VyE;_&h+YVBIYOYrxv|$zCZLo$kIIBB2Y+`Dai4Z5A~&<7kNgB z(?PAroaTEq$6Cs3r!6iH9L*X@%D2SV=SSyR`rW>MezJU8g2hPGx-|ZNraCO~jG`|d z9xtW4Es}6MmmF-wC2UrQJl?~8SvBSTggj@gz29ncedNV8+xlwOhmRlU|9;TtaiJS1 zRC2!DD3%73{qlK7G>37ft@Cd9x1K+)S6;`{#M~$5L$>AO>^5r(7Q3-{v~l$(jaKBZ zd{rK;u2Q?C^6(JDwo&M*#G{*ilO;u5ZM(|7uN4c--p#?)$zB>`cl4CmaS`;cgi{?! z$-uIB4r4uab(3@vi`Zg4*V;Wdo0l4AeGrs2%VY_|GW1res$W43wdiajbeih!)Va|OS zJbZ)SvlII>CIgv=8_P>at6V$d>tAXZwio^V?_A!lb;`>4c6extAn~U2@87?kZcRgd zbGYHmWNdc&&dyHpv_)HN8sBr|a&r9bHmF~|#7uYBt`BtoeV_+^$UH<9E@+ z^z1nNN>ZPrDn40kAk8|>e)cTZ?qU4q?Uk1iBNa=HqoZHpioo%nt)Y-BsH;z=30v7z zE9OR%`z_GrrUgG=)Cp@gxu5-R(Q=c9wiq~hMTQX}*T?d5q9lN>J-AScB7eE zD?8q)tLH5aRoT4QJXsxR9w{-LkMBbpBb~N5&%b>eNWGq?=6|$yy4Ch)7-PNlnXXx^ z+h(yB$|k~y$#r@JIBdN)Y@L*pl(6Mz`$S2uCT6vbM=nzMMzh1N@l`&VQh3L`GRx!B z8W4&f&S$~5NR+_OZqp3*NMTDG=6ZmN*+l0300(FNYj=M6Ia1>$?vCgBw1)Vb2*;zm zQr*2bqvrF>oLmSvjSSulm_q2}nB*stpP2)*+Gpi)R!W%lyA66~Sxm=q@$t37Z3jkf zF}(Xln9ave_RQ1&{OJDu0f(&%jc>o-nxKofc_y4&zQqceVce@K6b(6ZJzV3<{!sjP zY5X%1+QGF^a|eHWOLH?Zmo31%9S;gaUt8M0Mtho1#O4yuU~(>!XlkQSh(&HtyYPoiw~Ol$b5Hl}(_(hC)V#+|HaM{nQIH~ZbhN8f^lovv%j9=yb}hsu*B!^(e=0NjaHZocyde zQ?IW7K}K(vJ8aRw5ICT+IYs;8MXq8F|K~gPdn?aw+nWsJ`dp_NY>H7(pfa{V{Mh5l zYSlSxTF16NQ~1Zpak%*GYv9#of8FKLImXG_u?1=Zm*rJiN9No5dpi~r-m6$*Z;Ydp zrX3dAx)Zs4EF9p;{(W9<%RFjC;jT@fREpAlN!T%yV@sRND%tt+DaTGLD@}Hb zzdFLg%{4Js+moVJozbN9YBeUOZuokNqNS48%MosmIY9*@jXIo?2-p6HDS~PR0~JOp zOzeB?jYs#Vz2nCO^y{-G26A)TUR-aP)qFX9pgvJov-9^21f=@ik$+s~zQvmpD#r8= zIiDs=J31b|M;yAvK64M^OV63GZ0h)#lS2N5&2hHtO{@~Eu`1@%I`Pl-%QJS{uM6ir z{F%)*_>z)X&fCJCs6=BNZ#pgXwF(_&nape*;+O5v#i-4q2w(@3TpBM8^cb{O+idP# zp#>yJjesJ9K977gAD_&PN!PUyTj<-;G*~A)n9naIM4WGtzSyc(Y;M-qQMtiLxM{jk z(De1#ee$`tJKu6OU&%plAWD*SCNu0r`ttfDqNrG(heTTQs^B{opW|*kT2!%q=QX=E zI|s-2VbKYDwdn#4E*nXcZ0}3f=*YFgmtU|0Zwo0fkRyN0yCm!%z|HoAioAyu5r^do z#=fSKmRV0vqTPHpQLnHlX)Csom^@M`68BO%t|H5WEA{f{r4H$TR4_^LT8Z3Sa@dM-lvb_m%E9@vuU&GGNMhHOp>r zsB!hP8s5D&BX=cwzJ~V>TyP(LnK|Ea`6ull49Zr!-|th1 z?q38?@}1VHnG=27vEjJfjRpMX*?b7n*w~oeG>6{R#PZ*W`T6<#g4{h6-bMH>q2RZI0_Sq5Y&(;6Unxwup2TIncgaa= zJ2+YcvGj5$^4jJ6^2h!3s;87Qw&$b%d;a|CM%ziBMhp|xDoiJgqv=#iEanSGut=i6 zPEzg1E|&;+;Ws|QPMBde7yo(OKkdZ9Ww}`!9;9Cm1-=W1{caaRm&?Pkyu2JFv__md zI`es>9?TX{Rrg!FogMHDNs*zjm9N+E+Ib_aVsy0rE{W@9=v-GEtJ6lGPoFM|RF&@E zuOs;6-n=f>4+K}L%e4kw)haD@38Y=g!p##idZ>?cg$1J1#hiqu+3I~#$h>8~tHmZ& z9>qjePYPoG$aA}S(|CEi-{FY=nEZH$u!DCUY(@5sMC1K`#dwV_3 zG7Az4s94x$xR5R{ER4!Vk6#q3IF-X!+uF_+<^ynVYiaHKM%kI&T||z^kd}F9UU}e&ZN^n zR=c~KRMX4?Q^an^8Q-yZvb#L7YaGeE>(={(CS9fne%owM(=ith`QCSo;U`$f{CvRb zdN3qi?_g&;Hf9;E{VrOUK*Stv@}yxy)NFmAKtm1r?}H}MYo`%%TjXN6I<|%=GI{t;@ReJlEi~77V0(K#`h}Ge3u&-E|JDai=RZjv5Az2 zb(~41U2$~G?QGS|HjZ=qRH%%c$GFkaTBhd8sn~mWgW_EkeV*jL)F`6P*f_zXt=T~E z?oG~;D!rq81vwBKF9VV4fn$cpIO1f5A(9)Tk)F?{dm!KkVWXv_ph&>r49QDAT=-ivj1mx zY=t8t7ed7=%*X69Qw;=YcL?w94Mb(3HLxr5H)qd0QBP2{9vd18c=lsts%8UMm~aEf zlBERk@LRzfOH<-7O7SW52aMy`p5pW+{;zltS}Jd)1q#s$ii?XoIy!>K;0QJz$n0`C zo+<~db%1&RojM)<3QcZ$L(8|ls`xW!`XR2ejEsfp_D2vr#N-0zOL6GV$2$e@fiJ)& zb87{Wp{>GV9;i2a`}>Jf%bCexX7vSz)4*WWOq7;-as!VIw9dDx}cn# zoTg^d*}!zIlMfat$)iU=sPef-TxB%$-0K6GH}Azx)5(dw0Cspp1e@7pHV11B_hZd! z5jjmD*rW(}0mZXRkBITZZ$R_DmyvZ1NRKfB6td>3cZP=y%j){ZSedDsgoJ;)&R&&8 zDc;++&)L{U%*x}tmf&7IJz*enLS!Va0QQFMIq)!=3Q&J3;>r!biJ{w^tYq%lhdWWJ zbFMTeMo(we99Ok7O#ZyHRwJ;xwi`4TpV+Rm2K{C;Gc&R6azG880%yZ~vVyU*D3Qyq zyQAYyMlJvG3$eSedH*wm*M1MhcT1xyi}rfInx)nFzla+)QCgiZxfoDAu#GL)ayZ7>VMoU3q;S;+afMW91%5UR5%MJ&0|M|FaAxpTY)|^*v zoBc3YW8I!4o*~sRU@(P-&Z;#qSliz=p8Dp37nq=h|83|a&vCp4aLBS{(*>VfLWoum z=pfaZXpb%B9YPpyO_Y~A$3s>ZH3wKDYtBRryq6WgJEQ&vP@Eut|K~I`veFQkzm}Ag zR8&+<*%xwj^4{G*tBkMnPs2}gtLOHSb9_Iug>-H^!?Gn+sB~3eVVA?Ft6%GZ{XjTG z*~-~r6cKD2;5`e=oM2f82NmjLHpWZeOlVZw<~z!JsTUCLtsTWO>mv)ul; zpY4grOr6U}p;qB0i2M*a96u6w=uHtIVl_c8DB)i{p_SUJ!lOJs)`iT^%lNcA5Q*Q@6F#wP5=lX>H_X1%>PQh`5)d6Zp zGOvr{!3ra=bA$u%00??IB$9Ieum+XzdlTxqkv*0e*=yO7cQ4nDMt^>saoXmwIR^+^ z4Qw#aWb=#7`z^(!3uc;@Tx4xCi>7FRNT)|?H7Y%;eI2c9Ix_d^YuD0jjFU#1?%8fD zsohF%s_{qxkd`*CF3*Dkv{~a5rLxL$Q3D6hwwS|{EI zi;c}_&|q`CwC)3PrIvtEN*JffkAg49?)Fg@JF~y^ipO4jFoCu%5L9Zb5~HItV_7`9 z>r;AML#rJ)#t~ygoe^3_7cExKv1AIqw&wN_IThfiQ*=-?`|eId zLj$%UKOn8f-^$|^w&t+Y(Z+7A#oUlb)kvBn6%CE};o}^Wv7+X3cbmSs=0cm8BbDqJ zPSV#k7_vRJMFYzA6l2Lm0+Q9QX%3LqoiX&=W5rnljDsg(aAW>yUz3w>5U6X#VsGBWGwTNr ztiF8yJdWKW?I(^=W(Wb}lZ+=6-Z$WH@Ph3{&KD=UFgGaZF-O00Apdda`@5KR#u+#JbOm}% z#d=-O|5bNb`<`{MyfIzN1z18x#@*gjA(8I-PdB^uQ9nk8>p4nM@pSg#wxvH7ws6=y z`(+p$x0mGP9=c;+zkdDsvDHYEtWd4OW?iXzs(arVkmx|gdwgM8ctv@+#Wv&2{Ardy zqFo1E?p-3Kckc|;1Hmkmn$ILHpMpc)9{nk#MP<7&8us;Tn?=GjFH6#1`HX9PczEM} z4Y*w%#{+O;E^NwRppMN>u7WH~p7qH&7W(mqgsd^gpG{~~D zVk-11MHvtbK5hj(x8Z94x4LC-St5GV{A%wW&#(!?oc=QN87cJd$829_Hp0WhZ@7|j zVIXQ}wVq$jYBcDp{Z+3kZVKSF&CSiOrT14{hg6Zgwh8lcwfV>hQBY6}4GkZ+f^za2 zP-gczsh&Pv1Yjt$4#BcYlO}p&pKWd8mli7* zsKncU&5UY0W6>>V6wCx?C@;N5v%g1a?h^%g~@H-Z5KS0!4kSp&0wQ zu&^-v+VK@Dgo;4>!>Hx+%tN+urzqAR$Hc2=OBKJG(EwdtJ+*ZMdBRRM%MN*EWN#6FSN{2|zxnj6 z3PU46_xHe6j+vBsdwVZ+#rMQAqdmv^^steY+VIAN)O%?M_A*=s^->`4=Ntc!1L`yY z02yVp5q8l2iAWJ_|Mky%Gz4V=Afmc+@)8-GOj`BuXxjxLA}FxVcKk$o{^G@rU45Z> zUe~!j%mrJ2y2LPIgfm`Qe6jB3o!qw}IeRdu%Y3|qrq?kqWiD5M7GEkCKegy>5_cs~ zWx~0+4(<1zx?#B!yJHJNpp(F9lT%d-4{*Y)I$t(jguBOXW7MKMfnzQ0o>)0`>4@dv z^BK2mmk<&jWC1ZTu@gWI2QFU?Nb>c$onbBe}Q1p{&>m`5?9ap3Rs>QxGznN_L1|C)9;5Y=hilbvrTS@*23rB z7_S08O-a`+Y$N_a>V-&m@J4cbLC3}pL^L4&A!0MLW`7LVbO{Cin?G)P7v1kmp$mR+ zaB#Z6448T7U~_?l=h-(j&l?TF2&QYe7qO6DX35e(NuFw3-ptZ!f~_eq|DIEmyF7h zz+l^gNapGdQr~X1|FiBG=wHC+^lD{!!>=`64u^mfCg6p7+miuI7ksX)<)V0g*o4Iw z7!rbyOwPgK00rW+5KLiNKv}1bBd+aEPO4W=nX$$X^!MMna|iM~u(`+rP-=9Hi4!0n z%7Z8aLIw!>4*7s`UjuW_4V1|It~sFiU6FNCJ=(ixCFR-Ke(cO?irwPE_TMO)9*?M)Yrn}g|`OJ z8`*q2qs*3+Q{l zy}_?%UN&AA2H&cF{<5vD%{Mq04>?u2P;)$EEVAFYpb~)mP2*ee%~(VJqhG50wY!T#v4<>vH?f|i1;`4k)|~h+-+gMj z%eE3C9rsH7Eh{r~u~xlnX-;>=1xPT^Q&aEQbDur^e6XIfu(U*|j)p@1%5=OWJp92> z+`YO#;wg=U_j}AWe?^)67$=Z@FQ&3?Y+0yT3y=S)I7p2qv6&}1niAyPi;S$xVNdJ^ zQi*|L^Lv*aP`Jg#!;?zlK5eH;&g=Z>`be>6M-#)fIX637OiF6F+W~}%M1lyPipz=p zv-rT~wB8&aYLl>RNe<&Lq_Ls+uZ-i@w(l-m)Qnw9SSM1u7iQj^PR2{u5&Y2#?Vw-v zogWj)bBESSl}eIe3-Rv$#);d?l#G>wbYjRoG(kCs%36%BGGRubBaXtz9QaQH)1ZCHIAg5uYKA zyhI4h^oxsIE4L*KqY^W6eGyIVj~5`E9AJC;PiUX5Xw$MdQ)(Pj2C5jUhlp?9zMTRE z09$9+ljBDIzeq`3m}S;2^<6QHUvt+xpePspGWz)1gIqVC5%zSg1WTigO-e>hj)XXj z8_Oa1j-{E6hYCm`9u3*ZD(Z4t;{JE7QH%r7dXx{y;{h22Ic zTIBnMDJdxsJtcD5a60T|%vh~y+IVGYvmI|>#92Tb!W4m^A&Hl0llTz(6hn8Km#rr#wHn?PeGqGkS-e; zBxC3_ii(R%S#;JH8O=`~7Sa`>(C?Dc{;L9i?O-@S;|nsVXa?k4yTOVp(1FqsbC|=bSlQQUNGg@&(-4H z@}m;(=Q*A%{xsJJN_7yFOw4^!_st=q{0#TBi8@3)FKuRIv<9ivjQ}!K^&RtKwY9ch zgzOUP{&=ZunJ_zLHv>+<$OY}s%=OhVh!(W4jSB}|a(tR~rxb^)cR4$7fEaTy84Mnz zK(*RUsO1xvP&gc;$MFI?6YT^;( z&6E&&E-m?|*+XGK1@N;33}hK3&o0eE2TQD=-~^;Nkdy-TgCvkTsF!+PI0X)q?mCEV zy25ybP8JvGvoTbm$yB}u_s3<68NCgtqXtfkB2;BL{lsu9xvT#e;9mF&` z2g$Y#h{pjwMC}iOmOV)J3?^+eC=gSBXD~{c*bEL1KFU4SZu;^N4^JZe0KOdp701a6 z3mb<&^y&Wi)5heX_R`$DzhUzaZUV(kUH+qe6m1~epB%+p;LT^4p;b+_Ff;AN38K5~ zwNt^-UbUu!r~qmy0!6v=@xyJ49t(_e>4A}pIlfr$AOr^|owo@wdt0GsoZQ(>AVR>{ zs8_tpJyWbNP3tJO2#;|cvYVcLFdo+sNJ5yQT9OSmn!5)S*qtC@F)~+z3LDtz+B5Hi zF_bY_XnfUSD0D(xHkf=Pbn%pu^2bXe92{objdxuS@xE|-$PFaR%gBUAN4Hq0119zr zsY!nOnPQ^A>Cj-A*_2WFghP_~Ox-2$4@;B5kM@6;rwX3uv{}mtxjpmqqv(eZPg*S; z-%Khq)H@8RzVrHv(vhq56m912Vf0X3DgKP>xv7N2ot}Nxc+-QGzHx>G8O49rcoxpr zR?WVYmTWzc-5`n>H(`y|h0^o!$$W@0qM0_|KbCyHbXJ)=XudT>UZRwPpfT4(ds0hc z6+~mQUD{Coy~1Z8Wrce0F+^5iVvXLSnvblXWac04@$V6Qmlf%d+qOmczqFimRH5Z0 zA|g^-$@4!wCnAtBbR;GmR#tlyow3QqU&CAWRXj?6cUTS?ea{G6lV{d6R-T(#g z_4s*I&cYp7)#aXKHvz3XAa4XDcgWHp^B~}J<-TJ~_$wE?J_iZG%NZn%Vrmo-=pI98 zT*kRp>oI8-Xdxxl4NJ&rw}oj(g$DdC8i@lZ2hH5)L?J)yWl|mep`3(%zX)Qb>`^mOlyo%R` zK`!1|K9Po#hsOmRC4L&N4PSko{l?E$*p!ZasB7M`e|BCWee8vIa?N(U)_8s4S!B5= zQ5f{%>)xIvK|Tfo!Y7qp>~j=_y z@ZeCs$7<<(C`Ky)L+MCw-Oi&Q0Zg`603kKXd=cEIIwj%k*{$)8Cy=*;mWo|v3~aT2 zFe~qV%zhyj(<8k_v16Getu~7htl)rSg|N>^Nn~1 zA&U{D)Z-lgUC=hi^Z3m#5EB~Qe?;W0Fnj|ovn%TLf1sWV3`ZJ)4(e@p|#9kypt9k zy5Y`$NFJJ26VCL+Xb1PEku@7Wfq2)hhQHiws$>)D&_l;+@7}TNv|$G{donJuOR1@z zL(RP&II?iYSfQu~HB4k{*OlS$k^aGANN4FZs%8m+yCEwhlX5u@cF=}`m34U2_B_*E z29tig#1LmC3&bp-=6DjtSCL(ZEH{M`#V1w=S@+hY!(J14>>WS)(`U~h%`FEh_>z)WAnARrd$gLB%$X<^(-{>LGm@kDqTZ1AbRpuVyec8z z162Gh$=D*RWhwFSU{b!M*w{z?xI!MkSB7#&Kq+F;vND*2=d9yJA%XOcA63#HHUX_)V zL4+)Ko*0GV-fADNce_SJLPefIML?(^do{}b3r_v`rft$PDBslE?|wM62mUos+*>VR zc1-_pSVp8P)Y@SSy^56t0|PWo(CDnY{lpvc^c&}1_=-g_yE@tBNJUWaR%a0-BO}Dq zinZ06%l4Z_$PeHJv7evcfOu=lT_2p952OV%p`TdWKgomPUemlXk_;j=H! zZ)lc1-amuBQ&xx+gfGWO0po9+7dxV$Y;&mliE@ThJXv;2Il$BHo&48|yEm0Fqxm7_ zr0sY;>)p7)5|7$#u@Sb`AKfr<4vu{7tKL&&S!&sXn^y?lqC)Cg2#&}%pU*$Z}-EY zTIxorBAP8iuN~Gk0fEUteGOwBtI+)h*eK zgY$tlE{cGdgakCO27+(uR~M}k?T4Q40xV21Xp=#daC2}{eMtI)LrD3q zqLejhUc3OIxrv*=U~vx$p1S(_$_fh3M`QZ*kQsGEy^sycb%U`lpcT0f?kMe)$|&j- ziocpa-v5G<+Ttg601;*ZGs3V8<>r^W6Jy_k%IH@Aw>SA&U68XvEemc63;~2r;}#OD z`Q_6_OtJj~10(rr_`mP1j1^P0TC}&fLpRd?bTOthIa4~B1P5oJ++1t^J_1~X9O&u- zQ&1(^6#9fpN_Z9j>@B!S#E&K!h+ELUt-6ncGjCfxwAt9$2oC?$|j&-DWf}GX{8T2<)^z4TvJn1yRY3`He59mlqV)&wKmgm_!>hXp#E2z zDJ2q>?O9FL#bLE}AnI>|YIVAt^rE5%Iruj>Ys=p@3AIoVL_FrK(CZ?sp3+<|{a5M- z`$>##w1@u2B$WZ0J%{v?Jp+|s4f~Dp@=oJEUkwy&yw{$8+I?xQc z5x+F5Wo2Zv03!_=qu;)LgF>!AH;9x_fvKhthgQ%Q7&iSsUuE%Q^`T&_+Yt%bm_)cW zy!+1|Nz*m*Am}qhaL{;CR93ZMkj9drMD*9O~XmQ;YNYJ;LVfvLcJ>|-TP(# zbc+tO385_pP}o(d#KErJTV7BO;XWLchrJ2PrqJ;?hnVq3$8qNWVeQSMp^W?g;la?5 zm|-wV%#0`P=9vZN@oXD9oW0LUxgeMAq!j)&0G{&-48A z`|sB|b&fbQmuo)Pdwnf&o@4ZTTfp=!12_S|#u`|70u3JrFp>k-<%j*c3)-+J*Z#fv zZJwtT!fFsVpv>j)*p_Q;b+1l2o&$asAWoIJPhz76_ABZBs!ko6L>+;F5*TQGTBVe- z_xvcQfd~xpDVpQ>_cEaWaMoc!Q-6vWo>AA$v|!Y zy`sMqpsc_uSDT(LB=w9KyD#qKuuQl`s9wzp=T?fS-HdcXbvaL^1rN;|F?~K6ofoHvbHkq*0-^fE zSM!7VoP`!4dIGA`RUvkxDkOhK@D#TqemaN0cB)Icisoj_hF1N%LjI1cw{UndJ+vtS zD)sslcQdxyV)?3e2AD=4_yfZ9jM9Mo4e)q<-E>vnQ72rFAOOe_XUT|o z9WgOGi${#cF-(e-8_yEcPK%0jzS;_>atbhDZ#-lXwHtk3(O-G<;;@`0nm*?aJ>Y%s2J`jYuwGo6lVQpLs$_0{j94459bg=?7pD%fM`h#OsIb zt@!ol6(X=5F;Jnx#|=0hSnBs6?$W-2chhv`^VA0di<=?OPQs6b5h!#|LCwGxEMAXu87>7#Y3QgJMxgpsfI zC?4lc-ie9RAbb$eTzI}`eJquawKc&I)ry9%-<;MCC2jLCc4C05M45fiOSxyK1E`z= z;q3ag+?oyAP7Ez)DEi|rZ6|LidH_&>bprm&AMGDiXju07=jF9r=v6%?W6A<)j=So8 zWJs;7$Dq2<;3_@+1iTUo`~kRIK<9$PfqRmc#r7LD;rPgpoP?MOnnG8fYTQy$T(gSOZN@MZFAm%Z!!y_6e$) zeksDaaLv#t63u&Fnp`0sB_cdymHK1DeTP6(K(H9-``B*(Qwd^)!M?dR0y6Uh3|IhO z_3@cidyZ1Yz)FmzzN#V-UQ*st6Rc~x&wnL{rYv^6LY>xy?H}UI$7K9EV-6HJU82wK zcbbF?zA2xE7IN&_js*znK*y!u3rot{Z&r!S6g|^8BTKT>OVDl&!4tJol@}BY?Aod# zPi$Xy9;v2FUtVxDE0h4AdYTp~?$rb&I<~1D(`XOD1Cc7Qc*`91p<(s6R0)di6#TgjFRN0IHL*rX^$}#s!juQsTWRSt0&^0hNm^=`uYUuVZ zgLGk9%prby5vJ4~V4^>FWFEownLv^2gQ8{%07_v|;l!qU7GLoEuWn-tM_}{)-Yl+AwISYttZm&tom(QPD${7SftwFRFuC9l zz^>N7&2R2u;+k_MEu)RF;Vot=#so{sgk`Y^fL#j36M;|DRIKEi794NqyC?18d14V# zo+7~9{&dOB`1!Sbj!)y6m8*snDT3McYy0OQPs!E8<*x%Ai?w4?N?(0n`styPgtSl) z6u+i^44#@;cqGD`3+x`QIn+u@OB=(xNt}vWAG8H=#9}~p%%B7)n3%%?prk;Z{1)cc z44*|Sx$ROiM{m%NtQZOq5O0ylAbNILs|j-}m?C6kn>IS_wxWLh%%<5b9$_{k3obm7 zi$8>vU*i;d^|xZd^jCEPt2c@qvAnkSBxF^9rxJMh4YO&4lU2GbI^d?EO&$~Lhout{ z+AlwkncT{p&n-))Gk)gR!a_<}luM5V1W(;h-gNup{Z0G}{P;)}=mB(3uz7G7k`T2n z1jF+usnR9h1n_-m^b*jtZZ0p6d$0yZ|Lc~&>aWPg**+x4LKKu@xD;5>i?yxt9AoMw znIIzyV{UGLlMXW~<0t>AhQU8J?npb1iJzxr%$XUAMwTly7?qMby?@U&-{9eqc>gR- zpd3yN7c|vRSOFwe4+O9C&d=ZUe1P*0<{P2@x~Wi6%=@Klx65MZwRjN4-m7uDJLVBXN2L+DyVK ztn<27Pd>75gLESO1PAKwJ9JbeK#ID}Lc+qrsuVDg)K~N9B)tx(@S|v`%WTtCS0scS z)wTR5zjK8`pUSou>+({p$5uDMUAhzFP-{5D1eQ}xw$#rX0|F9CIp(-XV1UGHJMZNm z^>O)G;~Z_Llm7?20V}RRfDuQTP_2-J@7r{3G&eKTO8|gB&z5`W@&>N5e%q;QblGqP zzzMN8)EKa0fF#l*k<_={-`7Up0XPIOs%WaX7dQ&+c@M5wMR6(L^5YE!WM@~kzwI|8 zj^$Vl{NGPBX47>=afJZkSXT}T#WpFM=#>Ld*;6tQ6yb|vFS=kNpo~L4zs8WZ6B>};OoiYK$6%G@;?Vx%viI@Mjrcs?20mLh zn@+fCcvLII?T#+lz9?aSfIgef6u2HDT!pDsd0dP>YT+9d!khpY0-zJxtsiFaN_wHO zi-QOvUJh|t;0964nAn~QrX+S~(UvtudX{I6?b}j;0U;7V_lOS97Z`|9+^c((^S+zAAyDP*uS3a*;iC2f z;p=|%&132^hs{)1!B>NW1$iJG7aMEmp0Cw1@1w#TxE?4)f6-|Lx>_`v)Bsq=unw=l z3`Oh!IK~)>gpU09E)d#Z0my~{KOO?dpY^kVEm0@QR;FF1J$Y6fBDD# z@RGozI_L}VBf0VGob?ir2=m}r4c+)RpVq~lEJ_&DO>V^ifsh_ssCnJAn3o2%dgUr^ zobd_~PvpN&rx1+@6~kdHzho8y{$FOcB(i&#WiQj^|4u)&8E8&fPjSMNj=vQt3YLfS z_P1n!hFG&i^@k%R?k@mdz3Bc@enov{8?KKc6Be=)yE=DVVX1dDEy)N z3EH(mA|GKO5Q@y<-eO?|1s6VnRpm<{kT~1IFwgejsi=1v-ZS#dMdY%!c<8>lblxge3cDKnEs5BPxU%SZXe+zA4_7O2ryE3Vp zx@};+63f+xPAay#9M3emqM&3twT{08K)=6)z($OEFm$y=K#Twyd0?jmm14(2G~m^O z(!iE9p#TXn8~WZ~?FvSE8=>TWz$8|0K<;-7f&P`8AS{Ha-w`_a0nACMsh@D)A+OT? zso@Y()Lw^8xW(wKNBe}bYSg{g?z{V2^98dH0GM=tS6BEt@X!sB!^Mp6d^&A!*~~3t znLG3-QItKw>D*AshO!g}Qb#--sWCEUuK?#g-1|t0dKou}S z0+x+#OI_4Ko!OSQO93RA$S1pZf3!aPUn~HvEx?ZSpg5vZU;GQo*+AyAmt|km{GWbn z@e;Kl%{NG=sn%Ki9k*GqX@aGGAYcb#?iR5OX;&gfahd9W&-W|vvq&aF<-+}7mU@1e zH~AeVgGiv5qkeJfX`LnP*6-t}+3kl>C4ios&_aCkTz%N@v1%cP$J6)@#84Tqs= z6cB=NPD+?Rv>Rfs5XSz=gVp_pzeHWcvY2oU?C1rJRuB>+ATMUWLOy;}_Ru!R0qP$z z{T{7wmXpAx95?H)@o4U~-(XW)#Z!Ob^{4oFUQXeAzH)^nS-7ug^J}6KhC1I~xP3XK z?kvAQk{B14|D2J?|D28UCVObkB6~Daba?Wr`sMtK+6f%+s{?$5>1T|UN-Dv^oE=H8 zvQMA#4Vb9pk6-1}48;so+}C-MGX=L+>-zWnxX(l52gZ?YfjyO!PNq`0`aS++@fd=bu4wIja;U!WE;;tW; zA-Od1a`3yjeLbK>isl-0_FrbA?5h|QEY@EXqiQVT7Y_$VEF%J~U-5H}-hy?YBbW+0 zoY@9ok?%rzL$xu=?9t{!{xEpIMppy()Uq>PZ-{(A41bs$8ro%iuv1vLbeEgl(OG;> zFIzABerEza^M~HkYDnl(Xz+LZXdh<0lINB1*YzCoLPoqxPd**O^Kpm-4FxP5!fdIm zW#KYPjsxN!ItgGWeanuakjueYH#q5rgyxq4iZNx*QR8nHC*>8-+b0_JA=87KiDWbq@29hf9jvGy+{m!i)*G>N=?G#YR?&=Wc7i1QbrQ@i^@pH$Om zYZn{tsq?P|oxJw^ee!cF>x-x{gL$zD4x^)G4QjVF)gA(l-Z=;ad3wM=iU_=s#2=b7 z%+&kLk6Au1vK5F-E6xR)TLq8v*WKNLJwm`nQ7mnW3Qy5^e?_q$j0Xn=hjn*U6q9&) zVwE?tWmv48THYCk-QBi5y2mMd*>CrX0Oap0MiMjbikBlX(-3+41T*H$6N|~$ zi!kgs<8_UG6YR=5B@1sZn|y=IPmdp8l>0U{==&=k85?^6K}1+n+t(mJ>yDSM5zRev zpcX@_@S3T+>{)JqqWL%00{NuSTjF7239EV;tCsqu#l`AzDan3u>wSJ-h!nQv&D~}n z3`&U6(GZjiGav?eE0pBbEawlk0=iP5vSm&#Q;jGJU@O#w0ZTIgx7!;GVf?spsom~v z^OigIxWM(yOZF0Vgl5pV&AWpl7P(T^Kl#bzDeXjiXd1`cNLwDw4iy*MLOdzuas@9T z<_kc10pgy%l2s*up-_$iHpnTEkzJjlal2;oTb_3=_ib(a%HHI*{RlL5zQ7bY+Z$PM z;d#8q^@-A{`&}@*FG@h+{y^RA@4`?*^-nVdvuW}1ShWoqQ-3cBKv==?&$M)a^ktKI zzS^SC>c`6iuM`-dY5Mq6tMd@L9L)q|&}4pydE&>n`8aSO8mAYi!S4e2Hv}HTMy^DDN#KsNv(Rb24BRCZ@QAZee7*o*%-5=CvB3R^ z{3wsXYyA+9F#if*3jybAW+tW(65y_}!{fXB?#bICnNQ`xyE@uE5TF)&=@@MMv{~0D z0B}QsW?Tm;fSlq@eo&8m(2Ler5yL{Uer?bE+Nk{oKj^(rf>Lr450v6cjOCSx7`*Kz z-{X?UQc|FT8cIxeoW`R{hp6Mt+mm%dG)0)1yU%V*Sy~j0qUMY`E@-j*npJ z&ncOOpl9dbeS8(JQB_bN0<%L&2Xy&k)KAW-7aSl&cr?~d2oL8R*OP^WR19Lmi`B?-P%x(ybO0>0o1>ctAg&j?Ig)E!in|_ky zKb@wTZs=Rpk}G0SH2K%in$D1!8$SjclP%iHn&=5Uh+nZ}SLEzR2Ab+I7OC=wLqG3N zb5@TRXJBM?qKfn1=9747q(zJ9@sM$qPXicQ;)`3%?V&hJ9QA;DEg+Sy!WVC$pBUlU>JeL*ud0V1#nmh~g^O6*49hLw_(f$Fth?@U=nAOOT(*DpG z%^T*aJv1;Ld<@hQM~t)7k6~4oqg4n7+(E6V2N()IbJk16a20&>73f5|JN#j{|I*@D z(9i@OsL;~l&81OT|0@OK#Or(!xpFr=1j=|vT|WWy$9}ue5JwQ?F&+lp`6x|OejfGM z+oyr_OqCw;#&&`OyL$4iC=r_lzo|9q|9R*!PAnlfMqnT!v>#YY$0f#hb>R#I-izEa z1T^CEiN##6Er=ce2I&64yTV{FU^LI2+ihvdy#h=uXd)NTuk=AJfMaChmoCwQnrm`N z>iJ6`sL-c$sz-PyM99U+eCj?ShTGcA%2njCS^aA(ZOdD8fN!Vzz#CBLk}SgZE2om5 z@g7On)R>Z*WW0Za>x^8kY*#?`D(xi(%x5KZULWeUsjkaQZEGDJt9fCag<-SzL5!k1 zIu6=HJoik-WVmiG_3S$xZg10`L;zSCfYtxQs=ls8qP5(Btj$CEM#;hQv*tt31r~ht zzrdy3hM@fE? zX<}u~t5zPhiV8IC#UD46?$RATMe1@l9f}+Oxc;Ns%RvQ#;?1oP^L7k*QZi(F!O~AQ z_$zJ3q4ucEbAi)r>|U;mXc(TuLn<{eF1#|o7jZWk&`BSzzr*e+U9jFz$S!j{-hHI` z{l&%Juf@ehKv>^yI_;IyFklr^Y?D%0II$r-JIeK&W9y9hkh%B7ffCJtRgWu+d4Bt` zHCh801gN*M-VD(U)=BMWTD~rA*40a)5dMl0jw2sM_R+T=y6LOrgxs?Ys8#kXaS=f% zz*P&YN=r8+=;=(TQOE}wgi{ZESk$do|7<>a8=0Drw4LQF2SLyZVr#?xPGcC`*7Ho$ z@DKJgr5hTAfAdx2d1q1QZSIpZ7MhDY9F)J4cDH&EpAwl0Kb zxPskVTnEjw$|>*yBf&rRmb*Z$k+=|2OB|vCFw%lMJ}^$>XN@P>CQhaI$zbxJObqQeEiPUbfnL&AWxBjz@d#rvyWtVv z_j~tqkHeFlh>BNR&vn1Iq~D>wi~Sxa3lhA1*?9?-CkXE!8n>LO3D%q3H~S#g`iejk z&I7{qJTfwZ5v9_9b45P}%zm1jXOaB4cAXe8!2!zXuZ(eG)TJ_zgt6#2k)av@;ekU~-+YGy@f_D4e)$!U1S z-@|xlYt!dm%-E0Lzep?{uEXos%tJ}N+JTSCUx{;+vs^56>-J0SzseWh}=pyW$WO7I0zHcmYTcJy>~!Qr`3S2slwa9&N!e$EG=P zKCrba!eg=u6i#knXhqd={}IUbz%}OeW|Dp^|A4blvYs8D%WkWc%dL^Iwt|qw8wxlr z6!H&L@P-bGxGGcPpvtJ*rKOdUcbY7UQ#a|#%E~wZdre^A)NK~6A=K0RpvjaYDNL zSX4YS8V_(Y5(x!I9_P-|i$kkN9U>>Ul36La-k;ufJp#e5?gB?G{Ju$7u;|=x^t#9m z4(wOaGYVPeo)xf|O+YYTK)U+xnv|An+HA{n$H#N$QY~+c+5jq*f!%Ybp@Bb$Wk7m; z=E^JGrCRUv_+uXykKo68VDIbR*=L4zC;aIC3LN>M{@L|i+2FL_?oiYcK&73U(l6x{ zGY5WEmN0zypS?XTKEN@B6`NnkpC>q6c6+8KKzCo+3xEDYxOdXpF*!|R`fd3C??RCz zh@VCwqE%>3z(?2#U;QgxKYf$anKm%KE_LAntK5*HxxhqQ|W*6azRR5oUdd# z3FkUpH@7H8p%~CuKrWdYmK;U>2J@yI_f4szm(K|bXFZ_=LYv#a zBM3_DSD{g+m6k~GUOicmNlR=!K8h@5Ki@m9%$(SCmM#t(a_$&?lJ;<8EcTtvPdc91 zsVaqsotP&Z?_=u)AKHZl3vxXS39iCgDZDd?c)}FM^7~4cX=C^qvlzM0bBCFOdRvF^ z_Nc&>x0I;2*Z&5RL>ajG;g@k~#ln?uY=qN6D23Zq@}H#rMDP|rgOI(_?)ENbBhaV0 zmlpWn3XCFRyWMkdy+!VQOSL`(*jiyhGUq?NPY*8^CAYlQ_2hZ^D0Ow`KHWvaYYe`)Dc8i``DOWGXJEayXy~$ZUb-0Kn(zMJwETtJU?Al(;(~~Jwjz%c&Mkh#DfmZ3m0knEc$P)aPC z;G?I-K+xc&2(g5$y`zC0`*`|9iFGxnZ$DHqsj5Csz-^ZV$eM+K(hN^%`K*SmFV}X4 zRq6mr4iDGg+mx1;7C+BB+`@mG6@X&(N_6H=jy$9@)mmSjLO{+RInl$b&vWlJ^?zNY z4Co5u3?c5ogVGt%zZ7Uzh!9ZQV2qxnCFre0JB-uIKHT#S=Q*9JQ1X+KAn0_>KHpXI zh#!|?`@Vah-M9eIf5}Gxvio%YutisU{He&z0cRcf?$Q0%KfW6`-nZX!t87a&Lu@L{ z2LpkC0QG>NDtJLwItrITccDbMU=J|vHwSCnk=&G_k9~D=|1!*0mO-7IH|v!m<#g#C z^?3YBXd!RmJts4S$hG>H;k-Fe2ng&0qh#_$qu^kiY=8PIWn4q)&7Ci~h;)&cKa~i5 zaI2TY9W_pbS zIc1vn-34oIw~-K_SO%S_>sOk2nB;HpWr4VuVF5ItIH6_L|E&*iq4Q=ZSJPsB2Jh3# zuLg0PE?$~inHRr-&YYWlwLxP}PfwpWW+Os3oqEAYY~ZX}uv^@X&CHPYtQa9fG)!=q&M4CZ zX&>$6owfSx&p{RI^KunGff$gZelQdbGt*9h{{69IRq0SwL;K3fNlUVb8l>+J0}(-Z zF3N}bN>DJF62g~TP_cJ8tdIfb35l&3TnUGgPia7j#KkX%&DAx9h41ZH{o_U_juA#N zB;F*`YQ2OBn-UHH5)YWGJ{S6@2BWX}w?&oj8G)oE`=x~Sc}vqBZ@sI&P&fpqz)UU( zR?4B~=223?jou}HQbHE8ueZkb-x`&Dijf86yx~^UmHC88LyM3LCARSzAufl^ye~*= zmZVna>jt5~mYIi#3;R9w1J|6}%&qFL3pPnsm1mjB<^8fkXat8+QUfj^56qNK8+NUu z?-yDpvVYC}RN%x7f=|TfG2N(ZYGI##7)$=OfSK=-0p1TPo;A$}eoiG#&x!>p(+VIN z%m)K6#fTlr)(pnd&eYrrMJqQM3qY)?xx3;V7KC5{(20$GN&0z70CfI$+jQ*SN)CG< z3SUsD+-Tg5&;(4(Uj~Bj-krUQ;sy6<)4=dxJ|2!GsJ}if=`%q+mSK1Wghp`_V$I+x z&zkxa!~d$fwR!J6K7YB4XZE5F<$XXoU?%i2;*q}R>deB~fg*<+$HkG%g-oVY^OF=RF2UynTBIyQ7Ta6*+Kt?F zRypADi@(ZgjTbLnrRG@(fP?hD)pHMz+2R@i^mlvi8D7dgtgRrw=1M%sFY;!lZt?D9@xp`!0ZDxXl`30VUAEeNhXWg%LMx#L% z3*n+iK!p#Z|2uLKbn$c2^GxRao%f#bpe9D#3+(w1*uiHhz%FxYspL0xxQM#(=(^8$_ab1tIyiSzeWx@qqDo%d;) zHlZ7FDIw}>Jh$-N(($pO^`U6?4OvxNjd26MaAiKGW9go?v@k(n{cBj~HJ04rrtC?p za4)(>`-71qyNnkADqwFqDZO=h6PaDys483lPu_Gj4bXnWe6rWPJ7OLRynuR)s25y_KP^7>Ou5fyDDdqeUjZ+Ads9iWU( zpv!|%-Ga}8Pxh$q+IbieA0szVI4Hh-xBmh0D`1BP^vHnS9~1u1Smrr!M)%Z4GNs>q ziu`x#yoWs691)|6Sj>_mWw_wU?TcpF>mYcRg4x3yc=;2q@2fK)S-PH`m1o{}6iQ~U z|8}F|50JHZTM<~*pPd1f^QjW*c~ZhH7zE+H%7@09LBF`wWLMXBV(5jaKv*(UD>~F8 z(V@-}X({jHD!b_lfq0E+F)}PxvyOB-b{imAFo$(toa~ty>l!3i)~ZP?+!D3BGkcV+ zk|t)i7pFnxgM}FIh477-{5ok-;EL^$2T}IF+MPFU5A(GIwoo_ zn^)J(GJc!KDKO`1=?reV$u1n;@h@upcHz(>cN34J5spST8!l~0!u_GXU^xh}U^W_o z{aP0J+&W#5Co>!PivlT`5zLhPpc!80f30PX``$g4{#9Et{=U4FpHSkmm%Vjz8iC8< zEv(2dxph4Ma?Yvp(NR>WJE`P(&5Ih7z?x06UV~ID7tXHaP?|AXg)$J4LH}2-x1Xw{ z+I2$DE;J@iTv|FqC9mG6V^DPrxdfP>8Oe0*?p`KS@8``8B}H|$aO|-D9uFvMDX%+u zp|_Or%JR(r`ENkn>7Vu!Ot7O?`uJe${P)&BWcPAXHjMLJ;>hRXy!GhL`Gxpr?-QBx zk>wTkKV?U*lkPGHUad|+zic0Hg~V$lU&%2QeI(}i$z@KO1N1U|>-XPp!QZKxC8NWm z^^qay%Ev#2u!BZm@u7?)O$~)j0m|o>+1jispYfqcP=$v?vD_}{K1{Lbj8(IKS*=cL zpG7IOGfJc5-d`|6Y;R`Bs(LMOTi|c(yXDGdO_fp6IrnN=wbI*#73>}aa&4*jF3;8G zNIibE5TVw7LqL3WC;8VZ$4>g-sl&r}X!DY4ooFdBu{!D2Ug3zEnFG&@5_*{w)x60` zAX4RVg_iRZaN&Xkm8|`nm*|Da(c8Zz9xNqk$XXzk+h{wG(PN{1e}0~FIbZejK0G^| zuOM8D8~UG^Qr(L9_yDuCMOPt;f$@RO!>dIuoj)oWv1(`|6`NU^Pn1}jbFvLH7P-x00%JtnxnXEZb&#$`DENW0tfx5emDDa&LSpdNJ6 zKD}fjLd<6lqeLsb8(XxO63q9>ofDaP&uLy-=4f_TC3NZRCHwdH7q<^QXUv1*O3Nk5K1{-XYZt!#u+PpK_?p zPO-k#;ks7m3b%Z(DDyuBzFQT{JJI2A1}yuK3JOE@mt6kj1#a`AJSBLx-Td&9&d1OZ zz50j<9~NI_vvJv2K1q}RK2)W_6(xyC99VJwpjS4D(@MyF?tlm^-EekU{K=v=%ps$n z_SkuA)zVX4^#wz#&55cVF-(miMq~mQ`CsMaeDKTsm-*xs7M8@-L>Ax!#l6`2RT5`W zZ4czHoyyEJfXh0f$zT^&vkCjaOJmZP3 z=u0L5_wbdNgS7VzS8HpXd_fX0EpP?1DF3$jgdfYM;rqO2S+A*=3euHfbRTBp_8S)LyGDS znHg9^JTWWIuQz*3$Nuh%xzVQ+FAO>4q0*9)n!}|cLnAWh-`CcX;wmiv>`hg&eIcTM zcHHffej)$4DfLo5^ojKYpeGJTld5?%|8@b2AF)%5oP6)N4w}{Y?!Ve-!LQ7)Ykond zg!5eICHSQU_T86lZJY4-5q=GWAUj;;l_6!;qTaCgC->>7<0n*1zMn)wVM=HYuq^8{PYFu^wCPjT6&vI;ZYX zv1-sJY1qze9*x&mXlnH*;7y-?E2c!G*e|$xHBu&s{q;heVi4wZ?<-?ZG)F$?mDfFT z(6KYg(5e>6>7{Ma42&E7bSS+Cc6z zNZ8C$b7vQDFgAkhjT^+&H z>QE(!894`&??eNCSogl=eGqUe#nfAU@dz@~+xaILLb(&% zWVGq?Eb${VdDi`l$Y_Xvv`G%Lq6l3$Tvx}SKzrVIUAv80b$ius;nnY*hT|t}CDRiWf-qsoboz7-FiKF= zNV2Ovz9vNlOHk&@$+j`<%#YI;j&}OkNAbmFGuXL$>2&F5&CLAklZ+^jKfiv8ww{>^ zmwbAH`X&F1bf*ntO0En}Qslc_jzMC4kr<`mPA{6#c|)58VnK<1=_H^|bhwoXsJ2F5 z`rmy})JFjDW>OJ{j+Adgx=ff7&xq+li+I7lVyBL`Kw>r{gt z-XnLtzO5Wf5DbLEZ*Uj#KPb_v)mP+!s|SystjSMSwK-$b`OvGgRfXx#YMn}n;RMoN^}l~=K*{Oa0zptZopqql^n>=d^C|$x=AFjXZ5WpamvW< zZG*H4Qo)F!pd^Tr9F3Q?FWVXB6W~c{_JKFl?;aMh^#`CXvjdqx_m59=fKPB+NnmDj zB_I)05SUzvfvO*%y>VbH897Lffs4v-Zjl3vpQmr;V5o!=W=A2iB00zp3TWAo5Rhi@ zQwGxBW&-G>B~lu^B|Q4`tQMHnIn<=yVV7A?NeB)l0m3bww7lVI%({~Usd$L|&$RJ4 ztO*ActU+skd0uVxxfN5;*F5R>aZKk*WO5PKW4&oJWEzC8`<+pKI;Nk)cs2;S@zZr3 z66*Yryqw#aQcN21D(?lg{Z1zr&$Hn-hYyDz z0&@_LNa0cRM<7){ILj`{|wLm>_|d^><_RwEPZId;x6*)<_?=F5=xG0pB3;S z$KmEMd!A*Ws)@5tz+kBUXR0Y8tzB846}}|vV11DY24FF;qn6Bvd9kG84R@Ey#kfGz zwVC19WpVuB!U1@bH^As{vW$7as#2&2k*gUzY+D4Oqmx}c|MLfE0p!P?j6$-iT?Ykw zzRTa;13^7|?~?Q9s@p}StwQFkuF1&?_ZS$C*Er==bEdGd-LAccDFl2>|D^eGFekDY zG%hcj=jE3>Fg9tvc!jy^zcJ3Qrqs~T00=l7ZY^B=sti&a&TQVFpILdj6iN=0hYS`o z#RNO~!KvYwf9H4&c0{Y^E#iG3>I`JrPBK-3?r4EfGekpYXXoL9_hUOL+BY4jYFD}Xlau8UJ%Mm7+^q7C`dsGq=W;N+PuuJ57CQ+$0@;;%4h^o{I4O5WhtfEWT$h07I@eTr z(H#s_BmT0|Rra-0>m5HyS_&+JOes8-te446v3j>Bb=5L?ofCMEv(`2IY89F<7Uw$O zOwoJ)?c8)XQUy}5E{krW_2Cw)-JLskfX@2Q)CcVxIj&dK?8;=ml%JGnqR5~iGO-hy z2TN;sXty(Mc$^rmks5i5lAY)CF`yr(Z~2ok;l52VnnaHfTym75mt{+rQ#>7#{l1;s zcsT^pqC&nCi;l_LuyT|$5C6QTIqP<^uuiRx%O)VF@E~7h5LC$-)QQ0E$&Ck4#U<&H zuo6i_mn}t7ts19Hwr5tVeZ^8$*k`?G;p<|q%sY&?H6pVM}E&eAJb>?fX>d( z-alLF>lw?iT_xvNuYv{c=rOzn9??M{=>Pe= zS?V(B(w}nV;RQh5>9@sIrIH^8nf7YB*34|Sx685LU^BO{S`F9ejVZqQb$#vRQ%#S7 zeW=(T+a(4z;2Au&F|yNO2<$wPGg7;;zqez1w)U;lYDSJWo~T&qX0OaS^nPsIy|SUj zAw>aKTs>A%Cwv!)4>RNaS|c-_V-o571DDK=mMCJq?w%L8DBwstM*{)gmn9jjT$+W`jM) zbZYLiiTG|yNfn;4LMORs2DjDuWDW`Hj9$PQG4lL0h$_3>)umEQTDqaWK19%K`P#zY z(Z{Dpug>cX}Gz@Yj=f z%VV3aW3@xy3>{tU$DU5GbpqSloI;O@kT#WDYS z`@nFk`Q_Zxi$t08WyO(<>m2F1aq~cvd${2FQbP-fCNk1eM?JMI^|J!e5Mp~eX={Mq zM21>{%a=Dmeo`yvqRjh1ZQ1>b4R7)5le3rT&)*CWUsIKLf8Wj!;ifp4d5`=8hFL5o z9rp5dIs9F?=##mXcCwbbz*|(9p&Eo(e`6!Lw|m@{mml{bz;4=0B(goG2 z8@BuChd0K7L?;O_o^^F&kK}HDGO)t~8}qr@SwITA%HA&g+3-qv)tp26^XZgq`b&zy zh_q1P0cfq^Hz30eFuo*b_T7!NwISa=%AEgkZ_XIBUbvWV%`WNtT=?DwP#6L_ujjW% z$}?4X^p}hiEHgZzHx+!CLU|Vu{T*mgYq$gJ1}k)x6de(_mZ5L{&M%Ob!PjF zF+~EL)>J!1+31S&i`4N?wYj6?Rp2r<8`u}0i8?Um>CE^zxf}`E7VEPi~Zw-BlMqK)hvQ+lLLa!?FjQ`^wZ* zHWc*3MuRf3M5k!$Z20i`)lUe<<>z648|i;X+?#tD1~V&7`YkGpi{?Tn>Lz;cBzk{% z(s1;%dEw&3`|rdIhb%*hFwJVav)jmt!;i%1*dZrtY0pxQSdTtKuiEOS4)wDQ%chsF zj*di6j~ir~2NUMYSDxpdrDq;_&M`f0-Pvn#t}UDSMS1=2IbmMvZQ1kL>-2T$+t;ul z_m(1rdBUgFhgdrx(g4F6(BRP?7hhnz^Jh>O88?3j-B&ZA7>A5BNv+*C0ElLNr^&9? zKwpc1y*I3l*JhqzkX@7i6)?qL;#2$?z)Md>%0ErDLIeVL4U)})rM;?bH-zm$m}~1N z4C~>P2aDsXUBzj=*5KI2DV0L3}Izk|!uE=N37aGURET;Dq?l zXwW=8${&hdI7~jPBgx`Zgkt5X1xrQcE8|ONN_8hEm;+KD@=KOj(5OE)?|l ztqct{Yy!$x57qwt$@Ds3OU(3eKKeD)J!Xv-a_L@KjjW#F`>h~jXiiuS=I#D^hh@V` z6})NnmQRkbvCl($R#kfM+o$T(@vD0G3bHpkG2a6}{gL$S3SMAfk77wYx_k^sPW|2c zv%L7yZp9RV`@XZY0}uuw>@eVU19Yi!&PL8yz%c6G3;;!R35JiG3<^@*_5RZ-Q$PJ; zW1i8(DA8!6M6lB;y_1rBsR+?_85Ihvu)d2X|8Z~^Nyeb=LyaI)-}wo z4Q|^0yJ8J|svBOOmb6~tw5=XOccMZXD?M6xN~Rufv*fo;Qj>`{M&X3ssPIvDw!B#^ z?L&ef=8JLuv5-;wGC6p36zOoYN6bzs(S`L^z^3~%F9%tj$uR2;yPE|sj(=^xLUfGn zhE1Jn36|4)h7uXN$i8w8G-Wusd)b>4+JmB&_E)r(hz#%0xGDk*{#zk~@?~fY(k$HA z2cHxir?7Prher8lhh6o3=a{NJ`Of9NQw@Jy4H#U$d@oB0s#n3LrYM`4Bu4F9K~>#9 z72UFB9u6SU#dUSGiSUW<;=cS0Rc{#pR&*_vcP4ck&q;m*ZNp=td*S~95oar%}w zSIk3t`maH*l|LJY4GeXw{lB_Mb#b9=+p=vuWuB;V{;QR0`8mobt(yTM+TEkmsj&xE z!%|v&xd8Bd>M30Wo#-Zy_nRhX?c?7_BjORTXe==Xg^wf3e2Ha+23UCgncqm@mSe~zRladB}{{eyupB1Ok1Amev9vF35 zevqxRoLvIVUtG{Xop75xsjwgC@w&Om?Vz}DW9nP`3oobVE=J?Kot*!{=u1ArS6-^EDP&qjR26gOrw>E;zuF}^Z!K3FBUI(=QH;MFOPF8=Ac^Es+z;K#zX;xL_d!N5@5^U!ZR~wg^FrVcNJRMt7u3uIP z=u~ESerRf-HG1W=^~S1xe<0g={rh%)=>YWe%8HAyq!k)la?jS}3bh-OId>1^Kjd0D z_4K%fp3h2Rsb9nTM8+H{*gs5}EHC>xe-uGMBfpKJr0c}I$Wcdj$AxROAI>FwrH?ZU zwE@tqMP0nw31iF4ebIurXkrwc^<6dUE&1S6nob5^O0b?Uc?r#i-n|%$OMXCs34)$N zxrsy!CRFcjLurFAiC&Z?(MWX9D}VLUr5kxcH*N$gFnR*Jldu5*Gv@aH@N|}OP5xoq z-v-D;YII4AkSR5KfYJ@pDIwu#kd{tqk&tz2+|R4M z-c{%MJI~`dzIBZs9@N#*fD+%nof|f&^0%*~N8MGnN{%F!pPDW!Q{y;pvli$}?_2tE zzXHmGd?mvQdaBCK);R!CO8B?;6MSjl{q(ZqY&oFgV)tmzXXn2_+Q+adiPmc&=fHWZFx4M?{0-uWC=Hb~Yh~C^<)W0i(A*vViVtW$}b2zQ> z@o}R$qxL0jB0al6AZ{{sdnD=0qCv-!{>;X&gCs8)m~Mc3y0bIanuyJQqkXSo2e^gw zQL^;rRIfexR#Z&4r4D5{lY3$*?!{1WmZw3|KE6NhI_pX`M3ffoJDZRqtZg}Eo{*C} z$%Q>pdP;$1u+}ATa0wMoo-K#g84{^@eE^ar$q=O@LE0b%UA2W@&0gF|a>Q&ekC95m zHH;VJawh+ss^d~?ky zqs9H#bT|2)0$%m^5lx?B3_`aS!9ZW^dq8cxcFRf4$rDkWrqg zV**e*05`IwX-nZe;NZVPxvllYH9IP+x~gh9XeV#p*~i^|vfjnOV0h;D>$uK)7ojah zoIChglrUuRtf*)B;tV=l^Y+?PZJz7<~8^9tX&Y! zz~P9jER1Hn9Mj~vX^e(@n`;^{pEbv!J_)7Fz?>LAyXgJjrVVl@JQ6q%p(i&tX>3&|x z>vC7=L#7lQ806oByCeuEf>A^=y5(siK}2`)o!gg^@x{4T?aM=ZkUhVmf3XWtBHkOs z406ALw37jgq-@M=X7_nf{g@~A!Ia%NU#@$oqkFL5?ajQGVbH%WLejs=A%8Q-q_2-# zSb}!|rRwG1f?K~?f@pG;N2NZ;rV55R-YWr>Z|a_cqO4+KVKLA&k+9lJn4TyTF~onD z_P;{;ny|C->JhOG|rn-a7C4AT@SYBC->q635W_AT|t4@?cHDTW9#C zr~A?C{fn%+qixxr8cbL94#i%03e)zvd2`XPh2Ru~{NyT9eZjvNR(!2~g|nn+r55L= zi8wH(5^66v(l7;P&_!yKqxzCK;DA2<+v_K6#;o$cTH04!uP2J|<$ipe?VA_=-oF1} z7UhyKJJpTCBUq&}aoUN4Q1XwB8ySfa_A3K#Twf#GKROCJcI^k67BULj*7eWiXsE#G z=WMzQ5|z0xZP8XdL>an74>#X_o+ky#Lq0f_Qk{FB0TT|&ud6nT^_Ew=IOYCYfQ+zn z<7ILC>{it0`qTUufGnCPP7XsT;wzX!Z4%geFh`^0e^{8$f(mp66`S@h(!ysK`azK? zx0H8}-3OXd{;#)vo-lZ1u+z*OWd%8y1QO?g0IB5wNMmbjt_If&lbe6Q!8JnqDgujj zrR-~=|7?P8)MD=_q)`aPR^{yZ>jFE@QvJnx!sw$D|82|*gGT9#>e~wNfO3uLWzp0S z1uQ}U$_@Wfnjxe&D4qIJBUV;B+4|iP{cL&F9x(!+`;7^|oApNFJHaRw6fUORWl?H@ zuR82Bjnj_7!zf6H$`6s7^Y2aVWt{5D86hDdunOecA5;gGnzo`EkG>l{m(`m-ulYeKJ7^70b z&6LWa$`fNMYnYkD)|;)W5XriiDZ7@|b1D39I)LUjmzVA38l4Tk9OwlxBwU3ruWVH> zff%AP-n_N7_BmezGxedu5&EMt@a2nvSUxIN8>)x8F%rjka0)0K5dl@Z2TD4#z)$uv z9NBpGNRU5cXLry(uXfh4=Np~;VXs}m>nhaaC*H3EZo68J2B%GJD)%mfL-8BYY28UZiVuRj3 zj|GWasdauZ;VqEz6U`bWO-zg*jQlwGb3Wj$jEY~!;Zpe52J9gti?RDQj^dj{R%P>lw?FAnBa(8D6&UT8u*k z;g4&9Dcqu{fyjp)|Ft2ybsziIv!{&mYL7Ol!1s!^Q+{321zp^J4@l)2tlHJsB|cjg zYYHGnu?i*ARp5UfR;dw>6|6JSyTH@+oVnF9weNNr{-~Maz*bkkOE3t>hGHQUC_9CJ z|CU?2QOfZY<>CM2NeC%Xf_;=X0mpOD zr=`lW^Fl+AL1m$!p+Hr;p>X+!@e}Xc5Y`_*W?hy}!M7cc;9qy{7nR>EECMFj|J4G( z*Bt8rK-T2cgK_d2uFN`@0AOaixM%p_!Q$S{BIWNl{|<6W!mzY5H`%|+4A$%-qe3}1 zO*9WYVnLHV@C+b@M zhAIyJ6!SS3BPCi9Z|W!-y=?cpK4bpAf+IY@8xO%*-3IwpuQ;GVA)wM#$qwB9?yKeC zkY$TI*Dn`+g+vUG6ktt_jpdBx4EsB61-PbQ8X#|BtjV3J%)v3cPweOJ?$a?phBCi= zgAoAZQ^XMO2a%(iq+1u(bjbG@EByBIAU=^!Mu)>_I|8o38S9{~G?tb1V86w1tI4&R zZjhW_r)z)*Ul}zn64l=cq5{WicM)q&CQ*OEFmRKjX06eV#hjaIdO9FEIMD_|AkLYu zdaGL;XphO>IAs#wf1kX`fu$dDG!zVHr3+^oq>Dk1At9_V3NQ#<>*+`nL)ArYGsw`D zHEr?p?P}djCgTz&gvz?thn2 z>HB-0n|o}RF=~u#a(e=XzS;FIQME_zDaBm9q?eUWlCPYiLu`{D85Ymag|;$)=KFPZQA6yDUR<>CV>c__$1o4VQJ*8io-=z~MO$+^Cp?+-*`YL^UBn{lV zon{~}TWhKW+d1vMwA_>{&cL&)Vl8aS-;ZereLMoG03fGc@4vwT+?qp3)TWfGC>D9p7jn@}3E`ySag49Tn z9u*|fNuCKmb{ddyrT?O}azwO)M2WCbhJY{u2oFyfA~4nLEH|~&4h?zE>GiC^``K;Q z3HZcE>)o^+7kuQ0xA|f{XX%N5+q^TdqZC;H7(B{Y@4=vT=G#5LzrJrn8r|)^K855_iF+&{dF?PaAJGd^6PW>~6 z$}HYajvyfq_Z&nXc{CC8vD%L{wSSYKyKnMlPXClInyFR`;OH@f>b%a6aFk!-HS zf&(pg4)V0S<~pu}$~(!t@T5Q8yxOU@*}Qvm;B9c1Qmi#{#&O1b$)o9qbHj|oKTNDG zF3L&;fr(V5ar~t=6N=e~_|vVhTzk4g-aP6}C_FgP%2=tZ(DFvR*rV$#sl* znusjD0&>c0C2{e+Ylnw|xF7X?#OeF4=OO?x>V;xXLK5Onzv7SuP#JjrQO2E zdy9tnCkAtiD-Bws`w{IS2bqy875mZqbEH=?I|n3fD`%B>tAs}dt7HPG8zmvHTIj@j z!Iiu*nL;F-%Nj||;yK6P_;;OZr)<-ce$T^LR1+@_ z*~g?eGFZxkq#0D15Dv>ShxSN~!pw_O4C=T+Sl>77qP44eHdr%7^cbq&Pf$n5rt`uU z!8zuc-S>BmLJcj`&!erNFw*JSTTVOyn$hsE+W45Ru8$xc3?N)pV^esEFHfnfrb?7` z=c|l824$ythf_U&6voO}>tyOEzepBWBJ<9|iXe_HTW+Q1p<3Q#rA51%0`x?h0Hh~) zjAs5&?ph_mG{0};kvh* zPg_a%d-Joun6QSc(8cCTmN|<;NYMois-wzbr(a~`cy}YPWoawdsnufX@*9$*w|y$6 z{YmM{0f<$OTk~2kR;3!asbm7PpCPu^7P(}Ciq?#^pfCvM=UZB?>%s?B0b`f z3tAlUgHX$*rqI32w__kXlDhqE)Zy>$hvK2(Z6aF^2?WxFt9GzOqi@1jF|Mue9%^6Z zA(U5^?*+C{|9i4`<4d}^Lc4Kv`*7md;te=NW$rMKcZ`gjbT@|aR(r`g5$pK`&PQ`^ zgZz({wnBP}lL}5DMmZYZ zhlqP%iQ_F5b(p*eva9N(%TFjZZIn0;bKTh9Y+Vkf{*~+5gTi(HBrlWSzmFuaRd&V> z5|4tmw|InwkRy({oU{mJ5gN)yj)Y}?fKuJ{FsYKP5T3dwMZEx7sGy1>U zC>130cv2yr*(kJ=*@*@S^2D44Ov~`I!g9R0Z zWrP(tA@~Y+cwN@%HTqC*gz&kEs2C_jSj+uGCU%f%R3*)K=mTBkWTJ?rHl5?9ghdJy z=|Q?`4vAw;RZfELnv~0XqLzVwd$+f@e>$$ip3)2}&JByS?qg>dDajca1;X$I0LH=|%@)K+D0x?=Pf6m!&8|vvf}CTk8GFi!|RQxnCWgUY08#_$*?^)e)|$3k#XG#frdR*y>49Rijk9*gb14t^Vhrjt`oQrB4eB=A)d=y3ussB68K zUUCQEljhf{sNDrAe9mm<67IV9U25E&xmwajIWbm4{b{jQ^=w7$(UGL@#RU5&EIi5c zV>A-KU&B-(o`Str`AbFoFdTt_r^MzS5yznhO*(RYFZ<8-`^E2LVi&iZn;M$~*OQ(a zRtyiH{QPA3F`e{fhehoplhSg!6gSi4?5}BHR-AjCDQ|P?b+9EXJQUMv%;OXNDnP5F za`7Vh7;LmSd~|s>;DsdK`u6Adq2={DATwQNh*51Lo^^{tk&t zqmbjn!PMyeCqQa^w)!tq>xRd>ZD&M|mddwmFAST)Riil$?rvF7{Yr=C_PxGQ z#X0ZAy#<0X6Zv&=bNe5`4SAStXYaKbyq2-LE)lMYi;1)A-d+O1SZYqn`cJ#F?)!Ln z5U(-cAQ)b8`!fuD>C;HD4Bs11&$4(u<}=D#d3J4qN#XIJmBqTQ_N=>fgq9kL)Z`?r z6$0T8ZQm7_+9QP_Ln-v%C*soeC&XlBseu5a+82Y?YN1$}jS&G%xXM^dW*h@NJPZLX zgv5kl9qtuzV@>L;;4<3N)?H#;;Y#>sx-;{Hh7s`RL+FwrOjr_$@C({N#OpViCX)(O z#I6H5D<)#_2EY9HA%I{ieevskvFY{Rqd&TJ;X`JKog*nRO-~PxZ$R*aCba7kWBu<) z%IJPrmWcT@*_wip{HFuI*->AXArT~eznpa7$ak&o@wVDjUT+>3gBwjQj@ zn^LFpt)%!a75Iy>A#Zy828B3ay}Tf0IP?Ao`RU&4YN#Kz>FDjBVl&Tt%1O)nBJnQl zvK|k__LQ^ObkIcKb1cem2|1WH%7}pDeb!6;D*zw*Df5o(XE-W`&q@1 zAeko=)t{><+v@bn{_*AN1TJ?=^^5VCth)MygvFQ9R!J}OsRnbMEWPH&X6NYOCbOs2 z`CvV;REdeFRmnts7Yanzf9>Bkle;kC6%;|*@813z&-H&kX`vQ&C*i*u7u$m`oc%l` zjw?M$?;Ek6t^M}Mx8r@`>30%xRej4SxQu$t7{!KTT36W3qKC?kCh~>6BDn*~%%&2; zljAgm%Y)XI(3h(>OEdF+b0g z^q|%;A`oIf6)A5>^9WqOn+(nBOiKJB3&9tFOysC zDq%TGDb_hur-w3Y={EE^GA0P-B32MC9_+OS(ud>{Lz84i2S$wV7Yhhvzl(4t6A~h<8YIroBFmrDf#qS4eH^-R zSe3g)?r-*6tZJn87TO)~YUC9poxP=r94BRN_VMfz zMeC7IPe2EYcTAjw(N9<#NA+c7D#RbX*&_C5M7{(XQ=4r(tWQPai_)}}z|*Fq(f)$K zZ{FsJ7n8m@xxk^Z9*`fph~^Zztpx2aG4?-(S<$A)Z(1?9QN1{z8NXEuI~A>9hT;4k zVlJ<5YJol1&D!Y5Xg6T`)4ILlXWVzgSAF;5dHKscR%b3_!Vf#uSEpml%b)wniWH?h zK3h-wFN2cm!f4t=+r`VUs-xfO-PJfBoILFs0S6r34JDYTDhhoetRVA6W0jn!C`~F0 zgW1!kE)qbzcYuvTKz*dtU+h&CyQbr9!36qK#rB2xruv^%Xr6-zc!`KQ`#X9^xS|qN zdUiAOKC?oySSbVz98e2$`<^q_`o8z^$z|BcA` zeLtB#to3YNyn1eDX_EoQxDrL)JRuxpq#yTzh)VSxy>>|`w-GAz?7yAURPYdmtW^gY zTHiB4O%-OB&%|8G!N{^uzbB#bAq#+r3Hv!7WM4uOlYtl%T;>-h)G5eRp)%8+#?RAT z#OrZ1X4hw#04LY?RbyS8xs9tb<^u)1m>p{*I%l2%0k+abul6}Vs2H+&V+%`528H9o zrIqmP3DQUOOJok0MV3ii#E9FRAVRgtu=IbC)9zo#7bZ9K;kZSS_d zX4h!08ts!haX<1FqfT@d9bUPI~P7k_pSdID*UQ* zSwnqrqJH~&)zU|`;_7I0o$eM&6+soAiD0X9VS6rzRKafKGEhiN6ZdK-#6X0&2^9(4 zS(zhsK%qKPF=3H?$>{pE@49iO=+w;A&xn}m0x?PnkSIGom27hM$9OogOlZlFHIEWz zq+D^3ExfpVLoPI7V;)?z0dFdy!%Jlo4CuGLV-kl=5!bE=^L7jcnL4n*HGI0&$pwTq zu`jD(;|GRM@j;=~0&D{KFZAVPwae>8xs1UeydG?m*j4a1I5}+2`2p9yc+7X77R!%M zsaWlFUh{~St%YYgK1JYwLu+$l4Dl)#tjrYpYX8!weB>P+yEs2lQ(A7kEzCe);W?$w zq?sT%olZoFho~^Y5SEEWB88A(0elT)zi`7hQB50Lxpdib7Y1i@==^BDG1w=%+egCd zfw}=N=ZA-J;SV!2f74n%@jIJj7Z51SjK}2GhBAP%5OBc&VM<*zI@(rj%lK7fA~88D zIW?iiYVN(RNu5a}0ep5mA=`5Po)Kc|0qa~ozC-_pKh3T+rhp7E6{ERxkDp5g1(ZwW zUs+ebZG*fOuMfsr_HW8UE_!ht=X;X-Ped_iEFA&<_2L}?AvI<-k}mR;;kDMB{oVf0 zJOZ!Ryg37!C%ocIT~D~$cj|#kcT>BM_Zu@iqN`>;#TVTh+z|42jR5wJX?*+-7VEYE zSS5oFEw6fDKpxbP@SRYM!+=)%Q7?AjeLEmKX|c5SwY6TgGEp6`lW}z|AI)R z8^FBdq{Y!`pD3{^8^697P!?bWCxJf-ekO2CT3XB@6(CUO)It(be8QyZ*I9|h7uo$` zkkz%;))w#>>$zy}=OIfBq7nZ= zOi|~>A)mN#Ig>}K)0re5^#mwRO(E_f>x_nl4s}TX{n;w&d}}OP_s!vCXkx1(fety4 zLIe7chIb)5+39{3a$oqRhX)WViS8Ehv8pkfEd+D>bu7gX2plg5z^qQu^-Hdn?SXA8 z`xRaCqgRp>k7kH#Z^ldM-u=`HP~DJa6SV2SQ%^fx)q zQ3Uh1Rz|Y-p2AurwZ*i&CZBhG-RZJ>;Ym4qcS3)y4$m?tI9S4NlXP4Iin}%%^4#$lAI5tl|eACuB_q5aTU(5Cr zZ%(Pi_hdm+!ec1Ppp(PRc-nCm>EJ-mCkRL;ym)O=>l22=NUD&@?P$#PhtW272~DlB zhuYmB(2V~TIV_#YY?1IS7b!7xzLP!OZ@G_(%w{DLTXs4tWIBB8AG8h8j7A282oJsS zL~z1pIw5Y>h&2FejBmCdzcF2k7Z<_SrEJs4pM4$Oq)ru!Ts$0M<~R zt%>jQ*%K1Hs{J)89(=;K6;+Sk#Q!bi!kC(XqQ2wLo$UpS&8Dlv?mDJaB4F6IO7F;( zI_?_`8#u;s55HacuQ7^1Y<&Cd6kM9tzW??onI5cubi-Tvxu6J6^$cA`ls*SKw}Uk9ZNznk_ErKGoQHnFM^*ONw; zn*J4Js}{+Ky65@}8Dwcqt+^>AvY4KLR$fRJ>JOv@(3S|*cxhmo{ zH8gCJxU)fX$eQ|N~qS}&_HxNk$7}uqLWbqg|YmtLui9B>{Rg3>Bd*A zWurk5=np#&oCMibfu9))D{H#gFY-068i;K9S!j9ky&aS^kR?HX6<1YV2W0e9Y)GxC zW8aW7fWWzO-BRKHgSih^ZNW!#J?H@n-SafOHBe@d~0G1h9&P1O=~Jl$0aXTwiGOz)4Frv(%< z``ts5m^?M=jYGMM!Zh+<+1Kp)&}oyh`&k+dW0i$kC7RFz!jk)o?fVUv$wSUuobNQ? zdOQ?IRHLv9Ov&K)ocFqEOpx;wUCuIklr_(XBz7C4Zy#?u^SyH`@jWdx(7ee06DxLT zP=|elFP{vJD(a`1ZnKY~J|2ex{(GB$g3}t0_2oaNsDpG`bbQQM{&{nPbw6$0IF^!g z$B?5$1SoYutOoJ|7dKQmR2gTHlN^Z+ekkA=xdp(?IThX`4!7!iY=AsrG~H+rqQ52$5)!G6f$V6Q*$e68HpnD7-y1q_7-t=z$7%`2EmUi~e&+Wrq0=nwFXeODIE zET}_|F3F}*gMQ4)u??>}U6y9wmXbl)%-%RDIJGF1<$3~EHa=b5Ig*rNfO>A(5%>b_ zw%jV)gBk^XP>)d+I=!o}LNfUPx;orHBpMDXELGv-A_7?|uR#9zIH7khW+r^%s|p6I z$!xOO!_-K)A^Qf zNGGAf!{U8=z(#pYr`wnVm!|v%twR1Risml)V>p}(Lz3*NiDLd0xW958;_$W zC_B%$2VHAP*m4V&{Z4yRbr0KuGq+R_1qB6fkwBx{=P54PR%`rmp^C6BSDi=MsUz`u zgLwwxPJL;=L-snlK$HGp_t;h(1*_vQ301Ith@gKCm}>&|m)tS@==uW^m;fvI^HJYZ z&WHg=V~tDR*nIwGsz7tQw2g8V^{1HcEnKBNiTx=4OIgxd&!p4K05WEYsguojZUD0b ziFiI+x98F1m2aJZ;1uAk3sS_Fg9{4@Qq~EMF;7zF&=Vzvd6G)m*!vurVeW#($vx!p zp$QrrOsFz~k(~GGi+VS=u*;a*1!Z)KKN7Z6R zP6~m*Ko(bUyMQ{gygdmyX$ZM&UmE*rvDki90FN8`z~v1YnQC}Cz(ab_Ln+pm(AK=ok;cl8hh&7a$l(0u%i2? zOc#H~u<>D?GueqmVH9ypOlQ!|yj{pSZAcLAc$dYu#fr|FDfv_Ocn&=>FF!x{{5R1| z6(8T-2@N&GlC=tFhM#jbI)F|un>PMQB#;)F5hP74pY6=l?>Y$qNig>#g{>rANx)ei zW9Ecx_}bhE5_6Wa^U0-47U{;2==0sHs<0Aci}qJOO%`YJJ3VantPUBYgM-&)S_Pq2 zYEwg!Wj+gJCwq>0@{=@(Pk1sfEezU@6e62)c{5^)(d}%iHp7K~$;m(3!o^4Hej<<)d>P{GjL+shHx(yuh_dzcyXxIxkjmy-r&Iz|`iuqgk#8$4{GtpY*t= zl#|Z0Ed?B`z7+3CvuyJ_0zl=IFt`Iu*kRxqja;i|@D0CK!E#Fo%g7fh>JP0%A1BF_ z3GR4}ykKJ7;Fv`^$_znL)-f2miE{6l(!z}gB z`mJYC&r=jR0ATjzrvFM!8=16oM!cQn z<0U52k=87pP3uI z?f4VkomWqqM3IvWIMY0n$!tqTE3E^1u^ zpQqEm)x>dEi{l~JD>uHkcf!`Cv@Rn;#n<|x0lVl{T8#ZKe^B|q2aG?+Gf3Y4j8uZg z>}Iv;eaclIeJ{BkJ^Oe4NYbIruW6b47uA$c$BCx6`SIf3m{{UV@!f`&rJ33cemSUQ z&jUA6F!v|<{uwSX32_(7sBX!NSN~|a7S|{V(kmS}?~|OHHmW@5{?N&&$_WCMpggIM zBErEB1v2s8i5EGlPmu458u8}`*7zO$UY7Lb+;s5GBwHW+J)#yIAT3nA*f9~fdu9s8ztcSm7Gvg(c zHK*|V>j-&Kj;b-`@KUNlWGU5pn%+0K5x?afA0Rj%C6*{eescXa!0nDTW+u?mK%WFm zpIs$_*yvJ8*5}naBKtaHKYO`J=4lxU7uzdEfux;r$QI{%k$^lD4hq~~j+VZp zZ;;o0gf#j&4j>X&^PIAk3;=O$b5#YPh8!*SJ`o^}z%Aw${kN1ou&y9-0X#`2QUlpwAAkSP%-ySMi0D06_s{kbVv#aM{*^s`#JiYl*^)2j zdY2%as*KynUFcm<7bT+$_B&4Syl+ToMapMVjn z-Sc*4xJ-@5u(|isvPIJ>E{$rpH^b8VZc}C)(;S&Gq3%a6Um$`SYQB?8natx*XUdSp zj%^Y#NR(AL+h4BGq!5~$N{gX$po_YAP?7ZbIV&6og(-%%vQNbu@fQT2_n!V9iYqKn z^Z35Uf1T6)=ip-0zk{)1anJIq*RnLNKIg>9@-clBc+im|lI9ulaR1xo>)nhF|C_7x zR9#@m2?wSY4XLjm5i;wm<*p0!N4Go4wFi_rbx&2d2cECd7gaFQD{9wZH`Ni~t4&`E zBj2Y_8x|{-J%Xg~`{2{r{MbKRzGQHG0FN;{f{g3}@lD^%uulX^g%bf9X&%n+$D6$g zveC}20BiP?Gy^rt+*)0={4)0iH$AmVUzbIME>eaXt>h6()#`NN+Q0%MF;L^{xBbba zS@PF{^Vt}uvZ|^lLOD?Pm@c7;K9tE{H0PDYQ)F=I1|*Zd|H!dG;>MWwF_* z7n8+%0pJOL&?ZjRoO%B^Ui$x^MxG3HAG-A)!kS~}wl$3b!MLmAkk(KT@{; z;H5x<*X=7nM7HD#B<1w>D&7g&Z##?mz}4He|9zZZ#{7r82x16Dd2BvqRvxZ`6gTIq z=37qF?L>k;&NOR1wX0cZQ7n&M5KH#z*l0k=ORrjAm}#`E{efF!2D zc?6;K$Mm3;md*~7T#KvI(jMWrdU3VoboV2+`DS;r!^L}@Jt_3|gP?zUGqhZxBryYX zhLT58l&rA7-uRxIsvzUnls`nu$>qw~0u-jjT;{y1E!q}b&w@IBwGco=p7i(yUmwm` z`3e*kxsfd{Z5~Zv9Zn*|CQh6h`+}zsmH|r`22%!9e6eoDrrHrWi&diMpLN54Qmj3*?z644%mw#|@ zVhm8(0LUtkUy6+*#-?yqKBe*18t1oYk3(iV=Jq@M7++7bd5B;)-DiY|)(PJ~0dW-D}Zsi8rhmk`ECDV$biXu*lADA$_nOUlg3@eA3n5dkoOW*rN%GLtW z3JQk!Jy__GiVF;uy#CG^^lExxxksg(o<3c7gnR^ox}z`8JFgE-&Sa8Q`UX$kFed8% zQGT+KFqqU!OdiYK&oT0ge!9=S)!*|)d*0T3wc(s*?96NPHl8wv-_2tqK+t1w?PEzv zo2@j8l{GM+tCG%sQn(|rA5@whv0z&z&u;jc)d$gZzM( z_t>^cns{A&Y+bZJ!c9_7sjvQwuMvPRa?1|sVA(qE-)4CH_*w3lWdosxsUtL}gv+>l zu~YiU7pFxInK4WxR*i%2FMNUy|7w*vNVIqc1F9B>?1grq;IupZhLoQsj=4V$__N$X zSObz-Z-r=Fb_;9fH@Q3m*?$+wXY9wQaIJn9Vbik7Cv%9?)ve3P)yuX9fL6O8TITDsgXte+4o zQFtcyx0Eu1J{jY%yZGno>PM}lNtG#1J-aT3!BzwzLJs9fZ#W2jk9(IXfpfZt2&LvG z#}oPFXUK~U)fh;O(bNYs0jDV;c-BB#ihUGMMHNB60yE4&MjZy{h+F3v>2p?88!|01 z7uH-UOG|7+2w4oP!D<|`$>qFPK_K`L3K&ywdbt1Z5c2Oa*nDn=-iV_?Q|Rqw2ES!~ z!O{zveY5q}jl-YOEKdOKZ9~V+=+0cV!O73=Xe|pV;L<&C(L-9$O8sb@=y)Mnpj+$+ zBAoEPFLX~REOGr;E@S^+QXOcK%VLuX%~F*Z=ZpR8;+@H#;#x;m38-GWM_I^m_eoI& z{j$#HPr@_rHG|*vvNx~ph#9KIA|+g#t0?gu7@Q)G<$o>oUi*GUw^&qj;_RyV(yq{A z7Ut$WPYu__A*~3LXshiYs5vb*Bvfq(rS5mJV`*t_4r~lFbrHQ$veWe@We!-T@CAyc zRj|mtn#5OPS`gDYzX-X`cb$AGkE6+dSc^}lSl8qd746X67whhwNzd3BwIY+*uMaBi zbU@@(oK!!#ez9^E-R)Y(q%Zgvo91!bC29FMXfOK{J#OjMtIjWvch8RW1Ku+Z<8pQ# zQl;KTJ3Ps>9`kEhWV5z!@qdNOr7lk#Kyb2tJO!yNv8*P`8J$62{_JPjBbyRW z1O~&F)Wk*QNrh>}x-{`WJuU^uh1jqriG!44n&m^^L|+NNnKDix2QH_{sYAz1+SYc` z*4=4xw%C$15MYd{d;ZFeAlm5n*sG3o-+WZ#e_M5+wN0TR>XV$?gPI%ue10Gy)E zIPw}P@D&w3aA8>d1xuqRsE^O8VdH9c(5`xfFLQ0JIsm*FIXKk)&ekZdG~H99oy$SWrFnv*0mRy>d0@gP@gLsZ_K|v-|BlOM)eqyM$YDOyv`*+c2WXc|uHeFE$=$QdG>U`D z|C>`1%g=e=$5R_RlH$*>!(ISV#XTQJIhCnQ^&u265j`rny*i(=vkX4p^luCPw>k+- z#eu;8qp|Desi1(y4-x$4loP)Pb@o?J=P34x^>qx09Jan({U~~A~jy?6pnh^^_u)UN+=#VcEqF} zd;?eumn>Jm>^zzl z8lzoXPBs2vXF)6nQT83^2|VUs?RSoc`;8qOj-I!*;L32ExIOd=e|l+}7GS&DzrEQn zkPgXLzdBeaJH1?TtjolmZ|v^=Ro)M}8q|_sA$>61yB!z)EVnAxb9nO*Ll){3*;m4J z3LN&%w}-{5ffm22N)%wCcLB$J7P9UM(V&Ey@~nAbO@JBmjzaEV`_Au>n}VDEOiIuv zx9{h@j()+xbCyQXqWUPT;#;=qOzV$QvI=HiZJvCkUiD^mV@^Yhd*~l;dm7C?rppJk z(}}t-$ET&`dGfvDFqAvcSO#0^JQo$rnR@lzHE&32s~c^{I@VO=5@lsio41t)zlr3W54JVq)jnW`cU?a17*sZ$F)(A7`Wc^DKFAxpsbMKOC!nJNoEp zy2C!a5EsgB66|9pS(OYT3wemwE<$WcxBfz$LA69B&bp!L?5hR#;aOmVog_{nl0W|= z7iR^@zcE)^)?{v5IOXfJAi<}(F(Fqss-7B%t+Z*CjZb`So?cEf0|WRmYEm2cGI8a_ zpw%|A7dq*j<)v(!O!72B$50H$9)C59&c(jPb>)jo%iHtb-g7U}%T`kE_^+tBvuoD| zo06TK9RSe)sF+2^QTslUK-^=7FY21_&zia};q+$7fz^O&i_Z#K{JORVW+QOU+rZ?H z=wk5P1|2|fSnN330?Drt{+R^os5Xw!5Z0 z>fU@jr2F?JV3TuW(XyHb{ZS#AfE(jYiRi=b(T@+`Dsn_*qMapOJVoC;AN-;@XdonJ zUOxX~vGNjt4uB7KLay?Fzf_Q)?<(42H{LFo_cX`lXl!x66$n+%Fv0;Jy&W4jDDBS9 z`l!Ew7Kyv3w~(;87;(#Y8+z=vzBThL*-(rER3?%;^Ro{!`Dn&=!7E54k0)LIuxo(r z`Eyb>eI$(mC){S`rXb`8eOtA4dNDSSY~2>nYo`H7Ba%s2Mwe5Z{M^;d+09hXyNX`N zHVd-u!W7QF?oC~T==OWdo4E}+IZ_+*&ME6Jo7;aNv$oEi4*_Rv)s978{@%ivpXF1# zjmJrPpV}SzNC?mq9MIqN2CCKzUH||kO2%jy1(sNwu?80+``VqF+gW-#{e;;2Yv&VM zg$n<&b<8`*72999<}xIxV+rHmL*_y0wcX+aC(Wp)khjB#6dMJ$i9!50h*1SF#T4T) z1R{lxw4{SzLmsuu`bE$pXP*FDisUqoEgnn^69grMGuv(p;SJK1m*cX2An&%@cu;gu zT1|os`x8AzRmy0lAyoMM&O>x@PtilYxp>pertf6Z=YQWyUmedh@1^wRoHX+c589?! zA1~7?PS*2+Z#EuC-(|bnw7l62e8N9`xVy`PYXyuV9v9|6dNWE$?dL9)$(TcY-1)Eq z2v^+$sWO{Mab9c)C~z zQDF#;085~`u6tWTECreP(DC!fy>=|Yhx768-@kVYz9y6Usl4A266Aey{1eY>rhQ7l zgm`d5XE%G(`eNe^VaLtEdy6Om1nHGKva*1mRm|Ur(#qM}i z(-95UR(BLg*Z%(Fj=y&)W^ylB=RVKxwddl<$BWSMQFbxG}s#sH-C zu`wV59+GbI=vvolD}WMb0F#3P!3Bc7E{pNuG3D8@DR`vqh1M-@H-qh^Ss%i=$jQM8 zI>oAHVyffS^?8r(L8~%n6Xj~MrK{{_CfiQ89u}DAx%e>1RY*J*|CKYFLY!?gMF~sH z){!Hi6rkvu)A-}Q!;t{LQ~XtuQxKv@nM|B6liEctRIZVf03}C6;0gLr$l0V=k7zE6 zyaB%%0+DX+eSd087ge)AbJk{OMAchP`TH{XKi?fsOQIkd?%&OS^k^oa z+Wu#&+cpZzt*r_olqb8{OBS^nWHbO9<22+P_=unXt}SxGc=tlhTY#OwZ5{F;lcrZ8 zIgJy!@mBig*Za59n(`q&7itFN?uJ^w2YK$L@Y}>KVjhc2wF0Y4z^+4f`^PQ#V)*Q~ z;`V?xcEiE`v(jZ^6SXe0FXrDu4JMwCXt+j%}Vh(ic+bcaFqz{Av|b#{W7w z{u!)SP5(k56{KC>MCTbN_&l+#{?g>9h)>Jt%$MxXn^Q)>`(hb**j4?OW~w^ml8dc+YU)A0Xzdh4(z!~TDN^gvR& zB&9^UL2{!6$$_Xyr-XFF2w?)!N+TsPlo}x*B^^T$5dmQ!F?w{z_kMoQ@A>dQ$H6h~ z-Pd)!uGjlKU)Ztc_=otF2)1pgZ3mk`;fu`iViI}mHYiX3IX^Z9YIX(gXjQNy=vP1; zM|F3Lp=l8^j7Ia857a1(WY+VrtoQ}dLviJ3s27)h@R30yb*;lNRM3j8R*}cvHZs}$ zz@-Q845YOT?d}9pRT|##V$)zwBq$`eK=IXmPSf+zYqJ@z$~Am{+-(cpepSh^x^z(Z zOgQ)aJKu;oN0{~susVqFqdeLU*TH^EU6`G zm{ZVrlY1f{t50&qGi@8$_|Nm2rqBiEM^z%oIhQ$afwLgd8An)f>kO`c>j|bI7wuU8 z3?P;%1)r@f8z{GZ?FhQLs=TxGZ}Z=fc}M+%-wMSj=+CGo(Xm{}%P$NwM?*bY2>-yZ z!3Re)j$e>ugOIz$Tr7qDmWSOWo#*>)xcqskG&G~boFCGV;n*MJuhII*lr&Q3Wz93Z z5^?BwDSlvx2AA|lcO%oF_Up59oWIkS3+u+!W=ZGy()qUeNbs{D71j&ec8jKW$zm4s zK1pTzo5jMYbA49jvj+FO+;3to)5tI$y`lve49BsRk=9p32S?>sqRC!Kim7b<>|u@DF-CC zd)0T9TLU_cxuq(Gi$&yGzRqB|qW^_YZ_DO7b~?Q2S>4=QEUXqfsNM?ctBAE`uxt1g z()%!UX<^Z|Q3$C!I{tpJ8Y#q~%e~oJEfR$n&CE<`Ip-!rX!;r0U72Q$ZR$`$lUy*n z{OLNIB&N^xHjNmI1p&q|k{C{BHw`6w^MHRlpF0RQI$Dq5dvBix>Vl^YzRG9E<1BhG zGAo}s$(bhQK(o=R2Juc@Q5Vp~^Bv`i$@9a==+7MsihLm9!{^y?3hjixhpFBF#8vJV zzx|e!+_b@+#aH=k{tu<#CfQJs@9K~a2gzV?%X~xHR-eQ!D~X4)=!Bkha#Ka{XuU|$bCsMns;T@a!O6O|3{w{wK6D8>mLsAZg%jQnzQ>D8m zd?!T}bQ?`%ocQo*KM;Y51e36$HyPYjfY|nddD+hK)MY1ye(*}dw;kp4T#l8z1c9od z7*gaSzn=wRr?z-t)5umjQUMaLKYhK8?Y!AAFd2PuwljX5)2B$Jic3WFm()ThN?+aAodRXFkIUW;Iy~B6@&faZ zIm9V{bun7ik^bx{lrFP|%B*<-ZknlGLbb}Bmw2vZe(VT6o=I6gnMy#PtSwq^@K@29 zVM4d^ccy^MoXG8O=T(36J(aMivNE#be!^ZL_1)YQ;-@J3#vJ^3f|m%phSE{{<@Vd? zU4n!Im-ncfI8O!l?&+mya5V!-0<}7WDo63Zod;bRabPIZH8uOw-8lcY{fxwpKHQIF-GJonx~o=o0EH|E&#NoPXaS=ui=BMJHr zfsuI+jSht1yT?5ME~hgvNTCzR^LHk?_x;<4=2H@uwt$-R?F}$s0i4~{=5Du2(wC`} z&vzV~{h<_~czDI$#YL{EW@+f0^yLm9NX=3k~LB&hlURvf7 z4G0v33y&+xIVWs+c&HHcX?RgB7B3r5M0oi&?yH}C*))uSN zw{5RkEeC6Z_f(0sq5et#>jH?agf~8OKXsRcm}evsk39q>4gdRB(-{%u-!W6&RwkW( ze&`f>P?3A;(sm1Mkbr8D%FW_6FwAqgcV>;6dzfsdLxiHxm~}r9{M1vD9+J%QvLGMx z!ph%LHhane@ECxsImPG`+V8+#=P{F61(sbaM@;xMz8J%kuc{Lbu+*~{i2C_UiNsNg zS2M-N`4rvI^h5d5P1)+=k_t#NP8A^;Y~`@|#!IE%yja9jdIwl6lH9S$N*2HWU&7)@ zv41x~T2@*BT=y;YI~u}YK)KypOw8o5_-UAE&K+#RqBzKS4NV-1th{O@T?6N}|$*%Z#NGh92f*8nt#fP87W!R2hUU%gDn#JIBk>(@! z3=^pF21(4#_AfNa@t+!fNQB!!NPhnEMo!TIu!VM8;|L423 zvW<;HPG#@VDPD8MN zy;~B+KNQsp|6f93{Tghh&)>7!q7_GMU;9)TxJEeJi0hnh)Sqlb*{sKQ%;QGtl{!ur zzcgcR&YC$o0{8#zFAu_2wJ&#Ar&WbLJ z_tn^pBFQ3}T&jeu&y+Q`Sjqoy<=P@n-*G^Tq-oBYWtPF?VxA0b%-fLhbHZDbP=ieu zK2`cueq9j#KZ0t+-PpUXhx6=0qsDiGl)&%2xO zcva$fxT_{29Fb6 zXu@71NTE`>MNZ`)T*l&&z~*sN*wL8e*m&QO6XtsI5b*iU-L9(ap0=6AW2(~`BjQWe?hrPW3`Xk4InReDo1G&WF2A>cLNbdha_sJ=&U;|P zmgIVW5p+454?+rwE!g(`+YG|I9WAFT2YnS9^BM#Ol;hu0TB^`>P=?!6KV(SoN5rR+ zYFG#?ra;tA+<63D_0rO^!E0^{qhk~I7hhd4HH^A%1Iz5SEh}{x6_Hj{Opnvjznjov zVEm+fK4opBZ|z@HHhWr0>U250)S1w+FlH2Don!lpO|6eQjh8?)Q3mM)(q!Gu@L{kq zBC>W2c*XZ7tv)*l*A353Xk|zR%vxjRD`Nc!gr8;dRtHxMn+YI>1hSA=n=G`W;HUG@ zg5A(K+&_^HDL;@{_Mmr*DGdKePXjZ(y0W;Q!sZ#!W*BoEypz`^rwDL!-7#TUgPWtw z&a;^~j@uJ}lk`%U!JIKO8539yj0$&slx;`pru{t)o8FD9mZgT=>9(|b*|4MhoS4`@ z>wx;3io8OWJ`&}3xjw-PlXsb0XxTgH+jwpj*5>}aI0->0R*5GOf@6BCjfc>dPWbz> zo)q+J{Ik%v1-IpJ(f)fyLRDO+=$QmnzPcZRuJ=-S%jt%@#vC5s{j{YZc_>c~kjd+Y zi`FF8MwuVr;w2K-yenF#debao5^0!ID2xygNstgezCaW+I4fsJPDGWd^A182P8YBN6y{Df zd{4!M-_%in7v+>&ORV!DbxnXRh82 z&%hhO0A(w3!x1&VBeUSMC(PaS0At+xs{`&BL;6)`LUHae zHe)v1pS`}X?!SlW(6!S-Gz{7L;yUeI$}`9q=+$~mXrv({ zr4EwdCekSR>{f^bk*%P`K|)?K0wdhL3;)IgfG-vG{72jyZ&uP(%ay}e7(K@ZfYyCqx8!s7xV07-uPpv_k0z;I8FXJj^iI-#FnQI z*|#l_ht1-00gqbMpl`T;q;tB?@xhb@3wMevoh^Pl(HF$hIyY?|MbGoNS+nr$RL`PN`z~TWc$9M? zDAt-!{Div_c%^ddi0GQ*Q&gJkSkM-dA>c=q*scXd8q#!bz4-mo4O=a|tqptpdpVBU z1W|=7_;CA?8Tv6Eac)p{agKvHJ8qz60Az<`Q*ok!n1;SfVYLd4nQ#~AMmjb@ zQkL6PuKvl~)ThH*48|qJ6uT3yIB}oxjT7;YO$5BAMidQ+{j=Rvm410|;^O694pDP> z?ao~K403)aCt<{5@vn5ka)=+yHGVE^lGMnQ1ktwRYrH)dW}JHw|7~Q@J;V5z5!cSD z^eFrYl=5RtgmM=Xad7l5SoypdyLqW{vFa<6%PuVYQ%c+_;%e^FEAVP%V(lANN6tcI zWbw!Jmhz0Z->-nm>c_a2SFEZtUqoN_Ur#K#id(LPb2gTQXpOze%|(Y#esE~P(Y_Z$ z#M`KOydY}GOXqzYcJHF&mBYHur-N#t;h%ATaGI}0B@Ki;HN#4omj787AuSxJQJ)cm zv5BrJVzoItbL{J1JL7av4<1;(|4kLPtwe-BtTUx!`GF{<$)$7d*nL2IAw=`pSQ#=N z^dgX!IhN~{KlwLHs*hpAlR8i0FV}#RJKx3L4i<<})$n22Kh}N%+~b<~;yGNO-f|al ziex+sHP78to|@QZFIMG~qy^Ymh>f=u69OrrV1U%w@vu8ir#On|mCbA^NxPKe=uZCAEn; zAu(a2i&3L{GsdlaQeILe_~2}N`*VVZbme7-)z}(G$8C4JlP4!Ixs?!cJQ;B|!4D{# zuQpJ?C17Tb-J_3EVd?~8fKQpu!6H(P<=qGN$Pvwvj;gMtiLsgEX*Ecjm zjF))7D9uUC+ZeS-NK_(D%P|-IvcTB|U=;_41&M$Bu`HHY50bWH^r)`pC}2y~Wn4b* zJJ0=rc@`0xbX>|o%wiD^)_B77hpj;)Q`$vBoFT(aJ<0QA4&2HbJL4^g6y(Q+UCwSk z#8U-VwCF@fIq%`;z@qPrwa`t0P12B`Q9@}xs|_Yvi4b0vY|jT=ARa#av65>b9msl_ z362*rH6kjOID1>AOO)7NX$H%lc(I4b8t;{oEX`{-v@`%)%JA?pGoRr@b}tUfX56UE z9{kuI%7r6DD3iOoRhs~w=}3YF4VlDGUq3H@zjjIj1r_&}*V~=Jx38w$g8j~Cj?UyB zFx$%Kx)bkD*~7^3Oho#`;drY?XK%(Xz_QnZTU&NB4+X?Ts~gT!SeJuA5H z)S7nOYOibFaN3swqa(49l^2{16CYT!RAHu5#g$}WF*?e2`|0L|5W>InFT(jY_SRRH zCY@%Ej`~Knu76W2JtchYsG4D`3BlLk)zI*_caHhIm`7lha~Ne`b}uh2k|o~WgqQ$} zzWnScI95LCKG%RwV!Wg8(usMyQ9V%-E3kF zc2x=zMSBZ800;=Du0!l#VFm-@VPukPcipw}cO6Z`k< z@b`5im>xav0}vvrLZ~82paPG%BFP`u{5+Xkvy`BS>x7uBkWbBm?iV$a+tD3J+)7t} zlDMFK>}`3$hRRQJZZfe4De@rZh=TWUeJc)`!7NgGJqjb5$b50;Y=ygG>c*TsX?caD z3Q~+Q?NJ1rL?Zaqg90Y&m-rwU+hnOQa>#boJQ;H_>!DzPf@ZOAxB1`fxg>@?dTy5P zGS=ej@lOg@O+`src3)9~R?SdrQLgY(y?QS=Bsxh0W;W^i3|2(uXPF7P?Ky|@*xT0R%8|J$bZptFsN&JnxE)=Ee4$ds z2WbGN&RDYeQh1r81%2eB#3>?BA#+NQE$-U8QQhD9-=Ce+9k6le$@WaHXU9g$psz7q z3+|`K$9Ll-dQpg&K_2&V3;Is57alxD{{%A4~Q8xmOK;{Sh7+Daa~u>~E> zNSEW`ojRUkLk1{}OkFw`Se^wdAVcGR)6=hr0Ye$7QXdJPo5BVf-3ho)v^6FbN;`JGe;&19Z{z)Kzd>^cAJ4SQp5=Zd zC_asozmPlwB$>h`z(dXQZp1N*0%dIGlffj}1uAr9rZXfrqS0glrD~jXJ$Vls;Ia9e z3nCB`BcK(FoFgOf{Bb`e(HiI`R-gRk!T_=N@3LB#tpKODeht8_Or*yF8H*L0a1~NO zDdK901Q@7L)2<^yFTecjCbKa|sW1I@EwLC(m**2R-{Cb@WRz$`kH~w=tqN1HcLYEV zoFz}UOCnu|3FSWO73Ea$z7;H2GdbDT%-zDra2NOEQLtU+9j09L^zazg33s1A z@oifG3Lzwj!N~vK#NN)G-3r7_))%U&7R21G59E~jC2Zl)^y~vlM?Sy7%Mj%K83|N+ zn9}So*QPu7mpN_(D0|Z5l0{y&D~0V#P(+u0!|YyE9|GFL42O;OX5qsjU!^`RrkU>U z$m}{FOt+#(@+B55gg?BDT5h;Nm= z7}1JaeO6L{Gi*>k**{30@2(wzjP-pPYa$5<>&$DZS&nFyiV5tU@EA>j*IN==#E@RZ z(RnQg4Va>P@1rN^N^)z>5mac+EL_4A6&_9tm6n3(l-XX$XT1Fd5~HC^B=`rXo+{R5 zU~O*A4r+)OH^tNWAnDqkH$Yw>-kjeUMuZT$x3n=a)YIps^D_Uo!9|%lHZxkPqXY5# zELf`#)}Md=C}umpZz$SU!og8T{1ahLH#lWAft3TB>EzzVAB7YsgGujq5O#4bt1rSxjlouKPAEk%7x+~21Q2>V6MQLwAc=F9r=N*XZYD>T(zmt`gKEg zw3QwWd*AMp#8^(P6;sS?AUs4Y#*l++Cm>hcOQx#;!WmoW&z(B(6)}* zdqyf(y)yw8yl7uF&|tb2CY-naouC=5m!T?|69pYAR$#G-Ta5qS)}_4X;X^ye7ogGU z`LI9A!ldJyTnLUMJlN0AA$~ou^@Vcy^7+v603C8)Cwe+?xQ>B&+DZBLA9k-g6|>zg zI`T6v1$N1l4&jE>>sV$Mt><2^ZF)C%Z1~UZOzDF^MJDLP@(NZ7fa*_|HV=Z^7yK=? zAbyr{)c%+MA%SEVxBmCii6KmNSSX4(z4-5N(~*rB>+PT=&2Ve$>DkhL4^US$xa@FZ z1g5PFtU44zu@7$7tgg2>Zg((O7XaFQS>=*Z<*b`(dOFjyBWzp4&&vzXHHRqg&i2~m zh8X$e#*t$iGZw!?xZvBq+xBnQ55)perxi_E=&kyA=dekD72lj-v8w7J@&tI7P$eai zc0shTveF|$v4pBzUyGQ_p!Yw-<-xVPA$mkpAUd0Ge^G~vY&_UeM?%fO1lQXaXOA3x zA=ZSNtmnWw0l!B|^DUdeZX93ptcpv(TE>*fl$YDMrF~*cu1Cy7^15AU@f3?6kK|*f zS9@Py1Y&{X!;u1!NE)&DV1iM;Vz1%K*CK{2jABgP0+o1z@LtX^>iZNTcfTw9Jk|HN z#J;`E{gPm8S^>^`h}kZ}3QK$4_la1J-fpv1DQtj@NBDn852~*3H4yn7_lx5$=APK{ zy&NCSioG{$s28pEBK+yC)$u>u?$Vfipu2;zX^&(guyO2&xV_ofaG7p4QSs_0qs)^< zyTz7qo5cdNzyRZ%F(FIS?*)0Vgjc^suSBpal zxqOLjfl(zGRO%a)a$fyN8;Yh)&E}f4gn3|z9t3xEj`GfvLey&Bsj2En~AAW5Un`e-qpe6be8v!fSw=9#7PP$h$hZwC$m*~5EG;b!b-OlYDPnj3S4UZI9jlisZvCwKi=NHr zcb*2A>;sgNlB#q6i|0*dLRHzTa@ulRpmKjPCfm{UOqkkoWC$AKU&#fAXOXk2+oo<2}1>&|^{d>9Z#xdnFrgpfXKa+cO&M20G z%)~kmPo8hh17l9zqeG$6HX!a+rSpJrI#j;TjgOz^$A)g=zvgaWtTEw5>k}qXT zPnz4ZAAGGyrb-A=vk`-sNbs15aof>2+V>`EyS{vn_Xw`_y26<($8_K%#{Ac9h~(nO z(2o0@*VPdPQxL9fL2F_$RW3qaE>05Nc)}Q05f@K|Qu_jV%n83C8z>7&!!3}TCJ16) zsUwA<%jR~P2s=7jkreG9h5kIsDwp9>=p!pO<(t{`>mdS*XkU$0Q>lC_4}wKtRp4qu zCs38PncnC29(#8)u@HjI3$L5gd-TO}iSB-Xg;(L?jA|Sk`76epV}0pL;#8!_aO+p4 zPGp5|*XU>xHCv_YJtv;7^+C`SLYw!~ACyL78F!)32Oa?+k3{@g=j9{=rM90c%i;1& zi0}ygtKrtxjzTU>!~=tnq#*IxZEe8y?4J3 znTV54cD5N)7(b^@VhYD2Cms05NTX@TWt^?IHM3u&*mCQ6GvBE) z*Wf;kcslh4@%QfwPg&WZ^(~~fqm8GNTbMB;JxySKEogS zwBPB|WZ)4{H?{|((AsrWI%8}h8 zcJ6o0dv7Wo@AZ$|jTof##046SU*t8K(p&ii!c?c3W4b!!!I(8$<)^<;B_Ypl?EcN& zhvfoD(9haal*59;W8yxg`UG`ij+ueJO2@O{ycT0P(GZGfIPoZ$tC+m4ll~8HXNRDH|2Ku-W8IRxX%m}4qo{6-7FEys98OQ5*cj(P& zv3i9zxU9vKf|}-?Sf86?*>VLxK8OX>WiKNuss0(Mv%$_?_Gf_Uv<FoV@`VMpf#*JQrj3Zq-tG87K?~w37y$J zaaRG^Fsqww*wLj1%V-%&n@(9y3aDEAuIjO~tciR&mBp4FJOBl=y@+SlhXA5sX==P; zW+a6?fwtNhPobR#Z47|EJNEtQ3xQO4*S@#{pf((~6}bXqMn-f%H8SG%ROLnmfNurM z(bw%0G3OI)w%!~qCj)Ltj#$yAypDvnuL-vwr|>l9vMWU82pJnsS;$jpRAZxOq>g)P zBKAjAuG3Y54zAE1%@MeATp#+ld+F+G^WP3O`9JT=oFSkQY1Qa{+5bFZ+_U*|t12Ax zq98wa4f|su@QU&F*j{2ESf^X~Wul{3U0?pVC~NEkzE_DU*0yWQJtps?ywin6iXKw4uP6Dct~B2HP?=Emm1qV-t@W^dgO(ETQMYrALDze>5D7wGGP z=m^zDoJsE!2t^eOFqIT#bMvVZy^cj%+s9k?mPUbGE1aFB82FH`X{3YwbP*%e4byxY zWnla@&z6zB%RYGf4O91iEN4j*2VOS#El4{O4z4FKsf{O{5l1lz-9_3Xw9#3YT;QZ$ctooAcP3s=q`+ks6l$a}_tQ-WYd!K2ir4i~m_B+@pKdo4_r zm$FZcT!#>m75MiO1VD?vog%VeSz8;vn@abGV3q{7A8o-!6~l%M8q)!S_#keAMA`sD zRa@fHx&qdbwmiucafOrJmF{a^3+aLIKQAnI|H1X3up)#HVVd+np5_LB{E`QT{5r+h zSd3F7RA7W9Y_DkBPH6KP>T~WZ8UkM^Y}ZrjZLJ#E!_54>Pnz-Ev3?uLz)E`nB{j-X zN1~!B$FT}#WV+L_ap|#iXOB(#)uwsX)W+%?{j!K7wCBygfAur&qGMy9UuKC)_RMSu zN-BR1xQz%r?fi&FCR9I1mzCT&%6$Bf_D2PnrJ8d66u|ud)u&BJyUyEhroc`?SJd^tP)WA4UW<$9V;Q!1NR!`5NmqKSxqaAZiY43*KGIriHW3CTdMSL|76=?Sx?zL|ik6vHngW49Eac1>}n)0I1uQ|BsX?i<1)_nAEyOPO1=s0iWpO(j{8^L33T3=66|fyc0e}2U4t)-W zqQ8B4fB3Qabq}1!J1Dwg;ci4v7PbfKg%xqndloMB0ubUnal@m- zEWx&@+<7UT=i&ACJq^~6$ixVlVs9h}VkuNe!)x!qf(s9&3DoBzclp{ZOw3{Cu(4F} z`H&yAag851p4dy1emx?gv*o(i!CL3|zb*g)O{y%_*vpVFxXZ9YjeDn=H%A9`i?x3g zZ_tN~3A^LZC07RXw>f$&l~rEgrkpr9U}@|ktnvzEfa&cN^EvK$73@*LPbpOfJQcya z-3NQM2DBH>2aN-2b4^Y)FL(SE#Yf~LE;jfTK3%VV=LMoZUrWVLfk8o}h`8n?n#E{y z+^L{Pvw8Pnw`=<|VLQynk5<*wkFj|*LRLh$YmYzrleKd@AIMe}dNY zy2(Z*a$>*DdsI~eV(q1rQ?rE0Oi>vpr_9V;hiSM_d`=V|GG~Pls$hjD9t^ITN7(`~ zPx?wC51EnPjDbl-SsHY7({QQ?$xiS`tj}fLF0t1cb#7MAHP*1ES{o6H>zkR`msHtlrJV#&Le(U<+lf4e5UBA+Kg^LZkXE@HA@(NELb6LN}2uA zGOuRtVsG*6;J|xAWRgw;>^=`4o3_Q5lx+34L5qjU)L7B$Q~atD;>?x*70a2bCTPtq z=sK07%9$iD!5N|}NZ(5aM)x*Q3#rR|A!WSWiq@q{qMAUw&%67e4u8wfTF-oH^o38~ zx;Atw5=8C4Q(S17)UzrE{~4|l%NNrp!3VWg6C|H5^XDW|B_vV>5pjO6IkJz1gM1!{ zg-~MgB)KCa(YsJyX;V%ptFh~;ncDZ&DYJj3>CwfXR_6GdW92+VLZ){Dv@Y?h$tTz{ z65nc*LcLz<>&1L>xtoHAw=Q?0ZOn^jG&W=GBGi#q<$Lm0ac}bM;N5le50&$cvQlT6 zM^^WUfI4V{qE%cUwQP5Y#BX6}k$@04p4`Q=o-UxEUP@X*P1>`uvHbD1EiqvnJJp|kB%QjGn(TV4K)<))tg5z=0lKN^x>9V|5Pl7d zzq?^G1%eZh;q&!d@ZRCJkN;O$T{Rbw^!rWKY`Jkg9rW(cphQvdzgiGeRLC{1YwHR2 znZns@GDsD%2V=qinKyP6{O%DW^Ea>4g^~cwZ~dF?p5&6{B&7k~f8Jv)_G_w;a?zK{ zK|y9*D#2S^pu)FY6`R}EbdzN}dNkd3+5YBjMCW-tZPa#{hx0M#!%beHshX!Nt5qcW zm*<{<8F=iu80E*Xy{f#!m(7}ubDfuVJ~OsvMne*FYv7bAY|T5?m=0VO^{5+a%RHga z+Y>kA5g>ii8E`w0Y0j8il@OPF58(fk3BGSdE&wLO^JV@vw3+Iq3sY0r>eYVt671W0 zc?GgE!(lq6b>Ht3vSs#1R{`XMeZ zuC@8}Z{Z5lfXyFwz+<@CehPyX3oLFM(n}60w9&6+Q9XnsBC|luUp$_x#bjK_>EsR5 zJ$w@RwK^L4f|b=tkcXR#Yd_)e(BE_Z;WaS!K%s$U&Td{-eIKz5`0y0@?R3lqADYdN z&^^`>{n&XiV-S9Djk#WM^~7CMseJXpj$tlwH)sD2+&n#Tq7nNE5hoG1%UFYt^1SL& zy?MqJRk;Bdz@sc%O2rh*)h}Qxa&{aXrhlq&(f1?bq(tScC!~2dartazbq47%20-k8 zPho-%xsJ?%YW*MApp(s`gQM+}iSC{`env*~M8l~9e&3|BG(2CXi^<7JC_6*K{X?a! zDGM>D8ZRd+aeuTm@e1{*_aj1$>}+@EinaV)0uUbOCtmJ?mhY~t-6+pL`F)lm4!;S% zDI3*gnDT)s8OD6>mM;>fMVh}Rd(wTU7Ve`4vxpou)T4jerTsXEaK65Z(rjMW!iV{> zu6)s}wPiCa(c?S#fEg*|Azl{R@=zfgL}9}K81-I8P~8P}dj|D%zNcJ?vb|p>0hJK= z)N5m1Ht+wrwc4G5X8mfaia(iy!}oD}1l9Z~KSZ2HQfgFa-u3MwQ@bW>%|)0$_xJbo z%=!c3mTyX4UoHguy{JjrB=Hn}c<;qd$5)@wqs5h_jS+Kak-{2zkIMwIDB3t%$6oCM zw(RH{PeKp&d;m^S@X<;*bEFv)?t8g(JuhXpH5JqPb{X3FC{Gje8V24TJqqbO{Ia;8 zo~%4`JQp8T^-b_wtDKcz!V65dV(KHo2rqIwO>6 z76o-SO)8!Q=iMI*)Y8=4|GI*Pb;`vvk-(3u`BuLk43&{quU=%qsIx--C{j-AjiYK2 zkLYNDlH|vZz>eAHI@3kZ>_51WadE0n`&s){yF!Flz1ar1p>MuXK}S^^zz+~~hWDjR z_C=VA>U?0U(KUZWXFUvO-i4`bOF{V!Arj>;aztj$@cO+H#nZ6J zSL~5bR@cYAv{B)h_gBxM7Q%OiJ!ZLP7V57jsDN%?H^E8AL8qM~+tr-sBj2$d(KY}b z_wj0zF=FX$6*a`(%xvM?q~~T?2UnP?5o@ds@s#h*-N?tfBh`u_eiutM;pbW*Bvc-l z> z)O9LBM#9d;nt!B@MF@)VvS~KAL_yX>8in#tUn?(CjKi_rps_8yt{@Y!Wik+UymX5u zDiTjA){N)8vjJW2Vo86(E;5uJ#cMlU7_g$S>La@>BkT*qd zQs_4}U%dh*U;@e8C_$+Gw5b#Bf$2QoRs0xnw!!%EX4SLf>gYM<;y1@_Gtm5QtI88T zt~|>8!pOf#LzE}LU`_a4J+0%UC0<-P;^u|7roYDU#P;4;KIT^R_IJZv{@+eaHA6MB z-_mN@eNIF~^a<%Iy7^u#wQ}%n$xdHWl_KA6KpS-wJ)V>q^&7$W=P8tauqkx+l1}{o zRiBGq_QaH*WspkJat0Z<#Lwd+Xno{tBE2R-m+*JcC|gdjZXHKlI7@C>u8};O5*@E9 z9-%ZnD1GZghGQFHb~XY5-rEj<7$@{RH6D{M;3CH5`xK0a{2&yPq+~K4{xta0d`1;Q z*p*uZF#fn{zp$~2i^U=F2}j;eP>WZtauVrlo~`f1d9rcDlqt8(+8c6wADRE4QGta2_WbeE-8><>q-WMh<=uN4?nErAt{%czSSUg8~^_AIR$aQbPoXM`4sF&gkd;1I4}xI7b`tf22XasdEG8G zFN7WeW$|^yz(|7EUpA4goW;O)C1+NSz?Z%E<`oQkrj|PDsxs%X1{}$D9GB=}lfQ0F znT-Fr_!!mmDHa-aTn`cvi}t4`*Q2JR0GqB|9){*b(W8AhgFi$e#6JmF`U}G$B6q;H zV884#IR_roT0wr;@%Fb5)`p<;iXsMJ*a3VIjPxWFqYXiW@oLz&o%zVS9OYj1-^mgx zvBQs=<{>fd3Zkn)sj<>@rjaj7BS9dzjR$FUBfigH>Se3w-|hDj3!lBN?)*FMYzY%Z z@@bS(e>-I+LNruZSX7_19>3hxno=h$lo9oy7zANQtvCm|<_;e-@R&dZ?g#NjzmWCF zkn$M2=88)Tze!g)X9TvOL!?)$C!#=zeLcs2s$`zomayce@M8X+=v}5NXOX9%m|8mh z$!Yb~m&zePDW_=`LyJ1xff>7eNbvB47JRVW!dI+i;*rb+rqVSc{I>S?CQ9NW=WA5X zjyA7^UY&5c1rS69<1E4W2r}-pPb)O_YEw^P&1hSB_Yg;%Qb`V3MdJD&c_;9v4C8uR zE>&P6!xoBCpdd4Yy_0-sTetEv*+d8ilQ$@!b`l_nijQ}ed4O1dL|yOWqtGwR%v;=A z>75sA`Kv`9RJ&MLEgP1M(6e_mBOF3!eVi9t%`=Lp0l2|+Tp+p9SrR-c+c+sbuN*#H z*gA`qc?TKg1YYrIpiq`R^_~JI4KH;ttIQNEM<|RWa+VXl_22&nW-rxeMEYT zN!0l-!o2(dGI(qmJl5WI!AI5b;b2M`(__jp5ADa+a3#p)IbmQKhN$r;Jq9{!b8pg8JaH7q270QjC)x_N?n+AhYMThc69p|6tQ{u z{a!h`RF$UhKRV5WIH%be=u42#vzRNkpZsu@HiV96@H;*+>1FvRSGTCscH4(FcxE1U zt5{nxFZRJ4fEUWQwm%DS^4Cl>&wb3`*d?JCazFbU0`m=3?K zlbMmpk5@-3H)mQZe|KV0302G2?MM$<#>}upR|L3b?B(v46OQ)damCXGg9!id;Ervx z70^3!wJGnr^oFRkFCH2Z^3F>0RyD3xm-od-rPhkUn(J9%^rMhQc$83=v|u1*62s~W z2+hasn!~594aGiJPV2Kd7z^?z2bV&>RIsGDY7z{rDAB@;g%I#B z2;}j;V^Xw+1TDx^nxH%TE7XJk-`jHFF==>Ng9$rY9Q)Ga!UA$@o|E3GpKh3=K-*sT zaNLMJW{$IIdC_rub9uY(gqv>(z>PQ=T!_cEl6Bl0*mqL7O<=OKW>o)!!9@676c3`6 z0F%^a?oSd>mz3V<6IgoS-qv@*>R4$T`}mq-obg)$N=0m#p{_Lq<)(vr8nz) zoc)1Yd(M-dx;mpudKx0dF=4`)nT&!-t|_)|>O}gNxyitYIqq89&L8F+1~au#qtRCD z`lIUD_y}HH9Lc?iG5k|WQ?Egir;4Y?`zkyBqPG;!P6V;OC3KR(D{rtUpUq3J0fR9> z@eOH7-f+^;Mb(&wBf9jEV9=s=Uq&5u;h%481$CZ55(W$A)#_u#(^)nIX4d!@ti~#; z1nRtP1+1f$V$-$%FehZ4*Ehg`BJ}m4Tz8>=L2tj5xKHDHtX%4{alA9R zggy&aL9sTf3Xt(CJ>kPlbd#}$V60jF-4^7gM86Uxy-Z__%4KE*@zjCm^%6#N>&Mv3 zg7&XhSCjmOjo<}^j>EG1l8M6=En*o7C`Px{iRYeK{Qy1geC?{Z`nkH95r1{} z6Z*1z#Glp^#~`^mz0A2O@Al4@T(*fuUC1W2WbuA+%4+Wpiq9UXohj<~`979m?TZF= zS)(Rl*1hqDQ=eCiLEz$2B_Dsw)y??FI^q__MvY2!g7R^RGs920OJE7VxguxX6bw~q zwJV+045hd2hbuYwB_)5d(Mr(1nN z94ycZeEKu>o<95d5t|Z<7R4=JC6aSLk|HLg>SPWRb~w=^`$Q>c>T1t+uPOvP8(Us}hc5SW#@E9H|MP=BR1>mX?*A5g zRrVZygHF2C=;&yhHbo^Rj~vX=a_uvmXFyMK_)$n05c7QmRJZ^JK4Fp(NnH+5$^F|b z#lIjO^L|p7BP;EO<+0GVKQdt$9Qoev(9oBXWr~S^A()W!?eqPK3B3gyh&=<0K%>zj zPtMb0K+rO7m72MNnMsHfn04bZfA>l0-JFnE6kYb;1&Kbc5{XJ@O=HlXlUy_PCmK!L zb7frolZ7qdtSqoG1FY24l>WoWF(4Bi9@R_gQZ20*EfC?fg{krUfbG0bj4$FpKz_L+ zY*D^K@Ovd5Kk!>pks5FD3}_8BhdkL%(V?~-a*T~3HZ!e-b4tP9i-^930rxps{m@a$4fWO=gE8N5vYp$$@C6@fW@L6rv19W z8a0|dhGecNh1vX}OO@-Dv5PN50Z!!vRn*nd%afCJ&--n9?+zF~gwFfR27hj$G_X=` z>vX&G!5{bP65eM^V@J+ansMQdo1y8-SnZCMg?VF6EvLVnn2GnJJw`MUe`3V+C;R$l zTpQ1Bs5)Np-7cwIS#-{khXElM_G~3^b5g2z@xc%O@Czha5v3X|ZeB#6N0Ns{K@+0E ziv`isB&_8*)ICLvvR=;+E#~k^fx<8e6{(|{eghtBcl+<+6=vnIfas;@1@4DbkNZ-p zbTE7^WX6}|S=4Kjnwl9|cwH$ey@G?i}5=6sDuK*)=)E@oJ)L;^;KGZVu4 z(wgSnC;fbK=>AE!szUs80aQoD%Lehsi6vE=$K4Y^q;mW$$#W;-G7hLlnu!*K=}aE& zw#(W}(%`Ysh(!Yvya1SRVWa7`gyWVG-F+c|fvF#KxU%9Yb$<2s(|>;odp(wpmnF_g zE8jZA`mHkeqU;Ed(7F%c`LvcnzaIzBi>aRxt)m-f8t@lNwX`2JPUc7PuVIjs=VOa3`;?I}{5_!5Hl_>GZL&w4^_a`{=PR}D zZBau4E)YzESHdvAk)F5AS}2wiAJw0hF+TOaiWSA}72^W7>b4fE$}oX6Db`{d`GK*>$eGb*;)gX@9cN?j25+y`8Q56nqB#1qgOx5#YHM|B zC5P6D2hREtebC9jN|r~#mrFZw&2unwUE~%S=>Xk>feCNW=Q+*tqm3FBpyBb6kE{_? zvzt%%eqM}E%Dej6FTE>RmJJ)f_Wk5Zfj2!ATI>H^=L7wnYvt?vy!7zbZ$eqM3W3(`Axn@kS~xvX+*;q`{v=cHBrZC4DKu9^bO z&%;et)XzlKn(hzk% zw(R<+mhr{4d`@-v`z$S-ed4?RCK1wZNS7Q!yiJzW3E`3_;)>$1#^R@Nw%Rl;;_BKL zo!g*9^8C6SL~-#C0p@N~R3x)d35%-{k9F4~n10pRkA~1AGOSg2VG}0nScMsj2(vs5B(hULv(#;^<9ryg+ zyYA(GSZg!;oZ0*Pi3c>X`c*DxwY&wfz*%+n2V)13vFo9BZ=jD%Yxo+Cj2DdFyCu& zwJ(F+sR`XhP!w{Ys1V7$MPf`iyc+>f5XcW}&)3al17C!{PV?C}WiB=;?_i4QYwx!Q zSs#czuLTiLl5^s}|&<7vXT=5Vw z!F~*f ztBr3GI{!+>E7;XA*KP7@atQC%S+i-XB=Rcvm-$ac0R1YTPL0jY?hxv92jFf%=ay#s z{dg15wx!>M7i;w1D?RMShC~j4w6(q_do>m{t{vl#lRQZig!q*sgl>#w|6yfDICxlF z*nQ#~Fj+6QhLoB*7;LvDsayzuREU~X)SnhQ(F(?3X)7Q%JQUUf>pSzIAO+vk}Cihih!DCH2=ZY z7NsMU76gS$pR-x3z3g7KMJ>L60``rK+ zjfs`}ZMNq!TcVX#ZQ>HI5tmX%DHQ3mnDn7(?_fU{4^)t8#(O%@kFbs;r|1^|3qma- zogcAt%vFAKRiYGj#T^kKY*c8?a<%wI;=cjZD4t>N^vzsQh0C5}L1+ zweCl(f0DWC+%}dK)5K_RIy5ahG+8!wcKX%pP#z!G!2K=iuYEnvwK{<>cdcDsS1UklM3A@aw?LWpm#1BcXCgoNPs4G7{oXPGStANkjpa&4{;bF9pEI zgFp+Vgygc#Ja;r%XmN3${NEESA=7C4O;8s(XC>Z-Z`1o9fA3mT)iV`c6U#Iri%qB| zTzBMy*=;!Mv*<8Zx{hk z5E&;SKKO*)NCv5on;8F{ss>6s5mrVz0U1;f5r@%>5owL4xiNf?d^M*T9BSpP9^n3- zEvNI>(!-)yI0=aNr+~r#^8!eM<4d@;6v@jxp%FbgjhlhCQ>L=#Iz@W*(rIJ$(H9Ba z3pyX&p2}xzE{~ss zE03TMq~ddz991(V8tTKwj0c*wqD8;r78|2VNk~gOW0)ujNuRA)EB(<>)TBRVAt!(( zPe*>BPR!z&$kB?tI&@oYcYBWRd)l+}5)LF(jFghe2{p;fU$((lH>kRD^LaY!i|qKj zvL4`kbh=qWOm>{^GG-bTgaD~DXf9`Eacj2kW(d+ZeLkjQF5h!(&dC&rC1D#`ME=#;Z<`2 z)Srt+J0hLkGT7eNI-hGtN}>JQW!X~JS8R02c%R$<*58*jkY$M)m-@cAQjpC=4Xo32 z(0w;+Q)iGJZ!t67oJKw98NKdw|G9weXo_cSwdb#0VSCgo=T% zr<4LkUSWP2m>WT*u?1}%>$4ouCg~tzBu=xF-esRqn+EPl&cb{GZ7%y(HG0B+Us_fK zF%;i`*Z{Dai-#2J9~{OnA~Dt(8H`KqUe~t(3nEvfvy`>tQ4shL-0lIRyx;k4YHs`E zc)>_2qJ|GafgdNqO%R_@?SXa<*oJrL?R|fNM>W6EFjs$Y4uAUw$~6If#r>8REz0a{ zg==&jxy%xp4~?OCRQ%hcK;_y?i&f^2p@bg~KuvA*%*9QSK78-Zaw2;9ecnqZhD5Ol zE`N%_WwJnn&+*b-I_H_kQc{*91;{ME*PLMhDBAX$e_b1p1JAE1g>SM~AB6=T9_AD6 z(=#45$7nuq^puq))wA*6lqqk|Si12?z5OF)*E(;n;6A^^F9e*b#YTs~pghdWbx)Cj zT}g(N#2$&r8rKyrQjB27|GO1KFOUKZ7aREz)*1fUc$e(`c*1ulK}LQ8I~)7k>ys?n z4XN6#WAwS@Tj!sYyPOQ?G~5Vn#3tUd^QE*`e8#HZ~c2IUzBi8MKloDJs;+ z_?<#)jQYAM(jkCVLAO7?3kCFMoORfP%@}05XOH_SEtXn>3pIUU;rw>19evB8*{*e4 zx0k#4uQK|sv?holWz1cnAmLkG*{LR70|QU|XCgzFQ)Y=Fenr#0eXPDeguOy>n8O;f z?2ae9Yx~om*jQPMtr?53d*aj&?tOWRtB778kn5^#&36tR{$6fQdfpS9(uOF zc==up^9%6_BxL2j_v)8CU-Bh!^+Mn8yuNMp5)qR8K$B#$N~u6?_fZT2IfZpTzF%S;B$s302b zK>5h-F73#g-p3umY(>vv*M7(2hsN<$uBToy~z6 zScdh+TE4GhXZUYt+uxjz_S|5{r|tPf16~=o&l20jqTk>sh%#Vm;pkhmI4KBl{>p#5 zELWK$VRm^C4=(S5|5HI>KBDmlLLY{JwUS&+-vFrehZ%ILBPy!grRL|g^*1O_<-n%B z*;Fno0}wnxGd=f@4%63Y3R(=JN4PEdc5jsLz^m~ zx}{)K@N?T2_v<6RqV{6J=Ytx<7|mry0ubNTh9-#72^iT+^ad43AZHqq)S+zv*Z<-U zOdo$;T;NOG2T17_q4maixL0aC-R&MGy%7-Haw55-d3;P&bB^} z05HR02ZRRmfSVrz9gA~ksw#!$b&jx?7OC$=*MP`(a z9eSG6SN|wcV=b(JpZxD$MatvjLri|H{j6LlD{FIx&A~}B7VhQ8;8yq)UMgUQIE_mG z@6bevXX9q+&`>@IL42v@?^$D6>z(IBWKy*pOy6;QJx)b_aWct>SNIaiQga0O{9k)< zyp*HH->5FTU>>k)-&Zk$^u8U{#SQ!bG{+R@7=YD^%daHGBatgwuv_Xe%72w8FE#>^ zN71dSa++dG_4?fTXwP4r``*`kjZqwq+xAUDR07X@Q2Sec`+H|r+=8T^Uz4wM5?G_z zfUoKD{(>C3_)FjAiXi8Fz=xyEQM5TzQ~Y&>e&kDy0bitbUF#x?^8HPBvy{%kefxy( z~v*Sf_+*N|s*-tNfANFW3%k4XcdOb|=k z+ZNN@%76t3r~nx{HCb%5ygJ(+0e*&Cy<%5ZK4$ye%p*FmB8%IFyrfEgT1micQi9%fzlnD~<2^K475bD1(X z>*v}hZx`5Ggq`L2_{Q!oLlL*)v`~B603&E^e|XdsW|pfK-)K)fV$r0RV`wj~zPT+e zNm!NmhN6Zbo)k*%?;lR6C?$CZ44=8qfj1_yAeakQ+Ale}Lc@vlGLDg?Fv*ip&9P`9Ik>TWv5$D-Bkr{O{gr*iLp{rQSfaiR9@UD-Un5?7uD<0oXdW~mooz(^L=IJmkC3&gA&i{Buc!Z})!kfAu4CUgmYaSg#3?%2GIpm^K31 z+%!uA&&O5j)6#TLaetV~yyFryg+e8`B4HfP%PcA7nx*7O5|WNW+r3=wDmW3cN*SE5 z$_eqYM{CK(FhxZ}T^${{KRu7zcux$<27~e)6=lV~Mqvlzs_oPHlBd}5%GoPpaPTOD(#lpJ%*Jl$C*R>RF&ZS_s@N~&r2>p$iq1L_{)sZXv=L% znIcu|6k*X{BKX7M&PMkdfcawL{GqJuqt`hW^>)_W{^d}%*ZyNqOVz5o|2GHi$i^y+ z^{(pG=MzNd-P$DiwZrR*Y`4@*L&G_`2=h@pz5W_@XUCcO`Erq`R=P!@d7dY?B2t<$Y(j05CA;{rTt^pi3~rosUba17ZqoK(bpBqELj7JZvIaP4#@m zIfP5oW*A2OZL`m`OH;HsE25@nj@+9TkI|+SgE2)t2OS$$R93b(f3bl~lZKHb-itfQ zI`eC&n$a954T9JA6u(6~${%*#iQxR6F9CNhN-rCe8ARqu@S@dn% zZ=%!V4MxH^L@ zXU1m2Ay0B;BuUDS^4%&4Sv*%sjHeL(&@UGC% zn?pIYzeR}RR50S&G`OjyBQE@a&I#j4A791n#$eWlj4uoVw%Tg#u zGh}^2&464;^8i5w6_aP)aQC8uNRU)9#kDkoP`pi*!j;>tXm{k*cGa-N@$Yk9|0FRz zDabbuW*`tF=%L2GfRksYl6+svXGY3p{xV-_(RVv^u{D$^_K!t*uCX&$* zS;U~HYsBHQJh1j!Mg@=R*v`)3eMFsW)@g=Mo59~mrs#{8lk=+j^oN4E*j)_z1J zRpT7gjU0?NzTSS#QTz+*&-mtY>PMg3{^*IvOCvwPN3L(73wV=uc6UoZ3szqCMG~va z8_uyT&PLK&R$fAi-@!G2fGvOJ<%x^!;mIp1iN*ThPz;H!HF2t-XgS;LUIL2V`uP-|2s9z@E0>wK?7U^1Kw5Y3$qLB5ZC>VD**=T*p%Ymf)UQt@8JnbE! zrkZ#f335r#?P$_lCn8d5rbI-QQK!2#IcVp6lTcvJEuc?NO&W=vJ{-B@&`d$zLe!E+ zf5q#E*Y*0*@LlsrYPHYhRPxN2^Mbi*nu-K=h??ghLqc#KQfLoLpd%T2470zGq(5?R z()iH@SJpaLH%k4iMBWX%fK+c~C5t64#jI8tbfjeZ9}pIHa#cW{t2QcOtky0m)KuN_ zS^T$TuA4&s{-f?Rwa=p8#Y$@&U+|A+mvyUSOzRMgQo?*43$F6YsbK1GRRU?$gs3U0 z_~>EPk5>I#;>Y(8wP2bm>2IJ{n!0~nw1^5d&96AvQSup(C8_a6#RzHDq`6F;V!~n? z^WtbhvS~W=Lh76kVj3XYd_E8g64YN(nnq4e7Mu)X)}<+<3CMwqPX1^|ED|Mi^zW*p z3r54`kz4p_-;uP}P=nwz;@h?V2(a_LDeo5JyQoRuL_7Zy9o{VssXTY8KX7@EZyXQC z2<>GAOEv#aecG-!%3}7x(?gP5b@iPOd_i1osIm~~Bty?t42`b*$fRLH`F>?ygil4Q z3Ff{g`$y)tKl<2|4%f1fw)W-F@GisU*m!oV>yf>}3ys30DLs*Q8;Ts#mL@wS>2Uu< zvB3sUy3FUW-33d|bcOympxtaLva|EsHs+BwhUhV(k>dT9U($?;qglR$AW@%K}_>L&|=BO`)xg!n*kh_C_-|PVnM2ETm$OuaEo^K*{`2%s4Z2T zyRQ{^g;}=V3TNQNY*U^RQ+|}Of-m%#Lzf^l}FL|abTR=)#jRAQ_T`U4yH6p5ew7bN2h&m1| z7up-um2->ziLd8V06K#$+{&FCXJc<>W`?;gy|HvGZOaf@D@pd!(Xl z|BL39R0=EvjHT+m*IKo&K`ssv)c|9Ie{}HI=%!fk$VbuiC;1bG>vVsLsRkK0K#M?m zhCJL+hN=+0zBB@^a}4?(k^Vp}Fvwp{lCR$%Uiu0~S0sv*56-vPLxFi?(MYO@Vg#4w z&x+|6BoSzU{0TUb#Zi*p%Jo262Fryev}e(dJ&bn-!_x!ANTdkKV>pl_IWf|E*V>Lz z#5V{{FE}K_h4^05tcDIO5Rh-sN_~vcrVr7hC+13SioDwBFL(MHC*5$h82$P9`0zyD zqT0bSRyo5PG<;*C zklw7oWAzK4xx!uN%Cm>mofqD>BSw@u-RtWnQ9+HYV~BI+5zD%Hpqp=hf#@yhW@~@a ze6p!yA8P#G5S9CyO2~kMBAIT{AloVvsU*!COMwiX%eZpPTe!Nc?E2^^=w7?Zp!w_i zl(OI5w3pkFtu4o?w{R}iSi@}Mq`QxW=f={*mU)d1_J+U7CrQ{lbCfF|5qGR@j~s+Y z%Ays{OCr|Y(ZC_m-9pvEQiXuN zT(e5ikjUaAX$UKA0BsaACIJM=nn28SFoMEA=-lw+KebBe1J8Fh!&c8nXJGpNqf#*i zLNHMEc~U0{1f~GUUi=^o>lv@64&U+Cug@z5%Ev-!Y+jmCDw!1(FV#|~o=!&@-jPLP zoA8$j&e2iJfFrn;2WD?dZ~V!V%_y1-!wqlmNh+S%?cQlV{dv_z^_oK1^W?w@fX@ zqOEqkEC_x$QXe`UZUX2nJ~hoZH7pY~M2{gGc$DI$GzMm&NIJQiDK<%g91X5EWl4#T zk{B8Y4L@Eq_>xfe&E(o{Oa>eR9x>$(ZpY5>5q?)!z&wF!8b$Hai>ig^!mzfn`popF z2)=57S{@t{M{D}7vYuxJz+hS9FtEDsq=~8lLxN9~H&G_XTO8W`W{iyxs!jvG+?4DxTOip-aVMGtI# zd;Sv!U%)PY&mm1s2-4TGc;~P~FI?1Ck%f2Mc23!T(LC0W+`=3rar`Jsgo2L98sa+k z$w4&oTpz8%&iAgL>sIeC5|shD@mS=ikDrT61Le%Xz`*%!eucFB_cmsKM+nl-wQ$); zhx?=SXX7pIub1Iw8l_PzGA^pxlYM;;=6=tPuI^iA?v}h4^{>VINgxE$kg4In3Nqnv z<99Gx#Wg(_$vC@bhr8 z?ZlXp(p7AXbfTQDHmj64VN6_LAv}xytvGG|t+xqu92e2#uq>R@#AKU!Yu*rU-NC1O z%E1Oav35Yx-;_U>CBtGEMw3s690%rxAd7`aXmJrxgHV34zafVola4!vP9Wnk?Avf> zkM6u6GO;Yu$l0%~tlTlTZZO%F(VS({3IZEE1CO(QI0Q}f=7~bqibo>0|RLMt{@IM8XJlA&px4Zof zA~&hL99*#?Ki@CTKi>rD1Jx;rtDS~-`mdrA(mC?jv1Cn^IDg|=Uah>u&xas$I$u;h zmn3}3^?DM3;)YN)=&`2W--i`UGEAILT5+c`E{(6pFlCWaBR#C@7j={&YidtNX>C8_7>3X4K*tNcc&_wD zkCf;Lr>xXXQ|{b~gVz-KT7}8fIPXk`%66;L;EaK6qv6c0#kP84 z?ye;8(2Nhrn6mE-k9~4Qq4%O~?d_MhY~D``(Zq-`(@%(xgwjd7`g3rC@hF^plKeQL z6bvX0IDag1;`!##4Ip@WA9ZhQcesbk6|n5hG|bnMR#zLfxz`-FuD$-0J}Xc?j0S~4 zMG5hdY3OK>lNdlz&>lW)kjkGQcwVk0x$D@u_>^(l7MiiK2popMu5GRL{=J2dmwcXx zHf@aA(j^;09dhMK8~f2y@5b|g%Q8*Jqn2DCP*TFh>9|?Msqyj2-c?`hs&Do1+3;T= zAB@aCN|DUa$tyD7?#IRvySG4+Y>__ei4i0R!^QDTT4zDV$cy8&Xa2X++|_`ZNFvDs zc`1WPCIJ5igJt=m*iZvf>6fP!zt9#WlkN}Jk_Pg8kF_1xT!DVN{X!t|56=ilBTRsQ(S}MTeX%h0) zgEC4TAJ0%Z7?~n%G*T@L38geOEk6E{vX<55hNz1ejpM~yqKA!bfPJhi6$iqjTwy$l zFWV+$KUs-Sn{27_+bFeMde>(t1GjhfD#q1@O4|p!^-Y5f_j#WEM$g-5UWXO;%Md)_ z728xV8LsH7>4GqqZ(OzwWR!u>Q3+mC_C0Ij58!`>`l&PLb5%-oiN}vOR3h4$i^QSd zu0=hyw1Aeh_eJKMFF=ZOOlI-MHFgE;D5PDgS{I7?#L0~_>nkgF!y0KV9gkO;$F%x( zx%#n~#r>{^r&_(c7|VS)IJNV0Y2(!A z38}F#Otvsg0jjb;(bF5wc@Sewg>vVe#iMpH*he>_NlD(85*SMs)XlV!A-0Ey_2gkR zDh{OKQ5KYKS&1`h7C;$hx2mXGfl&A!V$Bp-%gw$7O#su{Q7A(eVmwUypo-Et4>fn;|5`(MxEgcGM$=LpRgw7j@Dc z)9TGptSfG8nbX&&KH%53ldG2@$cbkNAPp!``5}u zVFMHebg0ZBV+s4IVIQW3^=unvhyRq5k6%uD6u5ls^__<&B+`4OB%OD?rQE*ddKL~K zGz%WgN)Y5fg|lq1hZIitw=$j?NMa~m-_aIV{Zohcr~Se4@iN|tk&uTbe9cCJ+GH;> zbIme<{YzZEik2IFlCv?7O z$Pd7{`%Wt#!*;!JkYRKP2{=t3p_Fce4s%%>yo*<{AgSf{>;uQsnKu%}Fa}aQHBRKG zz%}u}k|AG^e*~db5P{EM9sOJF&dV79llIH&*|zg`rfl^2@%s4+2=_KHO|;)0g`pEq zbUy8Uus<=6aBUuJ7#<`mf2+3YLIZ|QNxvS8E%U_A=JYu29wXP+uI@NL0y44(mC;TD ze5w(H?m{aI3mFv^qloiHdvw*UIQR5m{^H%Nw=crurSf}0n1%$7(0D@qK5T4>kJQ*) z1#N@0d{V)`2vAB2Ntw%bJzwy{P?>vHDa{nRJ#yXvl`bc+{!$im4}RDS;^pz99+Kr~ z?T-)L#76r1nLxDuxXW0NX3pmZ^MTz}eP0^rzcbq4X-Au>-%`+~>KT zUzXhen(x<@{bpaZ-R+f2sV;flwKPE|K}Nnk+AlAn#|Y3 zri70qC}$n}(+%?pNV47|MZ1U^`>4C$eA8278x{6DgD{YTv8iRWu8binD`Q0+nLr83 z6F|T?NNB-AH-}9YoKOh4B~Fc$wav60p=KDRPT+HtrIFrQUyOLs)6pSLD=Nnf`=Wq} z`6bR6$=V`(5aQ2h7X!vpA!z-30Y$-Nh{Ohw5P+;`|M0N~S1_1G!7xEgMPcrjzrGK0 ziqg_rI6o4KZ923L78e{I9*$^NWr=jY*ELL6p!3ib*G0i#N2Y-wakUE9FTM7}7?e{< z9O4|V2T7VpgQQ9s@CSA&4_~toy_jPmYQ=+_$$!V|0B+?EYnGdfF$F4X2AK;xS_lta zQ7ter{+aA=l)GNLNbjV@T3Ogz6VMN>*n!PUXL10^S1?&xHR9^pJuq^6I#iG?6PD}i zeXuY;IT=wYLCi@lnKc&kY0O(F!}p)|O6gI|*_ZT|n53Fue3~EB`Od6tjA-mUBM~+{ zf;RU`-;M4Vg_djFGlrZ!E#YY|x#-0_78uzxxYcqj7#t558oo)@cXT|}0ePUIMEXTy z*7-Jr#^rUp4mZAO+QieJ846~Lp(LoFU?gRA^yFDvTU6_JMx&nu@nkmtUG;r1x;-PG z0B+k&s}D*awK@9fm0ho|bF)PJI;!@UY(n~e5X76aU&$1)N5lc8sRInX-J=I)dusV@ zqCZ4Rveu^Y(n3jks1w9jxtyzB!PXcs%}=CbvXaz>t<0ikih)F&n617>GyI~;zBP^7 zu-WN$!8w)Hs5Nc-%F0!U55kAL;zdB=RB9Fl7mLry9vvuW@`A(MXz!@S~ON`k0~zz0Op;(wr^ zLFVpmZ0bVH8yE=9`gNSzav&PONBX z_`S3TK5VSnBU+WU^4}Q_0%NUZD^-Iczl~$+B)EN`;)Zcps^$@r!nV_1Ca^@>2@Q?p zGmkVhG`t{YwX3LPOu9X_yFML%Tt*)mxQ`WXc0M^#t+RU{33JXSp1dVx&BtTG&|%r^ zj*>TGf}Zc)SkAHf#9T|+tV)3US3&G_|y#p-2@ z@ZI&Edkfu<%}%JQYG5`wQw5M@Vf}33<|+aMo8Ah}c(s1PDXeSH8CmzTpAdO=O1 zgR4$Pm>T~Qe_m+h+yJ)S;(L+7?R824xGOMp{*6~j{pyI zz^{|#yS0F*p$hTGtrPZg+reqP)rXFd3IwWrN}B4-5<}T4`g536g(H zjwe;in(_{A>IV(lQt-D!glK64YefE(ag-7neyP5IId=317|p+Y29P1AXs%H+w> zC4MS#_WnN}RqrIudZsBLr2I~2S!Fu+TV@dfZy2FPSVdnQ5?^3qVpGRU1(BeX> z4q(R!R0E0uJUMwb@q-ANm|Wg-3NYw9KpoLAIB?oMf{FZDc$V-I&^UNNrHM1^}5zuMWcj9{wm(O}*whrCLmCBy z!XPD@_Kin6eKex5YTs~9CIH}ZoQ zhzI7gW3VGxqP-%?E08(|61MHPSBv5R$LOuT7Epx5?i5vHo$;yOj@=nBM9qI)xew^I zstn5=VUuLQNnX+O5`f(_({*uaxrG8})4E?M_3!#gY+sU&8M<4xchuC>Jm1Lars&y9 z_0oL(=JFTQmTzXPNQ@f{!tlOpOH^-YM&_2cEh5YcJ&8~gr%jO6(FrC@gov8T!EnaB zC5I|40!_S`ONevxRF0R~ujrwQrLv)#PGHr&?^BK{w*!P`V5lS=v@!}C>wTc?Mb~)H z>E6Ol(Yby(leyir8@>H>vv1NXJzHC@%69<-_=H2Kzq|^*0!t#I3AG?rRh5Ua*{WbQ z)X0a+F$ObFM3(8feqd)#P%_evfc(l^@_XPLQP9#br*@2>5eGpvNjBr^XDoDyEaG2! z9(%1;+GU{-Oz|+Cd27rRr~-=Y#90|nKjbBPV=0$yL9EX-)shFFAm386+x6t*edHs` z(Y?Yyf`9$P%{}v{Cda8T?!hlf|Joe8pSP(Vd8<3mY;-l;R{V~$sUDY~x;{=bi#r0N zmEl_EdB#RiCg?`%2 zL*?ivDX18Si_+@a;-3zPJWU!s+!{GJIQVWe8F>JSEND;lWB=zI3Mv+*oy5zr+XDs( z0r#`rAZ20Q+?a{a+2ooQ;$OqLiWJhBiuTDQFh+K0i_8gaqN@yrJnFr^y8o=HIrZv% zZl!9wUjZ8BZ*L}*R0&&SDQ8{UIdisnK3GX$5U7)tMuH?M7jTdR`OHa*OB4gAV_K}l z2y9(WXrVV6nF$1(b(ArA9EHhhBzyp-sn0Z?{LmX61kkfuzM7cXo-fVrxC>afT6~p* zl@25Wrkh=>zh~F&(|T`A3mBhE4LvpUd#)r|; zlEMSwd9)g`gJh0Dwo*<4Car{^S4sFES>FNgK4fO`=kqna3wFbI+e zr!9ma1GXK`!a*yGBo6rkwW}H44#$6Ym%J-C8+Vaxzs#{|emPBE8gk_LH{@{{hmK2N z_=Dxerh`E4ezko3{JN|efQkehP`u}^L2=0;9P>Zc@Z^;zDp9`8mek5Tew`4SrW;YT ztdJ#hJ*{J|^XM1F&W{_e4K725?&=@4j0=iNR*I@hTHo!MPcp~EWC%9-OatxPmW^Ai z@^HgxUd0cf1cCt&$1ce$nG05|72ymyhn}B0;=9qFM?2@8Pvo60n<3<}uC7mai++!@ zc)r|=i%byaZ`U1PUL>X$+qc9K<=DTgHQR2_9kXn0ZSAva^K|Ih(T(cJQ5YyMCr32- z0gA5Hhn!0k$tiXMmBJ{fZ8WJb0|wkQNmy9ev;O`jOyptRobz^rxbvsgLRhS8=T$?s zeRk&`H{lOLRW{j(E`M#&E?fzL&`SeUO zWNCdeacHOJd4-dIPu8JbFSZMv=kz@^|ZNy zB71QGxLz{37>c+(_Dxz{@UA|M4-E}DHP_E(REfA9Q9$)<_cQ8egB;e83h@*sjo8JECdG2HD*oHF9d-rKN{B(>8%KoWGG zkL}h@V;)M2Y>q@Nckz$gF&o3q5O)GhCs~9+9TF#Q&@YNfxbbfc$_%B=gD06PM#$pB zig5BFs&lNQ{$TuY%$LZ>a5$8JHf50c7c7KO&0WBVuAqK)A)m|%9Qr^7f^;QGio-_< zWf@GSa@)?=A7hXAgt$CXVx?!Sl2WDSy!5w1Sd!F!l_oKsLz%FkwYnS`O8p47nA~zP zd`Q5g@e9ZIAW=gkh$HfG0O2)`1zHqRkr;_uAcRH=6iAro=HL;y^sP|ALK;C2oQiL& z)(2z~#CNl7$>v;24s{8LzHo3aJI%ZLH2qrhS?p!CqLGkBN-5k|b#eCwOSY)MOC?{( zC~&azepoq58lPN`0Jk{ zY4mLEWtqSMy+|S7831mG@7YeK+wscd^6Gt1a>GpLO}|n5#n}k2k>@sWE@|<;m5)cD zqkDO13VU8ywbXv=zuXMFc35s-bX~qgR98mH!1@7SPJQhHPzqA>8{9mW1PG`^akb#x zg(DzZvl1;mED?{$#ypY;3Hhs{MLa&n${(9@6yJr359g%fO@b4kg4#8ujF#-^wSf z*l*R&T6p6pR4l@eTaSKsyx!M~&&MJqzM@!i@#E2_x>fOflEyXiT+Y+ngnVD^|L~w0 z>7j_z2=u~B)658^p|(*|Wd7~fL4K{Xg$>dHNov^$Fm=Mlni5JN1{h+>UXfraubc@E z8jFEJ2r$1-Z-elW2pzKMjX_YCyFZjiWxFT@G%#8mc|38J9d6QUkQ1R&$?M+?P^9F~ z`6yf9e8=C?X>BTcFOc(*{UPFx0qN0GdgbdIOe0R5=?p~zb6k-emfU1GRrMaKdYNW2tB={H+WT5P%) z3KCKM#AK=XbnGrk!dfj-Ie`8OuC;tz;z$1;J08*zDeNf!3&gns#CXU%A8(Bw6Jn(Nvw zhCfFY+bO&hH#JcgYdGsh7~RWAnWK1{ONx;$9if0oq@**;Mw^?;LVf=kc^Ca_J^VmCz*L^t!Z=)Oo65sD+M z+DA{sE=uwh5adlqO{lVMsoHOQX`YF&(6wxCzFM+?Ldly=2W8GK*;v-+rLdGUg+rav{ag#Q=uI}zPi03&YYK959`EE=}&h`%s z-&N4^iN&CUm7240q6u4`^w5ky#y!Mpe`Euv`gp$h_rk4`8sza7hdffgC}jDEgh@J^ z#~??^eQF#WVV;PZqK5S|z|z`~V<^-&_Vkq$0B~p*KX2RTEa#Xv7K|gq5OFuoay5hUVWGm4o1Zvh zFOdd#g7dy!f1a106#f#N96psRd(GU#r*}p>5p>57mDWsLO9KF3XXsh=tl~MF5 z>C?X*UJKM_s35`6;9yLKLXw4!&kL+#7M$TjeZO1R0`ZVdlXNP}@)3W(fD|vkIz8>3 zr&bxP=ovn4*jBr=wo-L^?I$k!HQYNQws!fr4Ro3mJMq%C!>m*^D+SkM#VV_n06I6o`Jgm_P&f zaO*L(IU}z2_R7SUR##<`geG21@phczAX=O=5p0I-XOja!hfe!>weS5tVmy0sag~ZT zKif?=#aaSTh-rfF@m%*9sk9rWFz7yu1M}*3dM~eBzkkKjp(F{;th8V{u$jVf0(QNB z=x?m66}H8l@%C0=hy7hydD==;rd;tePLng9Z;g@Y{A$=Oz*Ia9192OQ*k)8P5p(m|AIp?kVm_NRzo;Q zU!Vld%<4rJsu3JR>Co)o4!4KJirj6@0_#BU{dd=Y8A)u^_T~I8I`h(f&y3JNzcga0 zco0}5Yx$k>(-r^@Rertz7({JfFBhJkd{?h6bQ$f@#Y9)H;qFflx9E73b`B0iQj^@# zaD@_eGlj)Ql(74-;aESY-o}4U9uY3e-`DLkdM}$voHH%d>x9xfuV*K4udn#&@Q0!% z3;p9XELCf+{XuZdzkOg1c-|mHWwP{tNx2qEinuSCI? z4r)B*tb6g!`WB}T&C!``odzjIYGv1~Bb<^4hCtosLZihFMBIw#v+uLud&jwkahL8a zi{jC<{6Q5^r8tokEk_XvlwN!?z@ClYLSRB8Ue%J~zTc%h5et;C?=vT1T5ws)t)Uk# z7K}vmg#ayA#h(Pmfy^j|S}18f1s8?8^Xap5<*60a4r~A3#UPNh97zO5nM>Z=+xxtq zt12oRI{YqfPVGJeJ>AF8=++BW)&V*Q{S3y#pn;3#5O21Oo>TDkk+kox_}*7G zB)b#WhyGp=x_W_6 zv9JhA0%weS5Jz(i3{U|MfDhVLiuC0G>bq-Yh0;PAh6)dc6?3+Ml zN(jX5_ITj|36_hY^?*;!ciqvv9T(f$AN_o|v$FtKrH`4q%4NHA zSCir@&kIyO(pZ9#kQc-qPnXrt^SO`n_s5;jcl*^$MG^Vb7NIj~VwKIcwNoxY#Talw zrMCB3#p9nuNv1637ZHKoggvbNZ+mM~{^pM6phI14ihjokuu!g#eG#8K`e1o*nj%ch zkPw{wNi3MUEQtH&h+|+qc%REGeA-S`Y-4D#Rla~P(cK*(u^NsUh(KP4U! zE{gG@oHRH+%=@)mfSI`5c(aL`F$OwQ9Yd5qM=hP2d^RT{ zZ?os|Y1!?w-_1AY7&t&@vEoL~kB*KmD^svU|FBjW9o_Js7oqd)vKrM`A&!qHa(jLK zX~>&0TP7gQ`)h|G&p?>WdBJ1Hc}fAA8k`=pd+NjS5E*-f)a%1s9b4zh!6b8btp7vP zb;m>f$N!_lk+{=kmvf;L;mqvAnb~D#Wrjrd-s*5xMz*pl9Kw-3GP9D9t*msoWD|a$ z@9+2c-NS#z~09~Y&>+EPGPqsnv%sb4_?}>P|lcT*ReI=Q9 zXY_EFjR&o+!SDI<+p%u)XP4l)z0`fe+;?&qS=Jh`f)sBJ1`c(hvw6YH@#a9(i{XDO zM@Otnhhc1ttUT`m@=c74GI%3+7%Iio-a9_4d7@k2&|uOFxRw0-b>_Fw>b>!GSGdK0 z``@Hg`|)tS<@x%>8Y5}IUouDDZ|n2PNg(8n*-!!+)gpQ$G^s2 z8O6H_axyY=?z*}+b(~c(x;!NG9902Ia;kM0$Ez1{ zRJFDIwLd$LqEW(9AmXA~gE9CS=G$VNhOq&(Q^}Sum?+G!tTuP+RLb`2*eUo`&1bb!VksBY$z8VqsmjvW$T_e>&zKUj zXz}0w{JYVM`|r-c&tGSZFhv*)3_PtqK*p8Kex-0+;nqpe;r4t>z^-5Dy5D)y#p!5L zQc^k4!+gMbRSFIkqCgnzg8y>D!-l6@+uIC7Hb*coyPHn^z~mnCAge_)$AI7%$MlhkkqSdP{lmfh7BL8f$s)|NxuyOEfKM_-;s@7^5ox<2l)!e_k%8{a+q(~Q zbL*}=MydN)0r{(Isu{D|wCY?Z^_HB&iLY+m^R?;79AdT8(N#+o#bIZdRVA{tjg6;n zrKY<)aFSFn7x}b6ber|WaoV;&Nn~^!oc=c(wzCeLOMmj?XP!uf+a2utkLzw{r$(n` z+WmyuL1Ohn9#KW8nub$l@^Xt*Pa1=yDL^sFd_^BPZzwi}T}Xu?!` zCo%CXWI!(s^d`a=pG~Ynk4r@lPWIR9CSOugRB89dE&cfe$|QLbotXm+EP}RARt2U` z>SgcV^{;6T@~&?8BA=fxYzJ}8&%BRkskCfvX>}%OE~LkV*7s$4f0eA|*VN|cRo+{W zidS7f^Omukoy)DL0<77c8Z82+I0(0Vbg+Yy09Q?0g1t-nMUo~Kw3++xx=}8YhYy*< z58KG`{a~621Y|#bV%?&j)CaRAnImtycCEq-x z>3J{KTcbwyDE=cK$I*b^{>l>(DAXpU{rqd+CPRSZJZyd6mO9bDrj0OQdC5wJytM|7 zewSV!XBRo%8U};0)>C3A9C6f3;@_;UK29ipZ7Bpw!BF$&L!sQ4i&yGUye=BQQ@I(a z22d(kwUir^?_f%qR7f=h6%MJ%beRVWk1SHX*@1f}u_{?Roh*hGSoZO@td-kn5~9Q3 zO1(&Gm2$2TmmS%gJELFpc>58(mYZ%C16h z0G`8{JC*p&WdLI+4h2Wt2F0-Jt1zUnd39fJ-=W_&&&`Q-k%$js{&a`M**PNx2Do%2 zH5VL)EJWorH2C>FUw#IESLRZ0;m<;p!2Pn6I$doJu?!-Q))|Aj!78^0Yj%JH?Q5NU z1O1r;_M+cs8iDM@_nfP$Zz?{=wXibQc7pJfSdZ2!(!S?}iO!z|F7I^rz2Xk-Ydr`f zD+c~iB{mHBK{zDk4Jl*d1n9Wk%Li+n+-j|?MubO&*PK{(;|C{tx=e;q0)qO~j+Zsj zCRVMi_uZE@rv>2n3=r2ME#`i%lqoKQI22c9$(Ne7Tw2CYv+d zcKmQLaP^1ltN2yM&_BT2;U02Pa8diil!-S?<##HMJ4j8zk6ZxUt*(OA4-Wq^75>Rsw{l z^UVUt_?|9*V7@+FBASpU0(}}E8OJlO%f~Iec+nS)7U5y+uk^{^Xp% z>&pE#6`WTN5B=0rcl=!k*UZvh+hJ6-cpWd)xRUYQntVYL1^jk8R(l~~&(MnPnU+>V z#y(nWlon)CjCPGge>}w9Mb8t(Q{JXd{L+B_#nC~ zLY{)M1nYwZArU%s-m?K1CMf(7^Oxw?us5t}NI}kIB=pXcoMkdy~l zCLYx|%~(T?=&oq{2h_#kybe@v6~ZxpV;yOs(!F1zfnSHfZN#d2Km7nkaeu#=)9=3X zseN2rHxxchW(!V9HUvm!YhR5Zx|2*84rqDD)i|yxKQ3!>W{(XenjVCZg8GI~g=yv^ z8RDk@Hm6r*a7ju|jzNA-a#=Wy`3Ym!DWZ<$p-wr)y&R_*F#gt{7q_-?ll?oB&(N{$ zZ6O%<)5NT%%JQ<`%}x0Q&W<)ItUc;iT*BmTm(Ko-x>f@2rkbj&-1_eIqSL7}H5y== zb!cE`ObKq7N1Z4pX|;&Vr|%=A155Nxon24c{K|bE)fQZ=+`2dmJ6tRq^9b}p?&6VN+s>-g zBJT6Q&CzpC7!Z;bc0p)ZpyOT%n3mAVa_T_W%Jlx(+gJuXNsWjWs{y)`NAO=ahXgxc z0FuW~%TDT9T|fNeEgLM10B4v+i}}V6iX*#9Sr1)PV^eS%0-(oD=WAQC0r^ut1f12` zSJFr$pxJ#W#ZZ6i;k>!~e9~~7gxN*bMY6MfqA6NFY zweBOv;R+MQkK-rj8_TyevzoJoJsq@M>58Uyr(Xa`$TdWt9&fqp<&~JS&C*R4W3iK~Vt!R|ZryS|bwFVa+@ag$Gd8_j)F77sL_mcDqjpB?BH=t zkA;Q9L~a7{XpL_VJr*^Rlze&9&1%SN8sSeh_@S z%o>8{NY90)7$ZeF8P>~>r&rC))~WzZ@Nj#p5CtrzPM^~|7h$_RCA`oC=DXk*Jkjje zxNlS2V3<+Vsh^5~hb+)LIB-EasTjsDWD)|-7*<~BgDTY-_p*Y*`_=UrxWfLv=U!oD z^gY~OpT1QPY^bXSnBj)}-SZGr-2;L*mBGnJNexH}yaeY7Rj8XXb-P`9r(QWY?iJF@(%EN~H5w$+13`MOKYlw*C z?uJHctl)O1Z_nR#A$T>L&D`9m_X6YI8Ibm3Qv)g8aHeu>zKhwwJ}I;8W~)m?^Q?7}1$*o@k7R0)RjaB5~N+TV`xbUeL`**QlhSsGWBk z%|;D?Aj{bSE)W$_uNH%(?1p|ktUT;g-!9rU>I1_wj?w#VLaRlnlg4<%~K2XKl}k`C*BqW zTdWmHEe6*L^1XGcRXp8o2P!U+e72yNx6RqjI<@~f25PHMH(2^{pQ1Tb&*sDm5#i6jpDr9*x%RsWf!xU8x&bZB z?EbkExz*1z&=+kDq0H*)gW6&U)SootL`8dxeL{dUH-5Y1`SRGofiL6{v632ie*>mY z85M%blk+*LV>WW^FH388?_;?mxAO9&7X0lREv!c>pWc{*!q&S+yiX@i4}s}@BdnsV zY$*Qhj01ovwjl?@`X8hH_yL+%p?_Y2>fb4C8CDVwd~ zd`xIA9W!T)do(Ui2Tq1U?124wXDkF_=9+r@n73+})fK-XD_lU4-^T*?i)4+w7i8{= zH{|Jx=wZEt9}`0(ZSfx%+v4P(^G(@{&h~v#2Po+>-Cz1}wh6;T& znlkUC;0=0N2@;f`KY@+FDgBTzcJt-ra}Cw)9LM?kiGi^<>%Ur)#;$^3t>-i4pE{R% zw?}dqx$M=hUVZ@xm?<|cjj8}USG{~LODn4b%bS!GHdiURvN98}RCKV{yTVHcWBWi{ zt?i$V5h_Mb)xs_meG0egufR1ZTeK2bb5<}RKi-iaV-QY3^^zeM)-$0yjl}ZP6g9bJ zCW})|T@pn^x53tl1Jljlj}1xNUisy9F2>>9(L(+#-$hBG`vR_8Q|$){ z05&WK7$W91ge~}N7hDVi;Y)-ndo#%#ARiDO>yVN2!vJACK!P zW^Hc_3JX8G3aJR{PChbg;5b1AyS&2m&hq!vw06pdla(IiEURG|5~p($+KbkyNFr?Npb zvTCGGkIZY5(H%>dg6?pzTH`vUS&B?P)7O4I=Bs9*Mm%^to0v43n3OmQXvB>ZRRvtN z9cgVVF;2!s6P+TphPTC-VOQR3b4=|IajH~L{>Qg}hrf-j^1OWXv$+Ma*F3jo3bDl-OGqh1_d?6;r0pATRBaTgjDZaYY?T9ErLTzB^YB+9Po46^A&457LVI0l)TD(UEPw*~%wFf1|T6U*xQX60{v zC|^{pPt9b^!IeEGS^NBn6>6Q6iN8cL?zSU#Ors$5DD+nzIq-nHHZZ7$SX)~w!M;Y> zd8l(AFvbXMJ*Z3=kv`x=g4`oHvs950$jC45_D^BmeNbh?lc+m5jPnXGJHVoEq9_u( zVrlv|v6L!shVa(Q?`dtI=MwuAn*1P&r7NRm;a~`rDG2F-eFUaXj`ligvE{0p#4$zM zF~<~NqxkdV$JoZkd&A%7XQ#lcc6t*CtvUkOL~T0>?*BTu{wW#Q$A&aZu#K{qI5+S9 zc)`^M#B=J5r!~6G`V!5ls2L@%^qB(%Do_%K(ww_kRzL(QL4JPP8F1dT2r6m{vU7J5 zg~jeR^~$)2uG$QBb;jTEggpzn8Y0pQb@>rqJie6_*x7WxugEhrcC(uA0T_}CF2=4X z!=G)?pe2jmoh%snxOv`(Ujnz9PrO=xYcjYWJSI4GRNuCQRh`JmGV7x(hiiD>?WybV|7GXc^N z7+$C#|Gp{EttZR-uNM3}S3DaBz6#EMuA8MC5^4jCGaTT2k8Ct_Zzv-=&bIPMqkI2N zdm3ETrj_YxQ-_ViYN;Di7vqaF3)8&OQ#V>XJv{!5RVf^;3Wu2yGG3Lh*%E=HZ^G5~ zHR$lKawqGjp^?V1$Mysxtr+NCHD(5G(bFC8ovCy(u3)=x92H+frkD3u~!ah`hXGEzsSu^l1RuIF9` zb>4P_!g-KNk9aVEvko~;V#eMa2BGj6e~{<8TT|btxhEcLkf~WT+2ouZouUagw!<5D z8$6G4D;ZJ~0%;>rpzx}8&m<5}jcfCSXItiQQi1$4%Oc{>Us=*p^(Z>mG&n?w>OkY= z3CNKGLj}U3vH?vZr9RqaAK5obb*C$Qs7r8Yh#ppwgbo+MCH;)J8AapR+363bFtou^ z!a<;5WtYFG`>(C-hSy(e9c`io-{KeR3RvgGPi69;T*NQ(d zu2@cy+fKKEJ_2X}|8vHbZE(-eD-cLfHIsBppUF#7IG+HVj8xX=wq_fIM|4lxX63(I zn_MYc2{>o+IyG#5B~v|GPr1S26C##}Z|Jq#Ip6&4LNqtp|GhoT;rDdTbXX{o{31&3 z=CZ{L)+d!&Y_>enalW)l55SyEd??;MU^rI!-r(~mDccuhtgTj@O!vQyB&rGf);$KoA&?>UIr0H}uU<`&5dxj})h@z@Eo# zwyE+yRzH&Y2>P*-CaM$gdt3-u&m;dE@oVT!1x%d=9`n$179wTt-hD@^FS||HKRC#M z$|Npcu!MaytvdfZdhv5CwXf@AbF*tjdhx}C)=g9tHV$W8KC$m~0xWS@iWxPg5~63C zE1x!d${qhTX;-+B^ul35e0Y4hR&_$RG-%<_$I|KMaUS{1j(`ETl2vThmMngqPBvCs zjLbHTc;&Es!m)mW3?8vZeGek%rm{vM zA8}K{p!%SJP#jv#J_eT!zl5$ml=sIeM2~1N*BPO(bZ`MmA)_19rzo&sgxxO{nFJZW zug=Wi#3A}2rsGe?>3}+X5|zMYhgWqJ6@xQz#oB>OOf`kkcgew164$?8W^r6$X`;ys zq`2lh&fSB;gOk4xA$aJAI`ZxCRv%%B2s~6Di~!NSgzj;RM2d*k_Q!wcL{Q+u5xANG z|1K7%vi^7#7A)d;LE+-rt)(SU2g;4;YpIwsEF>&cS2{nx1@vPsgwYW_pus#n4f>Ck zDptSoC&70fuhF?|0HB~lO-n&(Z=9`}V zMKya-dkUh|mwbiLndhhcQo4Nf>(|Pky(6Fr+@5bDwuTi|nfMsJ>IEB{nCxzhNYY*c zbwjBlNkvI%;5QmPAY}i?F|KMn^``-k%ylXh6OKchNJe8@8u{pDqW0F}_!?_lxh@52FY#auXDD-gx|%ViZO`4Ii5nAKis2*IE(XxC-yCpH9#1 zP6k@u`MnS&xte)8X*Az-`GVAb)?VMc>fI!EgYj1C1^{dY+S%e|6x)LX0}qaNemoZc zK0U1hN6NFWVH$%n9eb|_+!P?DGH|R><0Lp5Hr@9n#!8?h*VF4QaYX0*=U2E}K1JpZ;?nmg?3vSE zD^QiRLX_=FU?bfS2=IQ`oy+Wc&UC3K0~^Ih#gif(Ir?Oz5dK@6v2H=c1+2m%OWn)L zqx{zzyZ8bcC%6s;u*^I?W?wsTHaD*#4S|x(#(g2Bqvgxi?8wqOSr7uI<{Pby?@;ba z?h4kVU?+e;tSPZkV2n}^KJRiQ)C{ZyrG#7(iHKLS>K*7C-crF*-Ulzi&!Uk$bg*z} z4Cd}wwrMm7tog@_@lwo6lsW|uWW;2!Cy@9%`=B$5hW~VXZ*LE9$x?_G4qFvyKbvjO zbC|Y83s9GM35{+&7XMQjw7%5<1SKsKc8c9eySuvs_FpH5i`0{nD_+ze4j3rM(r)Dj zIlEji3Q>JkLxekx3Qn@;IAbOPS(ex*WEY#?9KOHgN}>*j zj?D})^S;kqZ=B3VA#YK<5UHKK-H?So>7l+HuCE_aSnmbHfqMkA?Bs3%z{wuE$;N&{e|NV?QU+dG@5wN@n<5 zQOe5RZByoXKxXZ0-fuaYQFR8-z44*qAI7&hunk`mRAvuG8VAb*77umCOE<5=9?;RI zUr&NwRkXQ}=)l3a!Hdlx2_C<;3AL;C#zk0rN-7@bIG&dP6^jYQ8;)a@_HNyyoWXS5 zkok6doErXG!^WzK_a;Y4ZP%LQy@wVLFwdb#bsGj~mI_4Z`4Y*OkX948jE8hB&@hC4 z$ad8+e~3-%r!UlZPF0N)-lC43D+Fa})IExU(5ZeGsYW0p;zr^jJn{&o2Oa&0Voi!_ zCOlIMsC38zTC`b}q}^NB013Zy4-9rpgRg>|$1qp~JA^7F1p|27D>N`-C~UalJ5L)e zEOQIgxeojq4t;&qqLhrPfREeEWCAGN)Jn z8sI>eypSS4hF;?xr7mBU86@ysQ?_9U$iKy%&!|h$YMT5n&=ifwA!jFr&L;6T1Hm({qKFi8pz0~Hxp2E?)X2!2Y7mp#eR(% z2yERh7kXn}me0kNf34Ah>u(nTmIS$q4&k%$gL!$DUGK11Id!t~>^`^J4Y*2-?v?4vsnd&eQ+Od=X|JV(_Qf@>zVgq=UV2^_SZhev+^PWpdXV*`+J zHnkXh2{ThK^tnP%i>Fbp9q@1mbSAD-KB;4miRS#pHG;yz!sTV`iRzXO1`Dwov-R&c zz~OSE&6TGY`xKyX~Jjszh~Pz zBPmnc2vWvt#HF;vb63Y}Ub?CZrHF>Y(hO-K*C~|Y6gz^6(=;R0Dm+07?SUr?eSL3l zxh+PG{N3rNF(q2L8hm~yIQviUkHWZ`>z(i+7zQT}Lkdtnf@%et77x!}k2L&jE`aPt z)83E#V@u4|eY+3@W6LP|^hrf^uetrSnOH^gnLm_=_Og;HeMZnf=4lScetr7%X~(}J z<>_MM?u(1R*8i4h6u-0Ufj}v#=LlL+5W=kjSP}sDjSp`v1QE<4A3H5~h^$a&G`8OmJ&S z>%dD(3MerD|8oI~E(wQ(@wFUR>kxEMt2hJs^47Goh| z&=fS^Xx!V;d_L;mot+DW92yR1)=yJ%CT`8hnS%^$cwv`b%Wt52PR;Ks({(Sh70F*!c3 zCO5SJB%}n61C`ar@9I2>lr+xiCQ^0x1nayMh2d~;7!zeU+DvA^7Vo(H5<$uH{Vptg z`WVG&hJ{+-4DNRSlJ2!m>W=;i36DU20MUxx1eAbTJPTKmaUy7aL`P<+6HhP5c{iya z_gY*7{y?*Y8=#BCUL;bF-~K&w@N=`pe8{gf6#)E;ydO^KOyw54 z`QOtLrD>n*)ri}w5X~>bU0B?=0BS-_uua-l@V~u3$4}Z=8ROhTc1cX9GwLPc{MRtf z)Ol?8vePJ$Zh|5pWH_sx$;8R=z`*cBKMe;#1CS*+^-9ef`Q~i-p!0!&o&X~sZZ)+} z^kcE%Y7ZjNbnXiwSS7Nwr+tZmYwG~gmQPgcjV||#4ZS)o5&aT4|FsylZu5I;H*L)r zT9Tk8f`e^j>0WiNu)T4v3kjHy<*Ok+WKG#*@xFV=`s{e?^{;{cz}09HqL`=q-!SjG z>;CWe8DsDA2Z?%;OsqwQgK-89Mf=G6zwXmITmd8CT-Gz*r1knsldI|%$1F569JnV@0ROmWa$gPCSmQzB^|3yXs9@N7^Rrw*F z{sEz(zP`Of`Dih-;?A9cM#%(5o2}`|gGn3x#{~7Fu?2f^NsnszeBHO%4;BwQrKhN# z-Y$CZr)vyQm96AcLI6wsYpWg?HZS?Qq7}SH2pNNpmUoY}85x%#ptIKb%_mPTRcm(1VzGgP?bUF) zD)M(L>2$%qk@3ye^_$QQaDx-q^T|MR3mJ!!%J|0jL8@VGb%z@DIy_pndN;%dhu*l9 zLeHP~2KiLRhM5nfBRG`1l0o+b4DA3hy==-CNnzE8Xeib2K&UlnUfRaKOIN$D6bR*g zH{jptDOX(P8$qN}W4^+m$Re5~sAEYql5hTKacAAVWv6%eEb7>0+Gk$xV(pgX==o97 z#gXgcQ5j;cC8T)+(2$sASWa2y=7sEysjt6v;w+q$x%=-)i_XcFsBlBgxudUICpFjn z8`u2s?Tf}cv=}w~+dW8ERCVfXp(Cj&HBqWQ36?cns!&7c4F zR)Xs@t%oXgM@RFoD=5mDfvtf0YXkMAv4N?5vJDFha}RQI6`h$~n9g}RTv=IXILV5{ zEcoxjxVs@8@Jw!{WqvNWSr*qOS!rb{WYc2NH)Qs}XEvxENU-y2BazwyAIX^TS0-G2 z_Cl54A>q#7IaXfi*T$})g=Qb4hDt_mfImTxL##2g?=PGmY;&{>*P&OEj`fdrI@QJH!!TyaUb)6Bs9Ae z1bwlM-M$@+0S>!{e4R}BM|g#Lp)bwj6A09e06~?~BB7KjE-WZaT>SF|>5?lEhT%hk z5c(7a>sy&@`SCF=iWug z)}`~ai(|4|%EOYIHU@xc4B%mC4Zt8mlq&h_56ANW#t?DBJZBDZ83l;I89j@>0Z=Kx zU08ob(;UP%`dRS)B&(rJtwY8`SDGFSe<~Xw0|%OZ_e&vn2IDIFo#Go2l~em;13Lgq zVY;UWz{K>D3J8_Dl|p(+>su|M2LnGokXpG}uM7g~kVNWFTLi+6ejEur}cbmHZjX2J_ZyO7v9Ax-#1Cc za_wcykafe%j2zczeQ=&vtE+^otLM^pUpJsrgr*CZ-sqrT)3Qc>ywXBKt_$=X(=xz^~+%| zkm02EKtsuv>0Vp6hFE-If{938@OzW1DaC&@oPMmC8o{Z+XgV)@`$u5xgK(%c9VCtt z%VPjZvBYb!7;QST)cULoWt0P;)54r$=JtH%u%j7TM3tMAO>r$8k^G@v{MerZpOt4_ zQC7Y?SiYPp)>om;oTATxw0*!`!-)3aOk?IDQbbaQYlnk!57@fU(V!F<8iI&awtd-s z8w66;8qQDZlzydggZf8FydfNB0B6j>A$p*NjFU4fAD&oVW`ZF;wgK~?tu(8S#eDrc z8x-bo0$lY&d%HC-+(_t*M?>*wEq-PCa~bzPP3IAl*5^GJyQ-v1x{11jKWy~V%u)on zAN^UVz3iZ%q0`|l!~0cd{DDucRpW*~Jc^Vx+yz&ClQwgM;l-pvz+WtXi4WZsTSwhb z-|a=;XE(WCzsYKsHiiWk1FS%+u(N$xKft(Rv#Fsi*MSXM?>4x(7GHim@ublrH!n{< zJTNs-#qhBPR|fUm6Z|3^_<^SK%o>KlUP&i>H8*8c`KMP%zw? z(Q*-l34W&efi0K zD~47R0(tQJItJ0h%0rh-{WYA`|3RADtfZx0xZrEWFs?tp#`ORWU&17i1sxRu^n5>l z0JOMrVC%86Qv{7fDN~UukN=nqww|4pm1Ro%hXIdy>sH<`6_1d;M3li3$+ItN6n|{_ z)ViTv_r4T+3B5PocUmBNt9}g_Wy)kT)i504DiOkEahF=q?AK&Hew999<~Vr!V?oH# zfO-<6b)(nmc`NW71VwF38c$ggj621mzzmqX)AFX0+kgKajjQWr3_8peoTyo zUPCE=jqHGBJ|dRsV-Rhe!Vstd-Vm81q7oddgfxiLhp8%KBeCOO;qOUJ^=`YssGk?g zObY|yKY*aENoW_aR+!Rzmsa{-l*(ApSD6p_;dZrUqIp4IT^&LFG!7m5RRXEg01n)X z0*b_Nne7^K5VT`{%inTpzh~o;Zc?HpeZR8WC4|^|fE5FE(O9vei?p=`1GR%RKw)`U zH0Dvw5u%=@_F!l;$mBl(#z-Sg19>lG(Z>>x=FfboBqZu&exKSbg}lA})J-n|t?;?2 zQcYE%U(B&LUjhO$b<6N+_amL3y>Krbdx6XK(g7GiK|arpH>YdYU+5(!ChF?yhVE>P zyL`Y6yF7r;&dvgFo@~(UK)VRL_U9UWr-Yjy(dxKVDZI;3M$DFQ7&0Z1Ku%XqNOJ(J zmG+xzdg05qEn;n_pLJ5w&TrltO*&Zs>cW)IY<*|Y;$0BtO}$&nn2(O3tE(YTpsOgI zK_R0-CdSqSt%d&(H5^M-ZD#95&y3I}7qW@l17-i8> z?N|_O{77o!a8RrWuNHqSCl#ewH>j==g|^S0jPlO@l3W>d(OL8#a(R4W(r)Y+plwVy zhhut@VU%~ew=tetySrM$M4igvphLC=!GCyfME;6_8c^8$3dEcbl^Q^xns-~~hM$a_ z)}8Kjp|m;rXkLQ6#32TfO9`(UxZhLhg}sD}Wn%>L-gRV2LU5Gku6bEdJMchlMYY+l z6Fw~~<~+2j0jjXnnJ#+AKlrfnchh#j6b+Xg3_9R5^5wskP$^@71@$PM=ELQaFEZ;C zuLXs46UVprrgqXw zIF_XyF){QSf(3f|ps7G7v8$jKQgv0teU0m&j?TP?19_{tUIf3961H;p)6%k>(pUh` zEM&Z1`)wk#VU@~@CEYNZE*<4rc`pQnM6yC{sbl2}@BTz(KA%Y|FHQ)E=zhZjQ|ib` z3+!g;cA&;$5j;HGY#3GuMJ%pP8LNh4jY?ut#U$(VUsJ-NJ+QpMt_6m6W)M;CM%4uL zQDKoZkfniSm%Lidn`}2*TWT+IZ$I%32xtV7Ajt=L6Q0lf{lD)g?5qL0oZ})ukvab{ zWLY?D&qU~Gz~4L#h}|}+z3iCLZzO>;6XN_E{F-Q0H6=XI>CBaU629k2fx(ZN%d*mc zRsOXa3lYZ0a1g?^7&I|4>>9L~LSzp-IiXObPz1w6`M`2L!BC9@`|CvLq^*u`>OV^J zAWhZWU=1GD4|M?}M19*#fyfxM*^|y{dhX;8#cr*cjA~b>>o{4XrRk72acF8uuP``_ z2LXdZH3q{B<6h>&V_1>UQftbNm)THFCfWcBe+}h%@AdTRMPYJ|;aaLuHYjMF2XZ;S zu-^4%H}s!?-}a3g3gm2E{s}3!9I1CYi-(cPOmXguZCgQp&wOtv>-T<<(EIZrOKF@& zkmc3q#|~nN+TFb(eW7SsDXm#Kfw(U7oUZ7m5ecJDZB2LOL#x83f~wMhaaro=93U4B zArTt>Dw)Am^VhYqpvnL~=p}Ub+eZtb(a}-hx_(u{Yd$rxJ#yfJR+N#VmraWz%C&Yu5T*%VW;qNIqxrI{sy)VN_VYA6E4 zO|b$&tL*?~T6d9%>o?F(F{H+Ueo=v7$uR#*AAW#2?Uk{IqQ)Sl2m|zo^}DaJ&p{BJ zmMgbb02NFX8V=_V_x7QnMMWcDr%@90!IbehMs5L`%^*?sbY*0!lWyU8@a}hj`~Yl1 zwunpN~WYNY+8q3#PY9l4ZVY^*R)ikU5*8*nh?GhoAl z!(kpGg34SLf6P}ucAERcHLj;FBA_J_68C+o36^PZ)Y7Jm|Uha0yS|w_O8u=s~U19iZB16cX;>) za@%n;v-+Gy_Foc;b65E8TB_ZVb5~+D?+Bhb(Ki-3jSO-Z_x*ML!7@u=q;jm!4y0NRLl&J3RW-3$k2xc#QzA=Nnq^OdQ1L5wb@k&GxULEf$*(Wm4hd z=K~zat3iT5LW{;mi7$xqHBSbLR~ew%h`{BNzO$8JI-oH>@#r_j`Y#29?iC@! zK7MF#n16ahF_e=c8V)dAg7!A20WK=pXnCL~@KZFlGo88r_Id?L)=t}o^**Rr1BQAw z@Wgxa5KmiV|Jc$~a;9y*!XR_O4DgKo{GxiM0?^#JT079K1O)JXLn9*kF;FJxJy1A3 z&pkm(jJCpCiQeQ}SgZ#D#0RFpA`sdsNM4(lw|ZfXUY!z_Mj2|iJqLC>KH|}nZo-42 z6cxYSBseXsm_SHR+vKcBcn}AVIz0E$w!DM9)(?Um{!$cJ*oQ~@mBrH>9kYyFO;<13x--T(_cV7@5mUmi${wt^0g}&DJPm zmU8b6M=QI!X)$nTN0#v5M0jyyeP1e#IkYmv)5eq`1UkE+?emcc{ai2Xf@B`C-uZVb zV^W@1?%<9;aM2w2u0=hPzM<2X`iO2UC_ZhwE%a^K^HM?LWC(etG@qW@ZSjttp5n!k z9pUo*bR(lH)KQ&}@3JSv)of0ZJl*}Cg+BcpiGCguX4iJPe;it3xNtgRX7l~DjVQmq zX=`*9=7jgk)hm7Bx1G4&Y~F93bfN5;pixh1t_SGKZ~I0^b(7p?_bpxB)>U}o;0WH% zykT$8T@HmjliRZKtc z1u~FKfw%`0f8{2iPvHEP*VMX=O=5;JJE<< z>DQC0d))r<9k@3?MFU}WPqN)+>!aQbT?yv8#1olW@0RL%8A)jaN@@L9XAyVyDTFld z*|^!HrX>`E!Ord%4Va>8=buKz78Tumvl6AJIQ!Ii%Jsy@qVH8P1FOz+;UB81H>#|3 zt@u|P{UL(U$xKn$Xat_pMo4=0dtHP;L(|z=)DLfO4{ucTuTuaVB}~okt{xBUj2DWS zbMQMDz@s`bu2;Gl7#RnZB-rUoBy$blI8;|MZf%{(BjZy3`Fhn`aIO>cYmbA^cSeEB zv*xaXf|?EBVx`EY=PUR~I@dl#+%8R$*MteCr>pz)#*H*pAK%cEy(4YcD{yI>SyOWE zq|04SWq5y_)WW~tilA@B}~W=+$N>LSS^~a-@wA?xuOL zy0PJGITdR-d&t7VqORVs2vFIIii!qDy8b6I!+Dw=yhd0v&u=m;qrtA1sB&>$_Okx#HXiZYaSB%)6?LP&DC*QSC&AUgv z%-bhya!FVg+BhDS>rj2ef=+R{#NmOj6%abq+Cu%DlT8GSDSVgqnd`vtI9zEh7|hbL ztBfmr2mL@24wTWMN!X`+t|dC!LgRtpmr+Cz$^?=usS$vLqURj~WYCwn2MF zrx`+o!1*s*qTR$6yh8#TpNn#XQv-HF_Exw-9(*xSRRj7LpU$EHG9_Y#K2nd(J#3*K zkH*%U3CEY^>XeR8>zctkgPfWx7xEPX9=O~$GBV3}89NEYLC$(_oval5Jyj@RRQt5Q zGcd9pN>O2XN0Or6&9BWuPBFAoda?0CnD^=AcEVX}R8G-Au^`RF<9K+`Shpq^c3lf0gDXBd0;+pVob$ zrX`{ftBs=(WF#7Ds1=@eMqQv7Aj7VE+wCPro2L%iUpF}{z>YFe#cXGL@T#W{0MO2C z{c!!l(}rl9&tFx_qSNMzlj~=n2|G{7^WsHd-#n?yEAiFGM$y$tr?0fb-`#$y|%Vb|l zmJpJREnBjO>}j%ONl2q?*?;%*{hjaccaDGO9_QTmz4!fozMjv=Q*kku^T~>V;Ve-3 z(Yxy;HeRNjwDgEx?a|HAVudjKkh-#9a(_fX>!U-V{xQ%?rAKqhkHhg1Y)ud+@ z;BO(Vw^Gp1zPr%mPV%={Y^v0`0}^Lu8I${%-I9U?>3~|%lnKmU6hizg1rkxw0Sm`) zI+y`2Czl>H;Cb!azwO22krVR!w#Iqew)3OAT<0TCFMiv${3}`CY=|$u#hP5(=x=e= z&N5_M61Da;eDCFSaQ!!r>x!q}Wc&GaP;=QuEy!L?6n1D;W;OC7pEO+>F!I8MQDWkB zlZ=5$x1GhTL()d|oOEA~QU2@3M;8<4O7B~rjjjK%2=B1_=c2qEx$yl;%C7L!aze@O z(Je!~=?xiQNeS;2tk@1#8v0g6nR~!#b?y$7f)D9)k1Y{%kY-W@40eb3aj{yixC&;CA%skq)zXk>kC$O9P)Kho9&?=X;k#hsy|&_V}kc zR;(}r>jgSz+jsl6utOt`J+gpowwBTRGrzXoas4N8fqtklYm&*# z9F$@51By=$mbxoOTL!Ju*1i+Q%O=1}VSDWi=}9X5ktwBlo%L7kPEU$EJ?*~Tk*jLD zA@Gj`;AhUvIuDNL+vuzcGiD*&8J~bZM|@J<`{o~)rLRv70qP@5)cUwvew*FM~L@O{uc2Bp+{u5wi+Oi z;n=?5_RwPTNyjaLw()qlIiGE$+G^pY1)aV~@1-;$oTdWI05VD*T~}Lm>$H#_rA}fe z1Km&pEv!j5WUKc^-&p@zav@(`ad6yh^=O+X>Masy?*3h9TPpM|Y@Cr}dk=*gMk84G z2ioq9CMM@#OVpww6R3Vz2&^p6truTx7oX1!Hn6>%p95er*eunT@_%}Rqm$Ja4@vHT zrC^~s#ItQa{NiNMv(01Dtw=G`(PS_{0; zlEs|!_RIWy%~o(w__+Ty`uayTketuLO)dcG$BZ1>>;F4guQPS)U&a(gd+auG>qN26 zL$7`N_pWz89}Qeos% zotJ)~$OjZ%!0tsGMT1eR+4qv+d@2a=Td_lN-wH7smllJbwA|vkmVb1t0BqJ5A0t zi|C9#%gw=TJPx55@Sx$1Czw>M>U$B3r0*LP;a+3Ql4d~d_0&l1}#0W8n zM(v-jnuyth;Ve8ZBg|LS=nxVGyic}gWXTe@cP6}P(@|x3F`9IC2axCXb{T=kg6Q@7 za3+{bb(RFhkb$+>dP--91DoR#(pBi`u&wa&?|;r~*RqG2=f^BENUXCj#R+3VM{on<8ZAX)nT#F`btu{jM64 zk4M-UDznZRWG>1ztrsx8J`jzun3Y|xmD{fS@oU5WFN3L4=R+g^>8lZq=hmka3F5`q zG0)*>=IrG%>MkV&HSU*g?yjhzvZny^req;;9Xu8MAOKYsi zg7meO#qtpjo`0&Z(@==@;jv|6?G2-MHPr_EZGN=Lj~=c0$OPZfm%f5h8nzI3pAIm+9Es zzX_`B)C$o{07dW%AxH$zaT*T~a`jmz#1228tliSk;5%*LB?V;H3a)dt5tO|wa=NV_ zWR=b2N#sJQB41Y-&04tSA1a-^JKlNuN#Kio^AV79I@=jLAKm~E9dcnO^8tOkg)^+geIF6=nf3dl@oCVv0B{`G z=JzFCeW`0?6k}7?=*VfSo%msH&XoH!M(NnDY|36-8>Lq<`NulY&&!Y@D5wdFvfY95 z&IhgBK&d4umJzm73LD1*!kYdPW$!2k{oDEOh7rZA|0|>q zl-@v4(}rXNCpi0KHLUuvL zg~?ykG1Lmfj)`6oeERfXVS7(Zm&w&I*`m<35$XQjxz4klY$anSCnt;9_Ok=|y7oW8 zjLyV1L&m!R1A(di5U7s}KAaB-Az6xy0b~)DUiZn>L4#Vx+NE$cLL*0`sLwP4vs7?G z2tS*RXy0}#`gx;FATv>{oE+ln{(IYMZAs@+iLnf2ofOE2mglgmuAC7sMwuYynD_~B z>~}0n)0tt`;YNf0bOtLU94boi+Tt}T3k$E!wv{^r`)0w+ zM0km%=j%p{miETpUXCxF*Ltw&e=k$6GYVqSR9}(u0N7Lmg ze<+#RsSfF9_CpWZ#Oq-9tMc2M0cq; zPm&Z92hO^W5us9Ur#?y*d5I`Xauf+zXfxZYu99o^{u$gY)_(M3el8H$Ck`%#-_A|3 zir8)>1^mXZ?~ckbIxBMCdblM}-w}{B=-4=znQ-x=t@DWXVm2ahZ>M4ViG1Nbe*=FD zL0rzK@`By@v$K#xa_7NUSM9B77yt0^aPQDf5lzv?nV>^QZ9{nMgsqd)jQojl#5vpW z+61C;&dsq+KJ)v}gYVmeUVdI)UV&b|fD20Qx=T&Ua=(*KcMEIwD`}`MU61#h0N;zF zhW@dLgKnmazjaDS|0H^CJe`~rI8Lj{XZIGLB=0sPH|%z}zDw&vpb&i@nb}_wgfuki zsKxuf_!zm?(5my7l@eYzc7IL78l~7WF02>nfd;^mE~Fpgx0aPkHJ&c_xfSPFM<&|( zi3P70_=<5KjlV%W=xyB+`q)<2d2V&_!*ii6;$rc$QMV63nD=LeA+dv9OvB-x1dRzJ<{1%QaA8{ezAyd37Q+U+4r2~|}?*heqNHNE!Q z)wzqFlS7a=GK>Pa6qJ(fctm;;969Kx%~;$Xcs=Uf3|K#_Y+SBQgS|3t`uXi7!KQf; zi*|MMa~jgFX`yl zj#;Cf26jP@@P3jAhjA-IIKf9+&LQ|pD?}5^O~HHlIaGOa?e8_yH)oC~bH{3sSni9- zhWKdT+7UO;Mfh~!@xRHZin*f!0S8Yib}iDs+>^u(DT}?GxmPtId$|0Ex7Q2(DsIJ_ zT(DpCW<-8>8t7P%Z#(>2Xce>zIGc+G#F3@U)bCE?_x-ws2FF0+21fQMbaz$h;?I2z z{{Q%Ezka<-TLxm@P(ZV=0$Om$XHLc8fQ(Nt=@(YFvj;?X`^e}&ba zIZ$_6B2-nyaXDTTSMjtc{9w-MmgW0@3x^$tqw?e__rgC%A~J6)k&x6n)!+<{EDj&LopX*NRGp=x?=HVRXMJ}#{eY0Naa z;pe2d-+t{9?biRGqTIshWD>+Od;$J~-22@;eIFSPhXRes+pQw6eRBl|5fWHHq^=T@ zy!(d47qlo(^59=rt?6I+vk*!XvP-O;O*SG)W&q8#n8c5jUGy(kWY7+>MWclAE-;TN z*}TD7y1I73r0*S}Twg?vbQ{AYyN*xhQyU6aV^0uPbNmb$1Stb!l3<`>&9nUv&3b6V z94Inlf@oo61lTyLr-%I8i^f>S0W~ya@23G-#P0O}ZI3UGo}RPteC^;G14_yX=GwWK zRbX0TnDjB{w)Q0&U9Tm#hFW&JwCMiPrawov?aoTad%JfRPp3U)Y=?K(ditNf_TQbK zKMFNQ%Y2;^gO!O7bX91MOLWU*j7lBMIZA(o^RQpBbCc6Sun)%tD4RZ^wl+^a={Tf- zvhy@4Qo&9uxFQB{8Q69H`>yUu+OA=Nfv&f6N7m(6Htb~(`BiX`#!|%Ld_+(%!21X< z%5T@3RO6CazxXA;xN&lRcrkYIyiqh+#Wc67ir#SK$>q47Kcj9>4)@Klf741DXF}S( zzLp|Q+t%-h!Nw0pLd1@MN8NO)qM{;yq%VBi6-XE;9S#0x2D;~HWCY+}zX9yN+Z=bo z|L%|@{x&r1{*Q8^m8j>A7OTxX{*p&TuE8kY4pAeEt7p&G++D2 zfII3Lx^K+X`FHv-{4}%kY$>zW`LKNV?CfkmIOMdue}pJH{8l _n+x4+NCIHPfLa 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 literal 0 HcmV?d00001 diff --git a/website/pics/recoll3.txt b/website/pics/recoll3.txt new file mode 100644 index 00000000..47ebed25 --- /dev/null +++ b/website/pics/recoll3.txt @@ -0,0 +1,2 @@ +A result list from which the native application (firefox) +was started by clicking the Edit link. diff --git a/website/pics/recoll4-thumb.png b/website/pics/recoll4-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba6aafc19a028fb26920657bb153bf86e625881 GIT binary patch literal 66895 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 z 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⪚~h%W2#!N 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 + + + Photo + + + +

              The document history window looks a little like a result list +I'm afraid...

              +

              + + diff --git a/website/pics/recoll4.png b/website/pics/recoll4.png new file mode 100644 index 0000000000000000000000000000000000000000..a46290ffb0b3835cd294e6d5bd77629232f85fad GIT binary patch literal 55374 zcmZs?1ymeM&^EjYxgj{goh zjth`K2Lhq?yaETB)&ei#U1by`;AfFvz2#(BPeXYR0(}6NIuE*`acr4vc{-MmyB zoHSWD7?e#lGY-TtWL?;?^o779qgj05nn#O7j2tHDfe)>sGXR-w5#lUeKH<}m}4s*=p(^}dHJEUb(zc~@9?mmZ$nPeV(a zBL=GcVp^RK(K_xb(ELMy=7Ct=%ML!hiCTsSo~dMI9G=#>HC{+WMqhzIU)~NinRUYY z;F13pe8Er@x9%+)g|q*~2>ktJIpKJ2hraqeEF%pvs*XG_GFr`&-006e?r^JDeGs%Ts=J_KTggW9VK>We)Cq zZN?4sQ7z}~_C)`j(fM)3n4j+xHZ~$y&(1JD7mw8RTZrWl^4Em#4TQ*{mtmLDWE(8yf|8NyAN>c7Y z3Adm0BkvLPZW$3O-lknDH(Qmc&+K8ejF4RezPFxx1yYdsVKYrX8r)3=|0_mU>+!(7 z42Lk1sHGhkt43lUH2Ge;q*{^R06##~jWdJ4B&UzH)U|+|dmJZ`?mXUJ4tB zs>}i~YTt?eWhJ@1|FO?M8ZV3FXk=1A{ulF|$kW?jP@!A=L-rfnA%J6`Pp_MQi?ltz`irE{$4=6>PZgpivFi<7y*LX`y3pLmA6de>G`KDxJs#WCl%}#01`n!fc~^UO(Yo|o5Qqc2 zvs{I_Shwl(-A#VsZgBX)XNgObLR@(D=lVjzP{RfB_IbY%-*;ShsF9NvIzaC%e?)lT z8Z-MpN7q_s^4u)j?Oi7o#5>ybEhMu0+;DDgvfQnhHOjhuFhc&;drxe3#C{HV;LUiO@&E;)QCZCP8S)XZ-at$_;z57}ru4e+xn97n z!c2QxrDfS&a-g^8A@$|Hi5j2p1W@Bw{zp6Cv{j13KZVreRsa`e|Cp+N@dt7~_5zFo zf&S$%NSz3HOc_kCZ??NRS@{j{3G_*|^fm&U{s%em{LAze`2leMuN+9(>F@Kc#(5}- z_d9%!rjN0}r__D*(M}pSQBB9U;vBK?0k+bs6AJS9KYFV5)qgbU>qqpolevesh{M4Jfg%y8B%mCSm%16Chk$%+FF+Rjg1 za!C!$hu{0vuP-`dO?)0m{rCSUk@#H~+O)iE#oNR=RmjLr!~~(CqOJzKJXN(_FV>h1 zRdzhzOGM&O#>;?v{`~n92nX+evV6DA9B@}!R(Zd&_OznSutOaud^>UN@VH4YEPRuSBz*Y{JClD6`ofIOyw@p)CU|+`(Xo`) zkrbpy>Rf1rXoV;GZUE1PxOa-YGGh&SLt}yN%?JefS=3Sm+C+F*dF>qhk{7tqLXv&ZF#i@4?FytTWegqiD;FNqw%5s z-Y+ivMgcqgX_Ycm`bb_L9yjfN57u9G6n9I)}F6RiZbsnk~@6o3_RT2z41j@k)7s}Ngh_2C1=-e+nIeW?=*H* zY@+1jk>fAS`v+pZ#_T(8AA}cRO;wK@1ta|@&x2QZCV*-zver9>e~~LdR@=Ieq{|rF z9(Lu+8ahm8SI{7j{h?Py2A+vKLvig*gc@-lwhvBx7sn!laMu3IVE^NvxCk#$ZnXTp zLcQ65!vLm6V}A-}>Eybf>>Ra%3}Hd}GslZstI*5%n^udp;>Q&wVIjz*p!Drzf!x%7 zT>#MG@{W#|)8~`Z=9U)WhlR2BP2$rq$-K6@SEqidTaNy zF}_>mrKPKWH!GDJYJXrJg7@Eys`Xwj(idEZeC#YMgiw19j#qn=)elW8GZB> zj{5r()&kI!hTz}TzfI!T2Cn9L_Q_BzLYe`Q}P`_i5_)xz3;jh=f7kdrD zJrly-$8!Ey_1RE2VhbJuH@}DAkgANF9u_sl;wacCStTiC&~@nAO_pZ$>|3w<&{iIO zjGjX2N3E9b9vr;R#z-IMLq`qjCwqBZl$2sz;5mtXm}-&@y{*PF1+(s_i;@_0oF8wU z4CV?FAcc&&bu?Ir5_uDV_QNU^zPNjQyn`{f-)=~ecx^E{ctyf`?Wq+Dxt=!52pyWY zT}Z=7jtVfl^PLG~rqWTH%~9~Fo}B5Ac_n8>Jrk#{lEu+TJa@UD_X9mv8+~Vo-()I* zK#mm~_E#V0qPcw}uZdMmcbDhO9i{VFMSP-xjoX{I(_>e+9;m)CKTcM6l#;B zc6ts?=eppY`?6KOgu$)py(U~HZ?oQ`hYr}{%iR)`2f3i7B`pj~Vxi5)g8}F80 zA671N4U!0Qcw16%-yCRkc$!wZAiSJ~3b#6}wWIm|ftyYDP*PH&z*vAf7%3@@g$h5e zM-y@vPFW2tjArmxL@Jv1uiz}q&(E)Sht5^#6_p;0k1I1JBZYPY5?4*}7|p#pUu&Vn zlsuH#cTW`AyEB&c(nsi^&78o$o~%Ty<2BKo2-}O!OBk4v4p|kD$;0>mf7!?ordPaknAq&*a|AfzQ94=I@pyB9H%X~DGU5?)(q^31dN}bE0 zaB;S4sX3RUW%E}oW^loNX|5$Cw^2WEdFgK=^wAr#yWD@+e=!>Vyx%W{*kKNnDuXJm2zHat7aCt_AS7ZB4@6 zoqe2rM~|hYbJKj+EtVP^o8JAU{UWid=X13}8du^=oz+xfdwct5i&=@?5=TQ*I5@b7 z+~G9tDj;=qWVy84F0d&~h3);0B?nYmwKfArxFw{}ioj$T!^NHHOmG5X5t@<6E@OTm7D`cgSX`|+DW7rX z5o!0olkCmU=Hu}%6Mlvq1jdZ%WK_YNvpB}AeOS4-UHI?;)fVTEypU2lL~aFeL3sn3 zJm=`4o{s+n!6(udHPhNcD+n-o5o7z?X0C}8kh*OhV*DTAtHvC(s(c=tqhq^@Z+@p4 z-R}9U!7^{6P|;S-d_1nq6t1G@c8nYg`nId*Vn`R9T(^BjaYLF+`Ui%X(oSnBPFi83 z5p##EoS8%0aRU@40=IvCffVC|9hz zDb>J9AQuGsqu9H`lsNcPS~@RB<-D0`Q)L!=lU4DnG$otZ!HIf^BD2EHb^Gl#zC-zg z&JEQ5MP_}ld`wEwSCHSm==TnaTo+Q17{oqB^qq!V-d=(OUQ0rC9T8r5Y1FbjOes5TEUF?4Q&35;`y1T)c2rnV=st4 z6Yx*OhAG`;lsBfIIQ94XPmFM7zACh>nN^YN-k0GjBZ}}a_Km1*WPG%#7G~67bxCn0 z2k!PO8!m_jg$hr8D0xCy=$S8ImD*r?w7l2WqRAr0pP5cd7ojqFtCCJ5i3MJ)H(9$O zX*?zLSTk$#Jqq8Ic093~U&6S!J&wgR8q2(wUxgqsV<6A4v@Y3)7h|BQtOY*b)yC(u zRo0-J7zcNyubl51O$fj2MwG_p?gS5~vYGs@15-MIdj}XD8tQ`dbYIVde5VQ()?S`( zhN}3z%$Dt9>+9=fXr-j2OsZ3?AU-!IGaSc*^i_3Vm+Eci0PTq_Q7t)*ZxWFkBnp;L z0SvXgiQ;bJWeg`b_aZiygoC~BnStTIdc#C><0hd?sX(YZ^85s9Au1*uHG+e9R?G-a-%0ukckhM-2 z*JkU{$gIRMre%Lm)R)%)-bINh2&8=aTn3PmfxvAdIn-jrl8+O`icd~BKCg`ISf*nD} zP+HSCxJegThNVSYsjOenIJiL&St^kG^Jf=o$Hh)(GMfJe=BfuiU|uK|P01xQ9iN;$ zKi_m1&DR`1tiAXTNQ7dX`077h3^5CPo@HA>W?MZOaQHpX{_KpTg-dJ9z()C%G&Cy0 z#L0~D`l?O(nK~YwcM*KomT=Q~8Z9UiQ-vcxJ4H~_WM(S|RqDzlGlIz$z2|T5r{tsQ z7#XqT#)lQ-yv@(fGH(nzKxot;&@{!D8M~Yx4gMn=Wf-winZE8f+9C8(zc$k=)N29wf)SHD1>!Mk*%6Zn7bq>GsDfngSvx>Dx${r|r(yG0*!=8fo^3Qe^Lg zC9oqL5uH@=WMrBtMx`;>-|T-yK{b2c9P_`-L95VdTinn0yeqVwna#qjL;|M|pZjR9 zG#Gb>;2QZl0p5kfxhgFU&a5#Ti2Glu@0bw_MGfvY9&O?*CP59wH(6@1(`&F@s4-*e zBbjA#@Y(Gf)iPRyC3#dKNmx?IMbXgh&!^10>7!a~`!TcOsOaL!b7 zuQZql3B?3TUN@)!a39t9hP zRl0NDLY4pRs!qkC(bG)*6+I#Cc4Ls74f}klC!c&$$En|G%W3m^akM-~nbJNPZ@|0vl|EmH(QJ-)B zyDb}gafb;%{?Q?Ce%2oQJsi0v6nQ%T0`rknx_V2uDx#P{wRr%2KDh{seaO>$Hd&&V zQkNviLoZrc`cAyIW>KN56=vw;|6)=3AekOT`f@84SZ-6+mkPbGZp+-Q_-#Ix`7{yZ z@47ph0SL7gRzX==8L;y#D4&o`FrTkJeNZwIKefX!=6q-*7~^Y($C(#P+6=$E{U{QOiwq}y|A0f|C|>P z;6;+r_#(H<1i|by0eYxdp+hL>C?s7*^N191U0-^TIo2bE+IExSk_Thkym zC`DmbqrW$UNmhgH+jtbko6>WvN|_@Ca-NQHncKFXhB~f(eeby6=*}V>mhMJxrVX~V zLRj<6kAyWjLZ$c3Oo%R=QjW@XYVF&uW`W(`UwH#KIbq2`5G_kPweQN6mci?? zgTlT1^K&m^);?qcXYmqVE_03bzT1fSem|*=3@e&CSDYhh@XXh|SO3_C+ryxNDjXj0 z4?LDO!VB(MBdy#m=-CmOs^%#zza*~4f7`DtJ2F`8)zEm^iVRpv@#XdK>K6=fnfZJD zmbTv=jaQunYzV?nzTDbf{qUwdMlFCnSZ@Olq_=PT`ugxpfPpV78v^=-l3XEU*g)lF z-NWO|Cd^`ut|G<87hqmoE76 z3fNK)04b0>8A~qUm;C>!^(Er3OC3b_Hy2d=*MZBj;^bO4o%J}7CBG}syqoFs1AL7S z;6>S98tGvqo__-OQ$@JfeA(IZ%|qm2_9))|pfBNUsrp1P0hE}IqvK*Wby4Uzxb*3SHVz>B{HH1JDF_QuVs53}q)I)AaO1|CbMp%%rHSD;UeY_T@ek#;>x z4jq1cOZ{p*cYtLMY*S{91RQ|ANT@%q`kXQ*RmN3KiF6g&U1Z>G%&vVs!`0iJVZv!f z>K&DBPg>r~F;Q727MXhk`qSTvkWZP4hs}&z5ka6iqFv?b=d5$hHE@%9(3KeXq13=Z zUct@&dvXhd<|VK#k28|fPqOsAbJ^Hkr#&(L2ml_>cGxeBGO&|-RokBc?Y4i`q1+qP zkrH|%x7Vo$aZ8a^T8{!cG}EV_ZCaL78eXh7D`1uh!wUc`1R^1*1L?&T8m?%f6Nd5$ z>hzRo=QF;RuLm}S<7;&vNQY*dBj0V^ogZn`8w2Bz@*^p~#N$)Nb;LB5r(0>yPp0a` zBKcA|>mmyjR83|-MJeNI63_>l$mIaJ$!R)6yWyrq+w(1rOGx~^8uN_3-Fdd=*EbjQ z9|6*VOT4QoDetc^R!XVldU0*|QpD$_mMlt7J z0rHMi!#Gt|UvyCiwKQ?pv{wmJqWV0%4g`vtZ?D4*D3ujHAj!?zrE4U-Kt|I8uEn@tBWILJU>5Nu_roWAV41s_GG$zhUbM@i}RNPyNF18pKf*(H-^iFRqx9K!?iy`rp}( z(3xfqy!n6Ng#U!@Un%(?#OXir`44RPFLzwJ^kn6FTnr8D0o49t{%7UXAIgtSoy&jH z2#5a{t9mm!!o7C1e2%T9zrKj`_sz#AK&;>&4+a0jIPkuc3frG%L!oo4uQdPSSD<+8 z|3ni-Jw1_ig>6V^W{Mr~TY=t4czAe-*`1dZ=|#)Dza#-ZC4t~Uzg4NBkE1e9vE>i8 z_<;tLd(>X93|dZRG*qZNl3JmE);(#wm0fokXqyo&!3nf}PH>g7zLra;$XPrRt5poUwC!vb?a7~}Y<;qlmZjm|BYTNH+xm}%eeYru z(4AS#07S0(Sr@C4L$p^8k|+wN?(}=*S!*{=?bt@EvyfQ0& zY43>P#85_pQC%e#6V8k7u}hPKqCGQ0^KBpG)hiat;MPYMg@c+yxoTw%b@I^9R%<3d zn^xL+VGDcw9c?{*h!j($|EN&&*KE1;MqUeHeb%0e$AHInD8VmQIL&W_Zn3n@w9>uQ zKVDliWvJt&eYDvz

              W?TX_E5YqYZX#OVgrrMU*{?(pDbfzb0AzZckXCJLR=?!HAs z@;Mo4Jg#gyIP@$oh$dCJ!5Q%OV2UK>Ybx1Lc2{V+f*^8`fEvm1^ja5Y&AG*VW&8Tt z@MG1mp?tcwQ!Q5ks-`|qed>d~jWQSA#@JuZQ3_dr*`N9eyJ{8(H|Cl5u72Y-e=KYU zIoCM4rdz}0I+aUBApquDs~=sgR4HJk&6^aH+A^~O>aRN%?EJ%GR~ypKHh}{_xR&vZ7UMold0^u}kSBk-l1td_KI%mQ=i& znhV!XG>{jy5bk-5Lv2MMw^KTDm1anlybk z|B0~@Q_d(Qtn5= zC@36AkLY6uAi=->mGl2cnf$LM_kWbhztaCd$mRcD-~R)*|MyD$UoMM|qZ1pgN%@xS z!28ssZx=4?a`wnupGK^W6GJVVO7OkXJeyI<79|`!ykMk&7Eo_}%>^-Lrv8W1Eb8uk zrn6wf`&&`RUhv|>pJlW9pLB+o?#bLQKx;qt8sPPeDu@j^iFgX&L1t`i93*{ZFl4`$ z;Uu-WofJ`X1R4UxQe5A#FrOGHNA}ii^oDdQZW`$zJAYUdF4jhU^UV>VXmnysxBS14{qf5(miN$xK1BJhzy#`!>O z;Qqgd_di4Ef8);o!H!Nc18(Le9 zzDFU5sJ@F+g@__rJ&}V8SPEzh5=>=jgE=Tz;|dd0f1r2OElbn>ld6g+A}UK8WVOPS zkFNRyOEkg>zNji5OBK=hj<&!}<@*C|!SKQ7r`#UgwW$onn5&x`Xnp;9I$$k>l+SCU zK7o5C{3rM=hYvqjqc5$Pljy{xyinx;U_a7Ijkl}hb%OR>B#LX zfECmrq6DIdV1>hoA6;05357&28q!uNs_(2)lHiOHt!SIKSDT%dF%J#FQ@pH6>6-`T<*^E`kY2S-adtbo&52Sjvdc|Ll}AZPK`<(wr1rH zJ=!efm-n$m78DdtlIgKzVMrKXxp;ydWPAbYyib)Yj zBH)6JkNf~35VkO3cRoJj<0Lj%!T5=stQ>>SVEj5ZRsv)gLoByLLl|t6+AL?0t+hWADiCldrd)t}EpP@Xg z$uEDY%x}za>c>&k6qdzguqj2W(oq`;X2+PBjeTJi=#vKbir|XBPdN-K*g@uIyN-6%$Wu-dj84{u|wr_wC2szrP8$uQqhGLE7Ai5ho{B911Nm=MnC928>_6MsGCyb8ZDrBy8-RwF_6pIrNhtZ`?|X zIC;7xWOx~B`7rC2wGs=tGnx>&>$R4&;7q2(&i<@G14YWX-K6tIMd^>gDdpy0`ldw^ zhxy4#o#?#geB4W+4A1oo_%+L`hTCejdnBJ4<`V@6{y0KeLK9xA;{Xy(9k#CB`jTXZ zNc~oh8h;fU0`m|i1(g|eX72v*-y8}ODhG3s%=WJZgg+@tu7CCOF0-nQ|M+^sD%6P{ z`Wr6xOf*u*j;)|4aKzvrcrGS->lnYai6-IeaJul!=p)`a1VZ7b%VJ-ueha6B8_@FX z8#GEh+b|G^Zf^ig^1fvZ#X%@VLHzdMF6YJ&!ee1>DLLdBCOUo&e)^Qveyn`5t2YG> ze(n#sZD9^`htl)5iSiqo3Fsh#)$6~Pyz5D6$cibSUFP4jP6+LemFw(cww}Nd5Hc*n_3Co&q*Xum2Oju?%@vr}w)$1MA zciJla9P zy7-L3#M)21s(K_u1I{{ghJAX%vM=G1w^JiLE>g6e4Valx&(Kbrw|mc%pb_e2=B)NJ36&5_Ss z_421k!&SGkT!A@ypHHc_hEy&_t^^lNbo1A6ts|J<3vg`rO;e0iFljCME%}&PvO$o9N6~M+pp8RmC|~wK$bB z$aizAXXGo7O2t*!o}*N{K{H1JJ)tfX`Me7+VaZUsUZes7_0dM#c8``H`0=f6nXl=j zQ>RyNxiYiXNlk!4`S{!Jv)Ranvu8C#nDa0^S}XI(i9|3|CHLTg^)@`yFH9(Y^Wd%~ zV4zow|4*yt8$vQrwDNg?*XP^Nr4S)^yU&vPf{AS5VX^A?o8q%Sp#Jxc>|k1(*~;1y z2F8qn3d7vzUZv2}j(QVC!nqMuF<(fsetcBh!f^Inw;rH*UzOduwA9`Ra!=2K=Z3?t zqY2_@dUV3#RV+vF-@o6DdY`IVcu`23BG8fp)l|UtNgJJ_l*?6W^*S_z>Jc{ zY9s&7n@=^z`Ns^v%RqrR~>AX5%1yI9K20Oi;rR@ z7)>$Z&2ij_!kg2T7by|UYaF4 ziGK7ieDfPhC&R6tG>H=<-)WNLoMf75Q6!@#?Sw{=NrUA0t3fAF{3I(k) zg$Z;PhZ+1KlNY*yYx}8s$sBGTJ$s#DW*|}UY0Y3S#p@LNk-AU-%;I$(^12nWJuc|rIk-% zD@#j@F*V{tZ}JX?jHd3z{dImZskbij8}NTWs3K9MkGgC{wy_psMpi2Y@Y3K9ePQea zcU-^P16x$>BDCQQ&>d3cOs+R%FIhuBj+P^$SIXr;UnD~K8=b^sImC<>8m7r-?fS4 z=})efL}VB1>mq^lWL;QpxAk!;(uROIG%eQ?sd$lbMCT2Py<{NDNYav8%Oy3J+tmW* zl$@4Tm+g5(zO(c0#PV56W|-v8Sk&IaqqHIgc_}SECPkBJoJ_DhSP6N5zx>a#%4;mi z!US>ob=S}Hd&De_rcLEMT;-%hVZ%1N+i<6fHHD@gVm^6A8(v?xQ6t*u8m8N>CLpF_ zvb!YS{74jMZ7OyfIMOsImVOb3dcAyB0l$hd#g=z|*I&STtY_~cI#m{SzHxP9b3S~$ z_L!0XRL?F`wvDa9t2-?=&gG>?0*(0QyPayKHi*5sldm~%nmp2LE^RP^Xq!c-SQ^-^ zyZh6^s8!HN@cwXB<8dpDH#bt}c=4=wVdk^7_>+z-MWdC@bQ}*kt+a}lRHXZ(y6(Cn zms_r9!ux91K8^z4t53RflqMAUM0hi3XwteHZHx^AClMX9b(TY?74yCvlTUO2zlRXtC_q;gZei(*P}dqt+^s@;Nhx=?jXG0j)js|7V{Wvm*%);N}%>T+mcvl ziSRQNLZ)0eAF?y0T%V%YIb{x7N5~c)4{~NX$MDiTuu1VSn}3*CIbC{M&vg!`qngnu zOrWPtk;I82eirWu56Vy6?U9`P{P4_L$>Q!U*{Vxh=*$6CBOV%1Urk@hxk5=Tl%ZHq z9^_$_%(Zt2UplJPZ4WNOoT@li^Ly?G9XXWW+I+xX>2AY@_FJF5ar~3X?;w&M#@dt$ zZ7A8QBoGf>Pl_>_QD3me5t!lozM^4sLT4FjqOQ1;Nn~EQ6j#qJZ|D6>A+y;U=7B0! zb(g@)a1SvcMf_Z?NUY(@LG3{*inH0xsx zALtG!;H{}D%*U_E+qV2?in1b9Drn>iAL(XkLfMuDO3Lt1#>h2DtPP%y;zLS3C6meX zsAObj#W~62rhV96NR`qLY&DWbql3B$Sji;gq*dninCx3V`$Z;TP0quXBr`p&v^9p_ zqJ>`+9ubdkIu(=&nnEr|qbu0?x&^6SB3lwCqFCM_(Z7K_9>}vKY>faO6|yFXuzgxQ0pvun^N8tiE#GQJ%=Y1a19j z@tJ>I$QD|8A#9TUqmP8L`2Fw~@ZL3u7N<>xCYuMhlTA4p4}FF!ynJl745_3lSmqej z*@X4h#Amct-@XM&hl}Q)~cd~)Z4+uTA zpk-`DF&QjjsBmud;ML+lb(V6*GT)m=DMla6#&HAj9i}O&DP%aB_Fi+tUhMVii=La= zPOZ!iJG}=5=O>kC<&6X?<@(o_k+{sCoaXm!@+l331=p?%bZa;Gh3r_PVH4H8Rn#n@=_>%aQR0 zxO-}9@nC4GC$dV?S%4LR9lJ%8wp>t^0g;bYzolmKemd>&)VJ68PUrsszOa6I@R~s8 z7~y3J+DNqXB(_je;y`gOt*Pwkak2u;;Cbe*B)L+kk$C^YrNLa8yE!5)6kU*LW$yr4 zL3lIzd8pSotP+*N%}1!PTTC&dCudO$8f^JO!;8G)bxGH7T6uDnJ~moAxBjXoGw9=7Zg)h&;#-RAmk3+zhm^Nz|sX zUC5PWQ%50XE#3TR(quAJu}qrGRv9zcs8+J_o8jn4I&VEi?D0#|y9n4(a-3HQ)(3QQ z*571t@;CT8+3t7k{VuM=V@qTs@j01pZ;CBrwq0`PXfgLXeB5@5dmVuSI{QEp^ljpo zdQgiuG9vjwA#GQ_(N7A3@RFx)Z;zJQOm!OSMZE;xl~^0*eM_5(IF$myK@)IgNq%WQ zaLH?=ma=G=5zav+IhYh^* zLU$W}2w);<5|IK}Aca_{4k?1|*0P#Cb&jS;Gg~YT zT}Ow*3NMQLy685eXwzxa6$3s2Hkw6x^$%GsTT2sFL^WH1jw>{Kou9^Tkz{6is(xOF z%1q3QdNWX?d2j1+9ydCV{pRo684Ts<&3}(#e8I(L#_vz+`5fUpClL;tt9MvRi=eD~ z@shBR1}mzn(dK4OI0!ul@{k{9v-e5A({188mm)Q~waC)-9a3;v(&HeDkV=^T`P{dv zE+_ghUe7M<0s9(Q-uUP1wGDS2vou7s#+oOpBNW+sKCCT1IyjASG!WjPCR*#K3L>37 zX6DP)SqBO4+7|)Z821kd2#F+V^O@JO)o** z_i~!Jvn$&P(c_KAKYBXNvcMZGMU}OjOn)avRLg_;y2dZU?3RLV+?yfSUi*TYBI^nM zz$H>}eq;50T<&nIvBKrf4deZ3(Y@hHJS0_p)JkI$@x94oU66}p#8q-^*QhTbKq8Zi zj3Gd%Rq#Utdv~Bxm zt^P#n(vqFNrmHez!HoVQMXN4TV(4d=$nM|M!`##bno|rv$I9YvTLuju3_C(0e^_?y z7^Fk-H_mb#y3(*U7zymvER5Q>&#Sbd8Ph1CoxB6D(7aA6t~DbwM@Ct&qc5y+ zkL7xV;M2KX{Rw7vG|nT$7QW867C(o3j4b|ac*<(`pr9_M9NrbzNs~n+O?K?-3vRt6 zB_uV6_RaIEs2j6)mn)b=O=N>>ztXDeOd0oa^x;7}T|#i&Ka@5de|Je%e>zhe3rw1O z{v7Eyw1514mRD_-IeZLzEVq@ZM~$>a@D#RTi^MXFB}nio;larD-$xu ztinkc1aZqN{Pu}_ZA&hb&@vJe;WHydfID`LwHOt%2+yq;OD&9oHXTb*Ue^bjh&A8H zYw!0X3R$N6Ey|9S>AbW#{AeoSYnnYOZt{1wgYtZWJM=J(LKNA=#`VKr1Yym4>b_oy;!xzPfPp zAv{(0lN_F&8g=;l`S`SqX^H!0+OFN&`+QN76C8E0_oaIz9K0$62hPjb!&uPM<}1)f ztitA&exf$m^9WbAbP^L}jatv5geLZjZL(`HqIft!H1tP5LCl4+px0W-UFq}^MnXw! zOCgj`J9}qx%$HS$L>(7jufzJ5^rjmc>B1%1&DnDI3Zty#sR`IDwTof}3Z_&?3R>>Y z{_IV(8bbNGj>2cYq#+b znQ+@?QEd-;_ z(#M@eT&GVO1JhYR860EI&|~2xTYf__q&>~?0L(iZIqHU{dezGX>$j~)#)gre09++7}P!K z1!AQEkO*77wFhxGUHI{=yQ=kK5SRytbnBM>@cmw18n;6Og)b0$b5+}QP5}pE z1<{Pt=5E-J5z{)AHzI^ZtTNHxn&_-|-1agz*snC(ukZ~aYGM831^_d^F2(H@Q*4uwbVs3UC}y{Izfhf@wAOsAZ%HI~^t99qxuC2Tb%i8luK}v{oRt0Y z0Wdon8+xe+Rk1`L@8>%FH>0`BD-3)qrJ0Xvl@i?->D<*W8f2P=ARS3>bf24+MMhfa zLJUXfLuJZRu@$>2aCRev9uR=gr(avjPKO0G7FmAor>kv&(mcHLO(i?gqbolA($nh( z&o?=+)W9nw;=g{X&a%eR(kNC9yB`O74q5Q@>zpH(=CEadxU>7<6KZ{}Q?h#{g1?B3 zP2S=C_3;uAUhU5500ItO0HD20(G($&tsB2EpHpo^Zp2gMYgMeqa|5-1j!#SRp`Vo4ZGY)=7Iwb^WuMTs z18AiwTdHgU0e-C`k3hil<3g@tzY5}@Hx$V zRa5?yf5&i+Zgq09#(IWsih~fJT|z}PNBIlJ$#sHan*GE7jRp9qMIFu8F=V{_dqgDn z8a16_M5z%~N#Bj|4Fzy)_p6GNgv!sMzoA>>wtwX9fjba!Mn!-u0+^xyFX|1KV=QH= zxb7l+NU$746s&rRY`X(9@ac#6RXT70(RCL4*x~Z0|j;NbyN=p zl08@L@-P4310zdaD5vclqJ17}{k>?bDGM8xlPiqv=jeG-sz7rsp?rLeAU_dAG1zXJ z;kjL!yJ(Ry!bmc?eLdiuhJ7uWqmWL&y2tgoaxs-^7zNF3*qBY^L-Fsg5m$J-{<8wg zGdb*`&(p&P5E&co2r4=iP6Iv$?}u6s!Ra>00>*84b7f7JUd5SvM0FXDeA4ona{tjG z!WTv%WAY%Ln_6SA_k6CsF6Cg1*6Q_}%lPY$Ttv2xIqLkqJij7#TQjV*?Rf?Qsl494 zvOWKR;*oVi{kS|P8nB>O)nr~?+FRuRbooh5{c&bzyuq8A?uS6Ccyv{_TZTVLUp5Kg zC$P+1wlvKJkkb+r545Cl3c;JHyPxZ(R!G(mqj**oj*?OTiqviq?1-fn0dZT5?Y;!B zpdxHMl^e6ox088QYv0xd!ag!cYax_CM;33fI6tWP+va66jGFrlu>1&xvYJhQDSnIh z<_%%P?G}r|V9cBP{ZPdM7h#)4Q%*E>w-mUU+~bC*-wRP7qz!a_ut&#y8R!*-ZH4JCg>W)gL`oIgS%UB z4({$2+}$;}yA#~q-5ml!gL`myyC={4es#aPe{K~&4s~Q^@9F8D-D~w~MB!mb=BZ` zdMl3)PIO|Wm+*K$oXIe@Ls9-ScUr$NP(=xc^-@`dh%!)mD4at2=KxmV+1=Nu1|*n+ zW9!tFv`??Y&xR+U>pNrUwW`(Ga_`6e&B5gVh4VKxHaD9svuyHx4`a`mmLV&5N}Yj| zR#pS#B*`XLNNpr1(xhRRG|4&xq~N7XK-hk~vK0Ewodqd$0_r@bvJ`+4g#D8i@xNCl zmn4f|c9D^e)W&&J79}Sy4yROV3wg>}(59T6o?2U54^n-AW}Uwa{S{jzys&hr9PPH+ zdJ+5a?=`cKd(TT=@5IdMzD8B#+f%5je40jeBmq8iqSC|IOq1z+qJ;`jMd~;IX(j4B z>O4C`LaKTF(c;DRe*degE`zcosg#P556H`;$F^w}&fwgaPVo@( zqZfhsiPNllBzEnT7b3PCp) zEamIuq1B*?v3*<(zSFVIG^QzhyF=K+rc5G!su)z!KMqM5oBS*`cA|XDgvKL&Nqh%D zlves@pwjJ1zGKl=c*x%vljj|lM*kH>wIw0rzavjK?AC}~ruysb#Y$%S>m9~1sd>5B z*u&%}Vccx(j3HC|;+w*0|M-8ZU6~AwmVVeMfXHSsU34wpKj><+8O0|h%+PQEJ`7#1 zP=Kk1a*k__6%e4nM1`F=^rQih1(`!qQ8JY@V9d!99x#I4iU5#?J=Fm0KM_1Xod<;^ zD@&aMXHfAqn)>ek(Gb7Znukw1AKf?~y=?uJ!+NJoOk6oWaCUmLel}+ft*vsnzI#1h z`sCJV^cr>FuYDr#tbs7POu8 zQSU|O5zqijuf`U`*irW7e|t6$y~R5lf96=-?*qeFCMLW0mz^wX?8?h(4@AWlPmG4Y zrA2o0N^yWCCA{Q@DLc+OR}Rx)bw+CI+kWrfPwlw4Q(m|FVwSKl*icVqnHR|`o-dYF z?T_p&M`Tx?w{cvDp>9)h%og{ve*ad5z&u)8m0FS=Fj?!bOzdtZT61ja-nU{GV}SRCvV`%d-@(3^ zD7PSv&8}7fv|a&^ZDd7V7h@5=XxApK{+#}G67|=ErQ5Ey!7!S$UPf2@;b_WQ^i!@$vZUms zoNNUYafwN0+yt3GSV5`bAcNFy`4aJ{dkYrP`H_~@F?%%v>@-}OLBG}<728{gCZYO2jWTpQ!Fg$m#u`^Tj z2mK%$1OHLW)RiZl)f?u1`n6GKYYMs4j9pB5UcrC}UpgwQ7U-1tGm=#Q`y@dPT}=iJ zHA2FA4ZjmQl8|4=OY^RU#qX2Y8gB>n>r}6*+(xbN?Jm|8)gmVpI$%lCED`*MKdK!$ z$g>8uv>8o&KHc~2=}2;b{PRZsBEkSyZk}!@$xqAdqGTtZ+lA{@8)?#%X-kbGw=(Q( z3?3(-zv<)(i1U)IqFP|#ZnkFp){Q+Js%5m54l^6BV3BD$0g(yv!uKEn7p^$|c3XOM z@GvC5MAui5{M1axau2Jb3)qYeLchh@5TXh&LIL*TZiNul$vY!uPIXNhWo)C|N{G97Hi2!Kf{6 zA)Y~sf!jzHE26b=t907vSjl`Y@b|VVvR9?amiMzh*mn==o+z*fCF03Q>_>CME6wysjGo8cUK?(;ru&*2hqt&>g;-1_*mK#2zS5Zx!imF<^V}oj33)ow zTPSLp1%*p@7+OBfo9!%d3-Q;8Vy%>t7Ibn^;P1y>r5d+ zEM0E=*dgynJZM_XutMhvYk9P}Pj-1G9QNfjJ2SJ zBbTe7I%5xU$Va|QDC@P-80)diJx?;23|gY8H9!58^QC3XPZW$_USb!WQB{HTIYv3SPHgNtH)#<{jaZ3``ZMBSv}(I zD2pc*z8f_U0hsncm7eFW7@@@%5P-hQ-!(%#o|)5Pg=_t3?Wjf{n>CBW>(eobKo&2T z*9W!hF6PTl9{YfAlp-TN*(s{Wuow2Ux%YBGBv9oP%0~LP>$$*ML$WwI3=m4O5l;x` z_dymD4u}RsI~v=vY+_lI#HW@?azs`{vyFtC-6TTKEnsQ94;-qyJRpA$H7K9()8XJK zxsp})F^(F%UoUxGEwN>dZA?M5;guFA8MjI7qFs={&tVkuU$TvHQr56uvdv0}h}2g@ zXgyqsxcwFEOM!54?mWLacmsjdHAlk(=%Xq;Q-Lb!VGv}tDsd7~<4(|I_4Yx^#JoB1 zXq>?%RAyG1)Z|vE>NDq8v@p)a#(RJabQ9B>W z{FY3RZ>N&^RiU{aW#cfxh5LPnfo;RQ>J~@6sYMSur2etIYWLwTCS6Qci3VNSyt!O# z2=^X2qOf!-egc-WC zeqzLl59i?XjyBJt{5hhl5B|4mi;WmwxdE~sqnOm9lFWutoglI`@8^w*1Z9|| zr{)2n^-(vxJ;$oEx!2!EkMBnO3u;nNP3qSP(IjN@^k|2+j`GUrg*`@Wl`?8ZViY(G zXY(R>$0MsbW1okqS=MTB!t+bF@`hbQ33MpVgX4iptF;XvyQ^WQnp@jBD_3C0y7 zKSAsU`*1H^;t3!2yQAoLA0)bVrb2!yT7FF&m`_WpH(-{LDe95~x%Ok`x^1*=daLkdSB99PP z%8Ub9*#2~WA0X>ErhEl32afTSO;W4JrrHNwet1^pKKjb5EGqAC@rXeszuAd9((X5V z=ldDOcWN2FoM@5u`_dBpSHIxFM{XOeOrCP3uO@1xI32zYHdq7!mKD43)Z#n3Mv)>* zF1K|dnMLkO8w6aR+sL9a{sWfb|fMQb$6)j$uND*2t%4xg8 zR2qb$k`$&3hlX4>VIw-8y7@RQE!J$QW_c~w#1r8ep6bfPc3Qq4drdQO1Y3O?ka_3aY~?zTbv_`9bv*%~kS@rRDD9A{qcZ!LeBuXU?#?j!dv(a$Ha->TD^URcJ0Qj|4auuzTaO z#3Y}YC_V!bW!tlvajWK=P|gQxab6+Ph4KD!BE}D)hfV&m*u5@{H`d0J?&Zfom|tzu z5KwSIUtpDYEeXkW1li|-Y(&J?(t;wLxf>}a{PisOe4B8iBY*JmcOv2~sNBxdn=Qn)G3R6MRoBy4Qa!9Q z;Yg=l3i3qXzQCB2qhoNQM76Hjg4NMS-Qshv9st2&K=pAon*hlNG7Ct%6$ zKc<^-?8n-?K{cli0EY-**xn`Uaw7r;0Ya(^9UQPI%JWcRp+tB!uy&}-98r{k%dUi@ zXd)iE7rt@aEK|TBXPDT@rA%%UHbZ8P322Q|s0*`k65(Jdh`{{%p)p%|dOv}%fIaS-Q`Qmg zqn6=PiF{KwvG487y(KNN2w>|h!wmf)N5)^cJ*78Vay&)$vW==Ewgh5hI2-BhRlkjg zU6XDj&dl^bD)eh7rO-Q25Tu9lxkHS{ql2yjNLDJ*wyH&7#}B^)2%)9?LC>je)QpuM z7Y zR+NhA6J6GiUdsesnt2d6Zc|B(2`IpaR&;Mpu+Zt z#}?MO4?7^Y+Jq(!)Atjk<#i3mM*fG<%e+i}Ev#K;&2EPea* zGX<&<8qzd%82NI9xEG%~4D72z&xe5*qe6*Arr_`FM1~$lR7r0t-&Oe3$*DR67+b}A z$~Gf|5sNUjaGkTE$ni`U`BuI? zCYVhSih;eV90SlT-PvJ1%TjVbAE>OnIwz zdYcBrvgU6iGyESi+{$4)tY87EhHxJ4p#q<&-#h!jpngcAOpx-W_5V$SM)YC$EfewG z1qZTG=ISM5nX&=LFuxww5h6JKuaZb|WN<{PSyel0rTp>IIZnJjtjTW(yxz`T0VHFx zUx_{K^9$O)Qvlr%j(eEUSoEOh1taQ_YLRu+_mIGrVQ^v6vz$P>Ne@5$6|5%Rrya|O zK8A}kOj=Wsz9}3VLP;=TVX;GK6Y+q0(sZ1W8U9N`XA`iNJ{g&_VK(&*qwGMsoo!?u z0eGWtnrzn}8PPMsmio8(yI~L`@$x?O-*)RKQX4`XZ-MGjP%y?5@^E{le)l5zUM}D< z#H|LhVP7cV6*JqGGHYbJ>Sp%3<%NsKand}z`uZECL;HPS7p8C^8WM-Kk^L{K=dCX_ zr#WGfqXU&?X%$bxge$^Hz9zvJ8N&y%)p0lJdYlK{zhxvAdaN2pU+evLc+@w|J~ryX zy56!U;$qOLpJNZ4Cp%44qi7Dwag7j&%*>!mb&<=I$L-UXQa?+MAqLo@k6-{q_YPR- zJ3AZ5!S%bM*1Djbd@1F46XJ_%PT2nenv`F3wou^6F8C~5k~xNi?&?(xPtsPYj(}r z$`iW)>I@Tx8gf#_oH{Vl1u1IJYq^u!1brML^w0@~bwE}pwlRlaORaQ2521)YA(kJH|d(=;Z7ne<_vBOtz?IH@f1;NX{y<*oV}dW4y8upm(b=ajs>!5vn4 z#61UGI?5*Q6)e_(mdWIxl0hqmmOqB~Sk^LB+!#~U8nxjMlwc!-k54QIz{SAN>3Vt@ zz~Xmym?9L}yJiSIwN*wz)?|(a1&iltvk$@^&4FYp47<&o21jpFv%N=Eo~a}IhTyfd zu*KU|5}cfIZIa>_k9-O|tsUPY2PyxK>SZ#f{yCiugeVU?`Gw4N=S0Z5Fvxo|VJHPQ zab_qOAWLXK+s8RKBn_M}*a){q^JwhU#b)EIBjv6uC78ca2x_zT`RwQ0Y$$56vZZJh z?ibHr_^Axn<`(N&9Kf_NDD&_9NUEi#D+rE4X%j`)-pC2x6Q?5}Z_>Zq9NNEUn*TB{ zfZ$D_;WyD)zZ&klXBs;=E9z*Vuc5zPgmEu^eBup-3=n~V-PQvKg9^G${!7u`EFT|BqNUh7(vX{)XR+&>wm z7=?mdH1&&07NQy;qJf`X!MbFf&{_@CX&Dz_bE=+6weo51uaMhx5+=z{cEe(672!w>HOrd`;04>V{ILm>7^gOP%%#vvaszz*f+}0NE8h7G z6j?hQjA>O1tB)-bbt=?2`mXX5252+X$NAEG>+l~c!iX7yVUTlk&=y04ZUY^3mr`@# zc}N1b6$xqZe95x52g*mJ2= zr0LSG_PdTU(ACxTIjbMN=)4sC=>U-t0R^!`Rpc->TbS!taeiIqjcKQ)-mLu|)%%1n z3r`JC4T_-yaxy!HM4d5Tqhc90>&FCmYZt8y-gdDg2H-$vggPw%zxo-cV8H#c58eEZ zy}kRtk&a~ywDtAw!jS--)S*l7W;j z7xc$sodrhnblo?IEMBePA_AcdNu5bC1ddA)EKY1oeTgK;O-VV;&tuNpGnj?Ki-J9+ zM}lMjTQ2{`jt&rh9Ebem*rE%`AuPmBjIbs%!?!QqqQo%;2k5;vEW1q*wxX=U3e41g znL~eu4S|A=T9fliXfl;cJAWGAQv(_l-FZ<5`>YQYxdj)(Wr3F9!WGEEusJ@)Hq?!A ztRVQjKQRHyh^8Dv!#gj6%jQ3p&iO2$tk;QTYW&Xg+i%<;i-Xe#laqNU%9gcfF&iJ0 z`q}9?A3Z3=v%t?TBuks_QSy7XfM=TdMcZ`#yO$pKuZoGoM;J_YP=a(`N1I$brsIiehxKqF>tOuGe1%@O_+78hb$#~6{k(ttlb5QV08SM7`TSy~n{wxWxG50XV3m%K3(NPqn zNl+MZ`%t$LMiPJx#8AtDL!8d)I6up{fnJab--1=MEWz>N01otDFbOMFi;I)Fsc&$y z-KIT5rr8MvQA~9>t3W3+{XcK%^cXo$b*T#|8%VTTgw{9~_-f2{O?#RLaM?cSh?7I) zJT*^M&kH&2S+po}D?^xqzvw~6)vf;t(vj7zUG4^}w4~vu3npKae5u(;Y;Q0%jX`(z zY+=A{E4jc9Ed>a_FkikC21ZP7IR}(&N1BpRrY)Y z>2xe*L?f!%U(3U&D~!9xapyf}!I#G{lr7$ zKgK1(YLyL!ETWErny~CayeGF;5HGcfzOt@W9LU4P^;k&!UZzUxsqO)U=i0yd23oL% z*WcEHc!}MInz~`BW`~mUFnKHRNh#~$s)X&W0^L59(JRxa{Qhm!ZFeIz0cBz-2m@q4v1bD~ z?`NFXnY4yE`XJrQdS}BQ?#3BS#J$`#`d&Arh{h}=u+Oq5MU3-Lo0>=qaZvl^AQ8tA z2z}tQQ!7m&7&aVoN^hCAZ*x(wFaK7sK6FkP*U20A2o?lc$Jp)!}E16V9w*@%fE0l{5}av~iPL zZ~SMOle-`mg6G|wWFRvR2}@j0n{@dq9MphekO~GWY?Bk&FQ<56dU?>PJVdUCV2UrC zK2S6J-yxkCf8FT+Z~>r<9U=ZZxex6^2KfymN#!f2v35?Sz;gi&oo9&iY&1J%1Sf8*wkDxj4YVyUQVSVnKkDnTG?t2 zuVR|&w39zX0D@fKj0`CwALD)Em%xbcIuTr@yx%29pfJ6lrW6&5m6MLwu(BLI>AQ

              yy9UHFpknPZYXeflIDcHa4AmU!tVEa*PMHs)fC1&fds1dSc@QTxvJTUz<5 z;J|-=Eoa7WwcyCn>@w(PBFpuRR=DlK*Hn^$Aa(wA+@g3ZPL6_i$|)MvuiLY%OJ-xD zr5((_miZ{3*)v(;%u&kvWvEeP3P=*qkn0vXCj$cA;!ecj$eTGZR58${_rz0GoL9JG zFimQ5jB`C8u7TaJyq7u0eKm0O%Jj|N{;LoQb|WXNZNZXT?na~P?A_UwPxPQ$lA9Jv z=qXV1QE z(2M`E!2iqY{=G?ps@%tZGD#Bhwh#~!@-J`-(-VOK4nV?w2IZ>B%0^II@1mOdWp%E? zkN15R_x{iU2L}iLv}6Yd2UE?^(lGvwq4~y}tZZUp;=bXUmdtv4_8S34C-r`cZC1D2 z%hk=z&D1pHe?}kL?Y?`yNPNAEOIBTZR&e!`NInS@y5Dpd^gsDSZp5YAE2pO*^dwY# z_1f#L32g7^;01{k@$<_H071J4%J|w)Hm;%Y^*qAJ%~Gjm$+4Wuf_nJb^D$O$=`7jR za_&8gxMopX+&+)|=V=G#P~^Wo$Aup~Q|1oqR3EwJ+1;%?YENL@>r(RG_c8xHwA*v; z`ILAGkKsOTwu*!Br}BTd1SVn_vL6g5xPLW_O6R|QJG5KkaaMB^Rl3%Uwb{Hzb@Sgt ze1Qkfc@#OB2?;lt@LH%nku@ALQ?`{x*2$3g4+K<#o~Le(e%#ZBxy6p+Sa1n`2uQ`v z*^STo(@#g3NN|fjH15-nI9ES)MDD^qj{g<|YuR`b=e77T4P$NM!=LRrDcQ-z){Px5!198D_PE`3;}$J>WjHbXhg8p=m(6a0vQY!_RTY8`gTM>M%4sXuy)i~Iu#7_Iuo|Sj0{YE(8%B_ui#;qXXF;~JKa>UHo zqu<}y`?crxqkmJv;nv}26V>I+^ndR=;k&*6v+(C9&H3k5%j4(Ukiex(-(M>F+#YyB zJm!K;;XEHd%uSOtcl^I$BVIw0=xNjT2}cPgK_BNXjw@wRcd1$HqM${`j~)(2x^Dbz zbzSSv5xO@sN8zaLX}l`5*nD~X-1wUlxABs()hIz_jJum~afc{F^f<#@f!w&*QTyYv zb4xfdP{=}Q3(Se5K<9m?JIzMD#dW=Aj(^Ru8h_q_>l(ur12&|GTz?_0DU6%;=!qDS z@C~g|A3R{9MWEAf7n|s%o0?YiVY2snd%}7Pfqw=oH9xt5`HT6Zyj7;GKrqu)zWNuV zV{-jZ1<_&wqBCUQFqZnygrPfo<$=4Xir6`VR&w^9yWAwluv*A}`JELU`rH&!OQg-T{~7?E17@ACsR>mkRzjPoLKa4N4qZNFHHr$`#wTQgM@m;Y(f28QE-7 zQ+Hu;9#y^VkDf_di%kfixWvg5^&?~9=H6fBk28o0mb$b52{9@J_c=cwH9nvOMENmb z&T}sYry64U^!&r6lY&Zc{8**VO3yiSkbX;Dg_A0{GeMB}81P@9f7?vp9wz^4b!TR_t)ZP8w{5jc&_AbI- zF&0b z=m}sbX^IyPtj-B4`v@HD3AU>n3ao;at@ZDw^Qboh^AHyq%#b9$gfbvXa$OQ+cEJO? zMo`hze!VV|<5{;xez@sKWy1Wh)t+D;?lXU$uV<;)hU~*^$H0$xej5GTjo1xu^YqC9 zI?hhl_+37TVEJxP+G&AWB(x6o&|sQ)-mlY>I-9p_FRlS!MjglOrT=+B5kxEn%kaSr zp{C3Aj@)Gt&>-t!^WKKGNMNaWzZ;34>BExTkA5CWS#Sk)#Q$@FL%Tfjt&f#9ZATxn z(K%2w-%jny@}TX&8+R(8WdmsPd_IPjP(F-JgP@0WDE~zbBa8+QU1~Qj@W$J`*2|SI zhyf{vme>yX=|~6OMwYlC%~TJvy`L&mw1E$OEy@#X$d7|vs*XsHxvv~?rz-Mi%&=7^ z6H#HqY@W1Qu~aPIRj^pAa3Xr~xTI<2uyGFU(&bmm6Ci>Xi=xAlKYYi#t`2KO6>5*| zW!A9|law>Dr2MaFE;QwS4G5eQJSU!P{elv8ci`_|UD+*wiU#JsiLyAu7lDH}#U2YDw6Nz*v5dahiw+rK3qmyc0c`m93revF`;Pas&3Jfjp0&YHx}oQyLI9v%)o989sn+9TFHTTSWJZbXkN0k!Kl@a zCWeTD>uy;1Ux1pafejcI7hE}-M;!kLkF^DcChh`aRX5}mjNLb96j=Na*OPWGcb~Jy zOenT>gkB@t9i232#$N-p#StZT#&IKhkHv6bQcuDA-b7L;8+Bh3?fqaP{pJcYbf(XT zrCPr|x)6BuK9eltizYO-cwQtx|LQFgn0>elrLy*|6@O?LuQKMQCCj2KPNT82KJ}jN zB5cUPC#7*QF}2UU6Thx=$_xMl!|I(akqlsfNH#oY?Bfd1Au-<`AcLK3Ha{4W^<2~c z15$bvuy5gwj$h82nla2= zdRZ@etabB~9xBv;J$nd-v!@|tT$M<-H7TzVSq`ic!b!6mejP?N9~q((f?(6{ePAZ; z(~iW``z^=X`>RhMwP={knUn%Sg+LO{B^+&f1e1UrA(Gn2>+nS;fIe{`iKBK4<%~(R zN`7u@-K6{Z_NKOF5Q`wNs1hJ;x=7Y2-=&UlwnP-Wa91vvW9o~>iQb{1otgMZVQfr} zi_GvDq}=NUXH(p#RH{{B^Z--#z|TfP8f12Mr?bb9THyD;*h zst_0dyv(^cQj-MLG3M!QK1Xcb2^|beF*Ovw$#?Z35H`AZ_UU6%44jg>I5EF_I!3vv%Kpm_9NER6+b?9bhgu z?jT|AmqmU`$5!_D-*%iEirMR>zA0z_)BkeFVN=$J70zdzbWWMUuCdF4+h$R4sWsRW zyEqWo=`A34{upw)1|O}!gGiq+sz~KZFxpU6hY`kw^K|qPPv`|@NF*$r0^S%1Lh|~w zAdMKhPNzNwXWiD+hJBFjY5=&FN4T_lFN3qg_Z!37{FKfLl-`_B^@|6q18R82S9kyGKxFQY1T8AL!yO&g=MhM2DKQ5-p|UC}9Bnhn(@c=(UZEscfoX zii=vnCnliNY#tkbq;T_F;hd(9jx{@8%_+>yg%{-pufAVU97kYE-zxMu&o)*adeth4 zOO-$WswS3ebrWrbUf0&!QMr6Af`Tz84&sZ|spQC<<^)rvEgm0dIbnkc zjL*F{V#}>0L5=#sOZgU7d)iTRDxv^Oq*~nQPfzqA4F>Im^G73a6%1b6ghU;DdqLy# zqGjvDst742eA>KI-=25oo?e@wRJ%GZCg!fb`)@NfDhw)aZWA>sXFCJYgP_N!wzI;u z&gK^akd5GfX@TnN{{ulMhpJv^r-tl1hDWqqRFYh=oOSP|QXa5erEZ-HbZgiBnF~5i zfPgues4N?iw3$!uk8MeCt9<(J)3tflNjibG5EV%V&nLN`AD?hCqt3al+OZ$r*Uimd z#mXiB`_;)ZCZA`mbRH-I@CilYFPh+X;8_99Sg@0hHrXo%nX3o>b*nbZR!Fm+L~sDL z&huoT+xqVPV`HywBmPvOKvwORA02*~$(nWpmcCH&&3R$i z-OTkI3OBC={1{#lj**7+cKBmdcqd*mQG_rHnFmcH>WrQaWe!Ok8U|%2&Dq7jh0}gu zcPTOIsG(lr>^!+>Megva6X&)z9zSsJ^^T&CE+4Hr!1rcbJ|EyoA>=iKwau ziE(z;<}ss;QJfy>u*x2?%!^-B-j);0!Yv;8TT>{dmO2+XhOGszmhazr*Py$g5g7$u zCu;ofW^qlX%`4TdONw@!+A*oTv*+DS%g&RgP%t!j0qSDXgM227bgc9(hhdrpr&Ggi zQzoKR)?a)zCp1I3j^(8AJUi2|*iZ;Fr}QjYzYm7cutT!ioDJjAj&HtPRFOyJI047q z_U(gqG7W)T1pMO@%$gwb-t!+@gg%HP!8-ddf)HI0$X|>|iF=*~=pF)p)avW$YHQ2L z?nKw`>`Y8e?GFuo4-yYM%x$ZuhVY)#+{N z&^yJue=(-z{%-gJZ%$LDvhVTN+ZD#G?J#p2tYf{gX;^P`trAPI0}|L8+zF<8KTee7rDkYqsaOvuzXE=#>O+%?lLQ>3BcA zz=`sPgWY;LWA9V1FCKE2{UNsh4;G@z`_95D>kEER|EuHQrH^N;Y^+m` zmX?;b+N>&L1Q?R%4Hr})s6q@H>F4~BPc;T zmEDTVXiXPF!}xZ}AJ+O@iRY;(|N9v3g>uRnza)U*RBzG>af@Pb(V+nva#6K+MbA%U zcDTL`u7*Ap%YfJSv%7UXrIP96qBh2V-=Bczh3zmd4frrNrdX`3t*h%oAPIyc-Ew3Z zkUV#47}*y&6i@2nyomvp$$ghh_ zRC7lldrD86qU`7XQm#@epC>55!_y7`_*`{!K|vtdLl}uRcqI2~_wOEbYkauO+P~Fz z-(&eI7bgmUzK#d~mE+pxdgep@$CyH%pzq;ShMepUdncM542aP|f(mcuSSX6292=1R zZjpzLp~G<+Ky=hjB^fu|`8YhA4U$Qp$^d2Mr{#A3%g317N1gUh4nDr0+C%I)?C~Io zL1}Km(WS-ooQznUW25Gv*Uk7Qw*MwSWUT2Aosw5d+ zpJc#^iF3r^KLmZ2YhEf9Rg@c9dD7^ORA)-NbhXhIhp`ov#2=EgttKZ{UYvxr4kN^N z)h6@0U#uTYrm+=WC3l1X4!-S09+=TM{xw*GfuWw@-)b|iGOW6S#s4W@M3q^6q8n?A*9ttOMx{+KLh@twGPip{lRHlO4m?>rmkjSSWAj3i>f8dyCbg)*vYVEfcVA``*$)C0@Gzh)v1kVUB;i!XA_T4mMV z^DRTncM0V_NK%QVqcRwzX%YddL#nB+26bm(SnK{b-Qlrd^UCtH4@0R0C7~;z;y8~fOBD9LxZf9$NdRN^~SG*8ATM-)@9KO)LU{B z)C-}-c8#^@>JIdi*&K4UAtJ( zD307cJ2B*eKOEi zD!FTqzw76pk^*BEHxp-0T^om>nZy~5DKT~2n1t9odykD#JG;B7Zi@YQs?wCb30!&F zVl}(*P4hE8*1)iw>9HMRWNR3vOPK&oxTK^cQY*wOizd}fjrQwgLqjHT{uCV#7!~Fj zxf^+qu~nipH8muT_$);y;T9vY!{RG`Ct&?iMU~)p?2)-pgL5w%PEK3l$q&L*NlGrU)^2i>{zEf zrQo7&EXIuP63LR4qH`vRMhoXiDoVX|YI97mx$Y3B*9y!eDVNr^br0(4?z3h2u;nMy8u1a*xvGz`{ zk+sGv-_y-cd{rGA!o{kQ>LVN_w&X|9R zEfAV9FmflmUq1-c*ZQ}{Sk#ze`}kyX|E+h_f8fOb7XX2%{~yBK(C+^j11CiE&mICH zKM-dj&{?se02BCiU0pu20*|o$wJH~`>UyKRpD&IvvG#37IkBrqafX*B0^_7)!2$d@Ch}{~ zORc@WM>+2Da&k(gpvC=%pum6%m4!aBYL=2ARN+yTXjT8de}Pw$P7V(zK~pM->I0)B zqg4b-UlNI_lAxtPgocA&JB9)aK%ZWGL0YbXq!lafVn^$aYRjb}<0N$5Po3L(d7AO+ z<`fbV;^C1NLHqA=v3mPq)q#5H8XBqV8*DahL-M*#mz&lcYutR4I6px2#sW0X)(S?Z zPLvIOza1CnvMGJv&SREtRT@fQXpKm*qL&6HZ8^oyq5EE1F^!+fe}R`UlwZA~FE%a( z+H%7ms|LJe7PXZtw2G6H6TOoEC;JGl%E;{iqcb{uM$y?pcKHXSK&feBm28i@cXX8F zfAjaRwrEbCGf}s*huz{vXY<_%AH$3=sRK-Qpkm)w8ff%ywDItmCg|VDq+pb*x5_bL zFE;w#>1%lDXZlSXi}NWU2+#j_V{gG~3@kZ*ToF?0)IF=IwWL6_HBe}rT3Lm}oikJ~ zBrE@Nt3M|LbK-?o_%D?z$h^ODnp(rKJ<;&;V9lTbkO{E;CLOSi2wovK9H^(|$k5*s z8#Ri8wAEaioi9s&=>Ok9@eD*WJFu|Zwi*Vy@d(z6wmUKw+1eOP3>|bFR9}1U)EigT zgBnvSQ>_zOR(MGXG&ug8>g+A&?7(l_`#L6vqpOYeJR#}d>Bqgi^t4&At4%7o{QS?N zhj#H^(+M}NH#&0YLg5`x#l{n!t_aN{$|%lq(Q2aLLq)(;J4+Zej0$5^3YVyf@HF7- zos$XCy4j9k;lCA#{Czul4_cOQtQFc7SbJ`DzS!`tW4PX)K?9Ru)&3s~KrwQJ`QdiE zP``OKLhP_HfBBJ4fVMPTj@BV4ZP4o?V27ydAL1BI<5RotI_h@WQ`5fE{!?QHS(da4 zC&$2>0FHF_!Ao*JfMv{WZqGgR>G!4S$!9-3!r>%DBh9nd=Yvbr;f(AWgIcC1W`r<_ zjXaiu_{K79I-7lu0kwTO>M|%}tKid$&x7COFAk>0h%os7f>5N114!eW{-PwE)*dXB zNJlK^S)~~@`^!4q4GI68x2BKpi7cC*m+Ayg6~{iPwpR=chq1m~$xdgA+<5ey+3OB* z6A9p&wHr8MR}=Mh5N15mkDvFl#m+muA?p${W;<6B;!>f}?rQ##>08%nh6i-VYirga z5))OO`}?uW7S@w<(HwCrR#OlN&JbVO#m3Gi&bATsuJ}0Nt3K$^u`a;=?6Rq^hu;#g z6maoA=>9@0X$L?`$vDkdEeLDd0<~uc6r+*}8DHf3Odt7*CJBg=DM)l=Ts0Z3zF~QW zVQv;o#V!wB{WRJY;rF-rKU{zfn@p0N+|5U!lzc3gpGm?b`;)t~U0R<>m(^VkEj-#g zKOU0>udn`AuK{&Nmz`DN8JYMjjfGm&&d7OPnpw^o`Yrd_RHG-fx4`aPSz%nPg<3 zV{8f0y=Fv@W5K<*0)3ZX{e6<8#OF2}-^IEX9-T8-A3mibccsT8)6zlxZFR4o+j;NX zk7osb?l%J=PF~Ys@&eLm?-3i)ka^}bNEb(Y$WifinMOz-X2&@kvVVjNxdeN1@U z*LHap+~@VwzpQ?CT?zTRyv^jetqn_wc5MSVqQgjIEBRCX1?_2(yv1hU-$S>qHj=Z3 zKHgnHp)u;uHc?8!R=1o1Xb5K1 zWh$D8ZHZ|wYq^!i#h2m7xc5yB^%BXI!7o6DJnId%p<3U;k=+`R0o}WVIO`G{j6cX- z#uC&L%NXlePg3i@oin{V^dO9cC^Uf*Zjn2~Qh7exNN{1m?L6Z}GJ2o?0yUOC5X>+D%Y>lM*^_U1Xc|*QMPgQ9k&0l&j(F4l{b8%-t<)fAlVzN6 z)jE8OKZl(JE6x0iK%D8nZLSCv<$o!58`smy&lBT*iIb`0jFvy76%o9au?yKu1%O1n@lqz0g}VNgz(G!&*=aRK#~jDx4<0suufg2PhgH8!xG@`7;0G z;Y0E-^!?yy9f1Ex2cW}QNEzp%ickeZYfgrebsI%My~LVXU&wYg3ltSvy4XyBvu^oh z<)r*?C9t}s_-JrQ90up6Cu0>}_+tCgPRjJe6_pQldgtiKx+h#X z_QbYrb7I@Jt;xi;ZBOipZ95a&6Wi|F^ZxF)*8TqImDRmEd+&2j^{(3W)Kd=%_Sz9L zg+xvp)4*X&<7JPQSB&-BKo?;J~qj>Gat zd4r|yuyu>3u1&Rxw3!^Ji`ke`fZEGdgQ_F#Of02FzYr-HbN}8J#`DCl$;9TYv;8R7 zpY;viQSSuTVf^Ua9MFsio$)i)4krqg8!Cz|S2IpN=e-t)?Dk|O-%+v1=G;-AB83~Q zioPJ&VsvzbKo+lVF}W$_s|7yS2l9h<>k~VF zvao#w4j39FzTUxA5$!t0AUJYu=eGg}N6eJ0b#!-Dju`B|H$6Zu$0V42%?Op*6(AZL zvGDqT9#RReSz`8f&}tGi`%V~WC$k;QLuEJ)oKUCdiO2Tg6o47uo;ttZiRe2eW2Z5* z4uNQOlThr-TAs%R#{`P#>AB7@kzOc%$Fh~M-!&xD@Bgv{H~dX%-vIW@FH5X*a;T?Y0$lWddTLD_(FSGFijpvKg0~$0WEdA-Pg4E*^r2fAG9+2|pv1!DTZ;S?NV3Mn zoN-=3^Pr9KHe!94hKZsdn19(wYB`SV7w~+W|E89&?NeWhAKKi};neQ+VP`tpq*Xhp z6nU9JTPOmF0Ky$0(ssYRx75M=q!9~0QhON@&LP$e+1aAijH$8V@^d{;H%$eMShu$0 zdRgf2Q)(M!N2Nb{Rz}UR-$^X97)_4Ci!N$raP}rTHn7QWX$n|q01VuUzY($iBhc{x`tg>$HpHRin2&s& zM%LzjV-wcXiY{*xq+00Ks&6%~KLXOKuKo@`Wy;F;uZ;>ae~#@Xf_KW)<=1vUyse)_ zb^0rc!%%{1EhpoKI6i~r3QuPx^Nxl5VpaSdU)3sw83TkneZ-I_lj~Ytrl@4(d5yzd ziu+USuJu%l$EwM4XTwV7Gg9mE87MWUIyY|MQ-14=HYd&_)tKeqpU9S9|7F*-u#VS(Vd2_#CH6kH^hC(luyr!2PgRV?JVJJbfG2 zMG{oims(zo%NVWb|6}9I{%7-5kLPkX|4N#@+e_crOy=DaN)>6>jDl6PI}tClw$6w= zk0@XBC<~-AX(dh`hpcJ~Kf=%$kPVN6dBj0m3V&Dbu_6?SMB`qEcU$w3!am{ zYnuu|StjfYa}LSHe`36cjnlez$dpx1PH~|z%-4Q(;7C+fbr-^PBVV7(e5m0Tt`Wra zcN^AQlWKTPkxAQB|8NDIJ36}!>T)D5sMD;S=eu0H3TE0cHh6R+Dzt9EZVV`1-Ho>+ zp5Ik-b7}Bnn%Z5KYC+-ld*7jc>o?iZW5(7E#*c;k9gd-Xl&hL^t98!JCS)Z# z$+6!)>)u2qj(REcpn<;OqBG?>RQfhaJ{1V5mKB|4~{hB=+*pLCn7=KfDu?lTT_=`sT*O7$MYV9~BK%c8)RzwYvD zou%|7TFo?djGdFVjKrG_jwhn=a%>P3&c=n`A{1n|8@l# zSq8YDqy-Ka+OeI|M&C!m5p5Xg;QZaN3`g4L^fB6*JIf-|tJc^m>uq)N()|00q|oD4 z==t0qDF7`Ag2BQWC?wVQCR9HNla0c^Y&&;bE?Y6N%m3TIoYii+j+?LSqJjmKfrEqb z=S8*8P2uUdv$vg;+_&33)K-Sy^uK{G3+*Y?sfJZDNlIEy$w-+Xm)p7R#7NdnU!x|I z`-W*ca~1*Xsxa^OxOrDW9lzVuzXYm(^$!A8WcxcNfpvTiwB+2@is%Y$p7ytd94WTP zuzM#pC4{;<+r0khcfS(bWYP9;;P}`w-X))w68A*Yjz8xOECj2`4ds}EK-9$U$sfn4sNo?jfwRHZ{=>EX*XhGs{ ze8dbq#KX*Y<>8l9G$DMYw=3W4&$;3m2>Dds7e|ML>Gi9nM>2*38{G_fgKgt})E%uX zN=k;ml1WmffK>?5Am?a<<+OOsekQwL(keQYw_jNL|7<;v>MS*0lxP=5xcz9^fm>ZI zD(dyk$8xa;eE-Q9Tb1p(YcGQ!6@AN&L>EFr>3?=rsQ7uH`!&gRWWcMv#YyRq`&$A6 z#PkC<)D>#rJw4C}xT(WTKtB8$W;Q}l+MBWeYxovfv%m=w{ECT~dbwtN-U3_EfL$tZ zZUR_e`1rL4CJ*%D69WFASMS5Gnj1_ChfKiO`~e0x3R_atZ^g<^sYTpDBkQ_ za!5TmN*c*?lyKxgu$xZ(Hu!Rg<-m9j90u24gIm2KIc6i;@_X2>5PaF^V}Lv`?=g*# z*C7TH-`H9d4!Z&MZd{$mrpF+nLH2Zw(%CFfvW%Ps*1`fRk|lo z-(nspDO&ow17ZSLSB@sXGPKnk=|kI)06foaZlH3>uJV~{C7CU;Ti^Un5>;7?uZEId z-9X_^4iH|I|MV`#F@^QwSyNLjmlXKLgmRtf@-2>GwDFg1VmN9KC)`u;GR~UOP zIghOezyd)A0YwJ^M@FEBGKazhhXz5>(9?1g=G|{`@m1k|EUg7mk%57I%3B3h2?!CI z7|00k#HEH-tDgPI7DJs*FJ#&xN|8J!A9-LkauyBo=gmZ3-PzQvG^Qe*duNJ|LVG29 zbRxDYENN6pj#CQZp!4q^vM-nh*s~?cbZ-PqqC)GV~J3Y|yye2;1!pp}~L;sU3F8$_#;M1P^i&kq%~BfSeF0vI`RxSXEGJG#r`=#qE|; zX^3fy^+f13ME(o}!@T_bzQz*CR8>{Smz8*EY|7-wZx1q0epFa2dvRZ-x1(^WE_Pyh%srZMPFX<9;3 z`;8>YBk1u_-Iv=E$`SWue(fgh>1e6?xqj<6OO3S?@P9K_Sl4ok=M!VQrXSqoxYyLs zrjn&{DTg2wfdEgO?qemt(oTkg0H0nSx>q4&@?!}mr^o8Hu*zbDpZw!vz>smRy0#xv z|Fg5Zsp+u8VMRP+uj-(ZWreW)Md3bNu=4Bgj)8@YHs(gRtrg&^&?Sr=O{roC+>CV;OkteZ60E6*_^DAZbzo za}^I*rSycHp|B)C*fK?>_FRUh+n>*(NySBlov=Gq;HS5E|BX&^v;GfqO_@~saxHG& z5U`YuTDsksR9?f-__#PmCMI{SuF-#OfgcxD|J|-cGRcSmSh0TyzZO4FmwkXr#o;rR zUj93BstQ_>$7OK`7XvHAGRdw(wzs*txwUmg_HZY`sp0E{CUAL>@dNG`tHS74?m5Wi z(y;6wFkGTcW;fj)yScl3a8&zd5c-DcZu7U*H@)wjz5jYQ|KqgI!eNQb!TeWXwzd!6 z`gDu`m{)Q6`Tnq==#BoB_uLgu{eO8T!O;rESU}3-Q*#|q%e}f0%YZp_;fVTQ+J<## zlBrh@Kl)jGd}9L(ON4lTrRS;nU^L#FY96>I!<4QHI?7%EAg5 z9v)6N^lLY$BNFg>2!tjan}C~L3Zn$i{TCetkL{zOp&0_+R&1MfjFsn+|1{7uHOUgj zJ?J&RS{eR#-@u3d>7HM&u4*;wFf^F`b@80d6KHH~)K>PW{gsm$q5L1nmLL!vA0NNt zwxX{xK`KibLY*qJrn3jz^!lMWKL-EbSCrVJ;Yl1SwaN}r|Kk`R8Q*4qJ0$$CyrceQ zgwn+ZXf{9+47XHf_P@pbKXj^BVY12Pc0v!)O{CH2_=7a=(Fb+B!vZ&+R0iROH&9^p z3Cy??+GX^@xT}bU6kCE7GH}L*VKiLDEkG8Ygn;6sRLyho+^cGaJdub0p|~%OT+TO2 zcN;j<)#9uqTR2YQX;f}zut}oT;Ufm3OqVx3V5qvbpFQm%V;2ow8RPD^Y?Tns1ODJu zdIVQV$#t@YDv)FRYkA!@xW`!zj+1-ZWL{6e*-wSi;m+f~f3D{y$vWy^)yBmEEPZ%Q z>^j$rOhMiGzP%wDHD+MZJFHMSWU{ya4`u!Kq#9{z z^TOoh=3%E)y2fLBezjS^d}g_sZ+H5a;WPT~Ib}R=pb*TU{Aag^4C@L0_p`!Qvo#70 z;prksQo(3e_u;bY7a@*l3uBZjVUtvnmH%B6-h4(J9X}jbp80}SZJ=tGpdp|b|EF>? zA~tsicui{`<{TC!eWC*%OSO?#>qh{WEbc=4?|vXTB4XGP?(PXt{YrADJzaMsS&z`T zUnaXcleM^F*rH`Q$0^om6((cY*Zg8p$O(MVL;E2Y zTSy@$S)uFyY%3Zqg7tqn-hXBfyypL*$N$fR|IZ?T-}`rR5L%6hhH^wZV{4 zK(RrHgBK)Lki-Tq*p_g$>`ZvmLS zGr4GJ2ct}Pbg~U*rj4;6R?ZrZG!RYn<*f-MT3`f`FmpC^k$Ki}a7rXnB}#!JYA|qh zpVdmB)S)VcB4QAc0!)p+;aAOh0;e%4uZ053`M#a)-thh(wG)P)1?w(1zV7Obj2)(; z7n5}>iG`B0sLHe{cVUL9BASIMgwjP9J+7aE6cn^2?yrnU&XGoR|_VV0H+r!96s*?A^!4jBLl1V z$YAK1Ny-s!4vghw)KG7(aM&@gTU@M=jXT&6)Yb(8*U$FNg12+4e?Bq97yn~1ip(%C zVQIp^+rG@})~cOI(Q5~QMBCo&C%w;f>C*IPV{OoJ@bvEMU}hV-5x9SPWF3QFuVJO5 zZYB6SUq>A?^tLe7b_kr+cJ#E@qI0fSUd|`|vmv128n!l7VzY3kH^9mYAce*W(%5L!eW6zYG>)jkAn|2{Va5i?qe1FC@5eHpRl z8fqW!H(xJw0}eKATJ+^>W9su9r$2@59ICvfP8Xg592%wLF4wO= znM#(aO_jQIDgf_;W=R!UM`t*+VbbO$o9ogH8)l}>(yLOk3m02U0TCi?#yb(v2G^7=4y+4$4}KBFPNEIZJIG^K zVU7xBrCH)Jo>yBdD)UZ6hWA%3QA;ylKjy(e^E%HH0OJbrAGJSwoc!!1oeZ?(D^UigvU ze05DfU+w*w=6XANEUy|Z*&}iU9yA;2zY(#p1U!tN-OD_AXiV2Smdt$SQZ!5ZTg%{O zh*VExS=!8J2l~Uw(oW^3sS}WS^EAX|NoTx#*FCHXL&d(|JU_pRLp;1=Uh$eGYnSjk z&8zrU!8N}wWeP?)*>v1J(E=i{dGTr4W+QVW<>$}`0pBx27Fd0t$ZUs2)=wsYbOu<@ z4f6C={Z6~5hoI%crE6R?snt}8Lthp8xd zz$P?O=boKX>AH0X)Jo>t*kiGIufWq&u_x1YPGWm_pLTjP4&vaRiexx6W%tM3ZiFO}&?fYoZx zbeT(YnSq{WWG`uqFUs$TiKMqwYMm_9A>YMBSj9BJ59j+f8D-hZQHCz!SJCH=FmhBkw`1(^ z28vYYn-K1AOh;me^*S7%9md+$~RlFQe15O5KK4r%XQ7;sKdR zdprzN3>KB6B8)H?IyZIuiqtH>Vb78*_ND5zk)0$2?j`RUCmUI@yby-+hQLSTk5F8rndh|6 z>axB}W}R4lHoH8*7g*|C3ed!_UpVOP8z!JoJsVIk)*!dIUV7u1aU6{+N-Ek)# zKN!e{OmDRq7%9Hi+|zsRCTK}xQrZtlncHmLU;8)05U=PRaT-U$xsUsnRW;orN$=BHZ6y_cchCjq`sabsn^+Yq213aW4Qk zZY&!i!~e%PO&UGrnHCN)qv~Z3p2+vu{V>04g#8pdBDB3JbIg=8sQP`2(<=2gBB!)w z_Ln77l(dt$f0qU4sXY$xa0Cjhme@>vDcjNiSf{gXG3x7c-n-epQ``{*%56m1y9$Zv zA?0=SWXCEstj5vUt~5RN)ug&(<^T^3@BQPH$IRrre52XPgCA(uILfR>d9)sq9~L74 zcG`2~LUWyo|ElqtJkCOwdi|R*Xnn(ag)3`m+$BijDxHC~Um z;;EpYshfj5ETT&P1I+spQq0$jfT(8L5*t-kDykqC)lS>)rhoL7#`$%PdpSd|k=cJi z*QOr**C5*Cy{p685rd}h?#)<{dz=SU7xKmG#x&EX(c@VZdJfCXM2@G#b1KFw)=pg> zpOT;VwtZ(GHaDXKPO~Jf9Es1%_C)05j14&G%_`rOfVVvp84U#rF!v7h>4dBiMFzH& zmWmv9{ekuR3nlp-{sfCcBWhu-|W4XE2+4p-qv*=iMb1eJwQQq?p zIeao|={U;`iaZPJIQ4D$SSS3Ht0MCqxc`i!DPI-mEc5e_qj^h>n$Q8-7$(;+Fjl!{ zoQ#^*t@Zkt**jG(M0Y_178dq;wk*38+Oa_PAro>d`Mo^d4Z-wwkoJDr9Bk&;x=ANG zhjicDI#qT0S)H`Q_fE`?8y6oGk))lR?uW49Yv#7pi0)l|ze>XNK*ybI< zrUYjR4B@12CH)O^4O4@_L8wFO;Wju)(7np$j4fgm5pKQUQH-7CFE<7jWVz_|03EjW|DIMjpE zlF8&~AEbQ8!bqZ>N3efO;Avy3+COJ65PY8lDrc1rpqBfgjNl0H@6B@E=HyYz=^7Ju zDUcQCSAu=ce<6F*P)Mubp1)3y<^Cz(I~7u%)S}?RsY*2Ev#TITQ`71Rl&u|`Khq4+ z?oQfT6Hg%IeY()>E07=l4dFc_w=oKAKj7Gqu|x@FPeu0e=xNkPx+1Ct{2 z$XX4&h_}J98iJOPKGzN`NvS>M3x)ovXQp}P`vUvJmtEjjui=h-7S{B&NHFr=HvnGQ ztp2@>1nzzoEkxQ*mpM#GmzG|9yE<%NNPvvAU49ct09#u_H6#64(l8FR=0H!)a;^2G zdbdeY%Ww#Y-{s<4Tm@cv#~M_q5o{O?#UxuZD{}@b`y#O)#9hj3sm~=xhp1Pt$b`-_ zN+b>cT;vuOTs*y**@u6GKdp!>%Uo;q&Mz6Z%1<5oK;ho$6?w$8CZ2cTNP%b8tPZ@1&nGM2!iZ4FzZwST0)_Dv zv57IU@I!X>m`VCnzex_I^1{u87=iSml!k$SDA>cg+FHR(3y zT|!c8>yb_=47?yun)SWU=81X9G@1_){^>Kr9p9qh($wata5KqW7~&Z*XT6VUKsD#G z&S(Ej+KZSd-XDkfIe3M{FO;?SGG#L~V$YtOWVXEpAtHhqzsoa2KSQs01d$}%@oXdv@LRo);P$FgwJ=RZN2F0PqxYys{_t}U+hL? z7;9F2Uer752rmxSIovI8p%tcM>jsFCHs&#xQ^RyS#WE}&Mv&GD9!8G$;WRQb_BOW- zPw;|f%0UoAmmBYt0th$+h;HAoxW^@b3WO?*uH@b>y_AX|uqGAAPz8^!*>oa zifj^*$M-8dQtSW12@zP@qUvzE&#G~8nZTltSGXS=3MbI&eB3cQi<05)zu z=p8{wTX~I!zC3;$)bI+6YMm@LlTiYAMkxoucDw$*q%U*@Q|qacW-;3{s~7?*E2dWNZf#h(c} z`SLpYJI2;Fg1!=zH%x*4W`buZu4H}<6G9j{B!>3t#lfs0DjELaidG%m$0d8EBG6m{)Hu(6D6~*u>#+$euguQX6Ioay?|= zXi#iEL~hSIG9@>=&T3$A>~5rwGnJ%4#yPqp2bP8CEXkymVPZ-IMPTAlR@RuV$skfy zpZ*x~g_O*YpuU%&U(1kr*&w>q%>bs}G|PK7hC^p?JfVsw`zNHIo^jzg2rQDA8wa8m z$9nEL=>%hm;xl6|GZB{>@N(%a(xLp<*#HK_?x(Td*`u)_f)II6UsY!gG6l&>@*rR8>7M zceetU{vc3%O1~l7&E{u0?wwg^S!G5wSU^1t`}d7sE88oVFc4Ousje2J^b{s$W7Gz_XWl1WkRa3|UN1G@lY&vCnmiYO)xYn9bHwgd-1-y8(NqSS*; z1ImJunQI*SFT25!gi!hG2-N2%v~ZDV6f#Z@pD|`xViT+_NfFm~LZwf_@$d~1xdvOg zbN{7$U-)`5SAH(VWNJ}_wrm0%RDnjJQr}O0lG!vtwoQKZRhKa4%f^Oo@i0V_88PYk zvO$^9!Z>gWale@wo9L)oe#c9xi6khIAd#zIF!8y~v1#je_Hc51M!t{GhBqw&$cT4U zf9yA3n?Kuvw#TJ*1;2YQ@%$M_oyD}nSXQeS&PqG{bR9W?fQU^9bWMpTP8iaui6Un>`h+l%TXmX_CdR&H>CsN|lc zJFbtdg1;^B!GPIbZf_IDQF>A;@Yl)UW>3(FeHDg9njbRovmQIWuQx77@dDtGx&RCN*YSi#lvzI7cZHTQtl) zb?%sm$oKEYll*I$PiEn&m1O~*X>s*3DPXE3>ajX%hn=?ZguSnk`UHV&#RoOP)isF<#K86FJT9nMlM4)}Y5#X%`h@W%9(W0RxFEkt9qt$4f z16yp`wrf@uO+}$8x^6-7dm?GctpCHtC&!$=Ve#qExl|Mpc_x(o~4aKA)km)E$l5m zY)X;Gd;Q)liSuX4P~F1A)?FukWek3zypdj&V<`AJb3xXkOc>9txm&VRe(9`_m0tCk zmP;PrN^a@m0s^yiY5=|O=QEpajQNqr?9U$zJJ(;$Yj%Fu-aER6hKAbO?H;%L7Z-M6 zShrmGKk%?hef7Q`S#MgtPnkw!k{o`@By ze}$FhUF)_$*8-Bdb7*xve&L(YBE&YKi21Fr7bTp?oC9=KN|e2TZ2*p-*kCfU_d~5s z>FLQ>PsA2E>*0B@=iru*3oXRwXgR6NenKy^vgz8!vTRNGCUgiRUtC`5cY8f9*XU~2 z>b3tkogWwgi=&rxmqZ6h>j52N&L<{GXVmeUBI9uN-pfYJbFmcA1oqYu4#`DRMBaU2We!rJ{JDCWd2lD;D zUZBg^#;?YuEL_=Ql>*3&_1aqmu>ir#027dNkuoM!T>6;3>acsqK$3 z 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

              4a65J%G&xX& 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 literal 0 HcmV?d00001 diff --git a/website/pics/recoll5.html b/website/pics/recoll5.html new file mode 100644 index 00000000..479ccf87 --- /dev/null +++ b/website/pics/recoll5.html @@ -0,0 +1,13 @@ + + + + Photo + + +

              Prev Up + Next      + Image

              +

              The term explorer tool in phonetic mode.

              +

              + + diff --git a/website/pics/recoll5.png b/website/pics/recoll5.png new file mode 100644 index 0000000000000000000000000000000000000000..091080302cd454cb43ef71d15746bc8ce99cf3c9 GIT binary patch literal 237133 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℞T<%%)G&?yE`;}Cb+Y8C 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 literal 0 HcmV?d00001 diff --git a/website/pics/recoll5.txt b/website/pics/recoll5.txt new file mode 100644 index 00000000..ff689efa --- /dev/null +++ b/website/pics/recoll5.txt @@ -0,0 +1 @@ +The term explorer tool in phonetic mode. diff --git a/website/pics/recoll64.png b/website/pics/recoll64.png new file mode 100644 index 0000000000000000000000000000000000000000..aae65ec0b0df245153a78a42eed7132c30021b88 GIT binary patch literal 1420 zcmV;71#|j|P)`JL}CRK~A)S#Bt(SAb}LY0fdmaz#0BEE}S@UKpaR; zIph#USbt#jOd=c%dgPrdHf`@gcWe@KXsS$)^?{P*I8*O}|JhLF)}G%DgF*gs?LOSE#+AmREujLEjYI zN*aLNe(x9Y;q_mlWwjJ0K$|fK=NslF(t2A%*gCHG{e8%&M-OCUo4s~MS_lG@Ijr43 zSxVugUESQfM|)!zsclZyj@P*P{jc$_tq~GAC*yf=>Fv9m|Hp?!SsfiUWADpTTKXr0CzBhNDz=^M3;U7PxuLZnGd)vLz~&kD1_lG zeMA<(XMZ5M#O8mTilnyYX>I;{|BA?Cz1*^P!!bAj7yt|a1^@$qvz!Zj(Ruyw7=Nlu{f_83H&GZGFMvYqMXm^4nx*QRp?Tp3@pBs`0 zX^}v^(6koDyT!*MnxZNJ?R$j*Rnk zO#D0~q_6{HQEc-m#B(%~z8T-uhV_T>Cjvx{McOw8n40d5MoV#;Irm zjQZevf81qq=kLj6$T-~jD(_r5hi8)^6`tLFz}4%!xSb*yD!tJi&ybS1nFxdytw%^_ zXy&m2RD-6U(H+l-M9v}Rl*NLRR@6@ECo8bpPo~B>RtD8W{Ql z!!bAj7yt|a1^@$qoDK+b!w#Q2pd)P)k90)JCLUc@y2AfC^`E@98nt4hQGP_G?Whzw z)AWc;>w(t>8;yywdef;nQ5!lhBvSz#p-RQN4mV9JD7ks_*KzA_zd<$ey+8z|cAPtW zK$*`;k4crn$@Bszc0V~)5=>-`_S3y|B!!?KjX0WgMD+Pw;O?~W{!W{0j6f$HKY0BH zTX#N5kIBs^Bd+~ui+`@QsWG{Q!t?viciy^zoMKGw)=SUu!IkH5m-OzeC7@bRl~iPk zf@{HQ&5gW8;I&XZs1}q&V?-j*5UdtdlkaJDLX>KOdkl?{;TRkM3;+fIDFAZD8ED|c zBXFjZArHr6fkjTDdMpULzC$M literal 0 HcmV?d00001 diff --git a/website/pics/recoll_chinese-thumb.png b/website/pics/recoll_chinese-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..c44549a0d65142ecd6cdfdb5e4f43535e4cdfb4b GIT binary patch literal 194549 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 z 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

              eefqG?0e)MfujE!+X*|L5-OdKG)e;_Bf72j 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 F{{xQ6u`2)o literal 0 HcmV?d00001 diff --git a/website/pics/recoll_chinese.html b/website/pics/recoll_chinese.html new file mode 100644 index 00000000..bbe5b132 --- /dev/null +++ b/website/pics/recoll_chinese.html @@ -0,0 +1,14 @@ + + + + Photo + + +

              +

              Recoll searching Chinese text. Chinese text search is based on n-grams and +relatively rough, but still useful (I am told).

              +

              + + diff --git a/website/pics/recoll_chinese.png b/website/pics/recoll_chinese.png new file mode 100644 index 0000000000000000000000000000000000000000..2dbe6235bdb3f1599247dd7e1f51c56ed251dc98 GIT binary patch literal 738329 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 z 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

              f`RAkBX@UCdg2COGNlb%@I_1LnD3fTRje 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

              HO?oXE0O+eIQ8Kw)V%{2Ybs! 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𝔩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 z

              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
                ;FvTk!g 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 =2Qy3&%gyWlcY#R3Sn4CuqPRv7hT@X1uaz2k3 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

                (JjBocKc%(=>OaNdA54Wc`%DEWd;&)Q&W~_;hYd67LSv5s^}Q0 zz+j!Rf8lX}ASjWgSuRm}Bh-$xww<=#(krK*Q#FCmdO@yXuw;W?Jgd%QBxr_!l65b3 z=DRFp_M;vL8u#I0v#ucbD15ioG}6frykDe7k`%s?!%+6e2^xQndGHf`47$;D5Rf;* zcfGPqFP;LEr*Rjhr1qjOqc;MJbfFJ?RG|L)xU&_CAAcR?d-en5kbdw#Al8U)0Tt>w zS4}A^^N6|u+G_@e9>ljHbtPRY!Hb^mf|=C;GXG3;Zv%T}cxOTqx}Y&8QhA%xq>taF zez|bd&s0i#1{1|Ao!~d zp>wd@@koLf5|o~d=KT(-QtPBSSD{Hrde0Pk&}*}pPT~Vq?Nd%Mrx-b$P67$w9N~C6 zhwmQt-a1u9z{GC5DZTd7^+#la~-8RJX1&kBusapjNrNs_XzPuhcs_zgoA-1(~0ec z{<6uEh+a5S`<}(Y>|V_uY8-14OfHDCm^SPM06<^W1IsN-bX3I>oc!dPe~~eY!lfSZ zOunD#x6vHP(GpCB4NpT&A;d9lOa;5XodjC~Dxh0{GP$_gzBS)d3;xp^QOpyUV4yx< z?_{*GOF>jP22+Ubf{7hw?yOrvvEA___0Ze5;PE>A<`9{4tGbfN(g~9%5Etg1Nd#W| zm&s+G$(9NS>|?3!hNI|#&rAGSZphmSVR5;y?R?|w>%;+Eum22w&?_;w6NCnXM!MQT z1oY3r(PYF7TBUHVTQUX029cXF7yo($!X55WMW5xiOZ51#*l|R=GFVZOdqsCv&>t`L z+fr{|7LRzI$ndm6E{k2n;gs>&4L{%kvCZ1GBP?!6VhvUcKV{d`DY*^IR}UcR=AZQy z(p?ZKS~%L@0#zDqbmy#A@Gz>fmkmP0i~$RK_zD9Wk!j8-6-!7yJJH7W8v5;omY#7` zX85e%gyjLy&>y4}ee2lh|EJM~VPbnsicEdK2T=>Q!)rqAdt}-HAYyBfshDCrwvvs% zyUqU4RYx|Y#9()k!UGM|AL@||GQ&du-Cix7fj}77(nkJRp1)9ZMK8qoco%n;GVr%QLT za93CMx|f3Lq3H+lb8eE4yQ5Ylgakhz>NT12eTtVg5>LD>k)DkZDJT(o`>=#@YOX3O z{M<^^_XSmoYvg)t{NhVD<@2&F)9X(nD(3l`3ZF3XbFAP;Ki7Xvg&Zn;>|Z##l5+I$ zVXa_d2ysz(K}Lb%ZB9jh$K)ef6xn2^~k17y_ zm0@|~lKrla!MYrVG3tt^l^sl{y$Nojy3&)c>pjWO&$&K+U45 zUK8okM*zT+susg{I3Txd3Zw|168qmZJDTt`+UQ4bDisT84BBrh4kW}H0`P0B985D* zt)_pxSl)fsU`Pme#KqO%0~{Znp{%~mdC~%T3VPZ8r5kBr5(~V_Vl@xtbKlpO?QN{r&?OSIUUb?j`7sP2%D9)s0 znxlCxiJnJId+0xrYab$`A|vaco6LjvWk5fUdy<}=;94t{`aZOi2upn428|_rrbsDU zoBoT)jH+AxKOmH-f94B?6`0j-pHN$rEe<9Ft;IaIx&IdCo(Z!>!ZRBNl+5m!66rk= z|J%2>sTSs7w`Z#oa_BE`BpAa_3~$B?Ea!oJzp5W4}%Wb|^fb(r|y)p&!%cn~s$=>@4I#3ZEjkW4cogALD70S-XMp7q^d0Y;Wn zO?5b!q&VxL!?o&_V(-r|gKe;YE`FsHq1YPlR>br~Xsxk-Ij$^!J7DL9e!(qBxTKk8 zWvj(7gekru`R?pQY0HwE;ah+Lo4Q2yxVbS$Q5c>6wK>O_NOmCt06`2m0*jS{2jl6E zN0Sz}@`bRZA-iiR{ybFT;|VPrU2aOy0GV&6Pypt0-JtBnih%`j?VMc%r_GV?(cYoP z)l5Q~_a|_8++$d`0mgW9A3tbX<#}>%cl2XhdHUiKGXdz#Hh7^*qaPtl^vLCPHr@$> z>s>_Z3vbb2gd?R^F3cz>XSO7!2QWn!O(7^q#8Rh4_bc?!=3t1G@9<-tWpMi?yyIxG zU5Gm~Leiqxl9#Q4ykHgqY)qgkpL6($|BJgSh7rw<^5WyGDELtR|Ji?_KL(Al5QBp~ z1%3>nSLih$l92F?UQA~21r0&|9Yls73dDtXlGd zl!Hm;1#6GQal>?GNd#eodWuAWaWZ6aGBuX7G@N#8cwkUEs@D@DJbVhPmFaYgta%@A zbG^|CNpu~qUlXExY!vf7asdet0GMom{Ux(ek$k;?an5G7i~oZF(XX_>2Gd3NiPjC7 zCp^(duFd$=Ie~SO)nx8;4$YKSsUI$`aJqLAzpF!QxuSS~M}T+klJAEharf_UQzg#I zcciT7KCM!D>Xz;qo^iT4#N!8>15S2SR*ImI{p2cB87`K!6rAuC4(5P_+fWVSNZ z3Aq50&WR_W?Eck3YH+Q&gLR}pc3{~(VZLh{s>kDcBfQ%IYq>hgn9x1C)JCgNNMg=) zPUaHd8TpFe71T$xZwRswT9Wgi^d{3lD?SvN8K5OBctGme>9TS#VH56;g$OkC1}t)~ zf7sO<2pP~lKVOT@3;BN8q8Q#>+h%E_!4JSV$s!P>SXA?3_5Ge0Woc-?E}IRH~-b+vA6*w%dN$;FoxK zSMgglHLK2SM30jA4dh}Q;?Zaf|;?|vD#(f=uH`0 z-pi{&=7GLS5A#GCtq<5$TU((4xd zWu_L>zBAtMDw2S?EU zcljuLk=ZCL63|1`rtq-%is<0V``Mg?BIdwH4Kz)%L#HeigCp$@`Rk50|OC%}wM?c)Gg#2K#iOE^g#2 zO~SHF6OH~F44}o2N|+SilEY}Ub~C@wfa}BA;}_asKVk2!km3FNw$9y$h(+xGq)z_V zd$(U0=Ji$wQGWmJ58w!_Yz_~kTp|Vm6k3RJk3YoZm!*o7HYUIh0^07JjM8in7gA*~ zXyqrdIa3{bB>lkUC>9hRiHtVk)gltqj(R`50~~U2DCPh2{PTadxhG{cn*bhh`DVgm zNvk3fFndPsc{peBD7I*Sn_>4m6)Z9uy8QPrh;RUgBO7KTWoB=$9U!U*T2-|c9BF-)EsQ?4zq{aI-HjvazDhkT2^54bNw3Bfh<=_Tt^ry9BNqCD=e(&c zFS6p?W0(wap0|S+<^SUWH{YQpa=E}%{%byoPHV}uow1rclyTVZ@5iu;py19o6!7Df zm_1HBeiuiGZ&bi%q@1!mi6t;Ru;{X{@GepdI-aXfsIh|FKz*OdW)7Q%+opEo)in>aA_VhQmIp%Zei} z_SO}NGIWX%HM&{bNk*rOC<)~C!n0svhAq(#GDApAyOQ0P+_D|cbyx;4K{K+!l9SyF z+Q8Tna52&usyY1bEyYf0;BKx&urnJH*t8&Zy^WiK;Z5bn(`9DGR1<(rbmll$gfqqF<-CsmZ4pjZG-u%&sO_G_Pqq=oii=SNuKB7 z$`B>_MIFOx?PXRgKNHeLM9n zCg=O}2nWz^T2o!YHt&?9HMtOpw~l3t9@G}PdTSvb6@Ei?4Vbr_?4XrSL>WB-&@_G- zfr{)sNmcK6*J(x&>*|W7iLNQ;K0oXTkYYKwmchXzVo7y9<#M{+gHk@ONutg(#c#y^ zbF13_xp(hZ%iuxA8H@LM)AtyRM>PCTzs0~}>BJLen)9K~#9RCS3?Bv?>q`@(9mtY^ zP#|s11u&aCQxVBjd)70e=PJ%2yz?zH_45-f|Zf;mDU{(1?&w zP=3`63>apP;0lPRlE9{uuTDh*ha^=fp)VHTP<>x;c1=3t?q1|3 z2w5NykaULuC85Z_3_w9TuOPTpZ6eRFfKouqLD2nDw4aV>n&P}-&KnBgoM}iPtbayk zIV)MTJAA{hm!idLJHTrUuYk2rlTP#cdJ6R}=11!%$=OmxY_&^b-KArJu#vId>$2K0 zY3BfVaJK-4mYLh%#4~JF8Jy^16~OJoDS^9F<)mZG19@g?=`Uc_XJOItW@yJVbSkAw z@Oej^B0vL2w0f3C;Xzp5$%0ic7F2f|dwBDkxp@L7fVir>m*We)-E;iHc4U^{RB1)M zJG@O#+mzK0smH8waCj5$=LvOy)@w$bL?<#jdPsYbqloa~Cmo1Cu@F7^k}Lb|vAEFy z4Kh8gZ;8Zd1kZXOBMH18So0_9!SZx}9A`@tw;cIoaX0Bt^excbD81mb;js72yq}s-KQ6LLzv_ff2 zpOm*v1exCw;Nu_&6&*su;h;+gqM2PIIAHUT7NFgVjPP+;)f{%cV&GWrz4~M~Vg#~^ z$ZsyU!eO~s*wkQGBUm?QO^9Onv0<=N(0B3u+v!2l#?*G>8ZEyFI=?Xxr91xS9i0<@ zUAy*8ah0O~O;EzFp+^;=CBCJKT!0{Y4ZWnU#*G_vZUp4d6R0$nfQG!s^$cRJedW|!D z+7obY>$bKz@sq)Wu!`Qhm6P-~Ao8z0V2wbkQoHKaTddUP3;WnNX74?abG$|2nhRJX zz1hYNuT`5=#)#XcBNPRU9DYhEY%d;Q<6&b5FWSbZbv(kf$CTdWsrc!)MbcrQ; z_Qfo^*E&*we>jD4$GXP>-BsBE@)*g5dquT6Ba=|43g2o@*5rneI<)Z1iPj6I28tu; z31Y}2n|Rae1v?AegX=+X9g?wHMNpT6mA<{Y51w`lhLO2l|DRi+jq1&PeE|3+q&j8) zH@ty@27J@uIiBu$oEPnO)01%i(dZStNvg9?P5VM1@JFVY*8M37A+dW+8X`^oV}wax z6rM9CKzgEAWw>`UJfuTA7z7D%Q8;^t#GvnI-V#>6B6j{fb|0>X;3U9TMNJvTC9nZC zv{0FV8;tQ{K>y+NB-V3rgD5e4hZ<9emYVB&^B!zqV!RCdFX#Z{PNC4zKDL~k;mZ5u z&mDRwO4r{*?U%J5_R>=;r>L`RqYyc}xxa^w)syWVFo61(&$-tti-M9vpC;}W-Gqvee*>JO-oT07Zu&@Z~FuRkr{(oh&GP} zi-=HfG$EA5|3v7brZiA4p?=w|L7Nwh{H%TbfW4VLpS{c62LbUpqH{LqKn1Nj(qEn_ z4`~Jisj-t42AWzLh3N+ABism?bbo9#+>F6h8-`#bZpDsD zSF*~MTe;Wo*@0yxVc(b0^{0%lt8B$3h`jmc3PCP>2I*{A;58;G^;jQK`D)`sV zN&P;-y$^NeZQ$6w z{@jbzmTkMBs!Jx2Xm2C#-*GlPFU7-JSOi!zK!|`rr(^z4Y}0MJd{Iy){i|=r=O-G^j=bVt@vVImO!S)2Q|~Q(}zybd1l(Hk>YR;HuK+kzP=$ z0HZ`~uBtQCItEdM!$hGphkp>;cB`@Tp)CL>#!&o39j20uih(v=2I~zU zEJ{S%fm%fLn^E%fy0NLY#7(IGKi~wk49%Cw;eVkGPTFPm&(EWFgD&RR-VR(XU6=wT z9fC_r%;GO(yquB6WALaHSFP70gzvJAu-+}?77%OvLG<*JV5_2@2)!c~y{c2vg7WM*Qg*?Sm2pT(0t;K;2M?OyNJ02w!|twbp5uR$VD$Z& z=ojr5Br)t`)bOfi;&Q;@#E6T)#zNrbObO|T3aRJ;FQcdZ0Lzl6T7W?x8;wt?4jmO7 z9cA1(c{S!mOv(4qLE4C!&$A?VODaEr|C!4XWf$*&P!(XQq5H=pRhjVQ9R@h%Nb)s^ z(`ptHV!l?-hi1mh_zrM+xx2ywD%P0mWofj6HT9f?d2HqivowQ!nOg0(%IT}(CO#W949nziHACrHXaD$cuAcD(CGs8zjhb9jFSl(XtQ#!B zrKqBUI;=?FsZaS=0~93S-*`swmvxQFGCEIXE=*vC|4sP;B*mdXlpJD0}eT^Z7bbr>iRQW}Kf=;P> z+0#XtTkC$=$Zrm;y-1%#Lok3gw=h&6W*FQ(=jJP9kJ$@RR1!0G;*gq*H0MHnp{`oRcqG5sj@;Zmm z=$v|_RZS%6Nh{@fg&C^YbSC5}3_h^Bl+GSCNnDq= z#W^o~%TVf$hvZ_5PfX;^<`L8r#K8zz!I|ks3iBH9AS)QzpsD`4_ES!_dfE6PdV51* znhOP^r)Pya5;NEe-D{j1>lyo>*ms|DE6=moyt7z8>5uLGOw^=TGW{RjjAj{Vt(1z2 zWp;6!z^XV919y+rcCd(8eDR}1pe;MG)cmf}RkWnMIlPD=x3i;{Fm(;R3oWeISgS*3 zrMlwnDbdaG_ikEO&Zg&ee3)FX;jCNVVL$t&afh4C=kOeGc^QRa;OUJbG%6%F3|(?S z@;;7Y9Hvf9{4kG8Dv_B9Bcg8*oYTx1?{VEZkX#R?eHB6 zLW995a%h@MgsMFVdV=l9)u8oV(JCxyH~Shg(13(~;sB18V;bZ>^8;e^Q-zXFJZ4J7 zKV_ca9ud2z)PW?TNOBBJ#)>eS>^Fg-nOJz^y)ylRw9GcukQCz~oT(gils`zU+V|%s zm4U$iG~gN~Yf z=^&rXYPh|zy+OFrX|s;kZ3sY8z0!gu67Q{gebtrTMi2ZWGa&R=dZNvF{A(qka3~n= zwzOyS331Cw3tZzvry~TY5JkT}VHIgd>SWvL$dKrdJ7@9Bu|}C;xgY5*aXJ48#(^xE1cb z9JOI>RlQ`dApa zs!t82e2=!&>Qkub#>HNDVc{hT#ph3W0rZi1DZY%h-q1w>p|NSA{i})kScqB}U3T%; zAxqHDciS05IzY;D8L1Z^E3;`jabTqO8%F%bC$3^o8``wSNp=Y!E5jpcxLf0vJBptx zB6*u-`Nguxco#fE4aTYAaerGlUYv|up{fo^CD)Y+8&3v;ZWGo4`Dhenz6pL_J$}1? zT5+Pq|2$ypdwh|bZlq{8|E#kNn#gEntk-CRWILDb5Pror$Z0hmV){ z0)_p%;$lVNrMw3?w}FvCnfWU73=$ z^FT5fQ9Iy%TPsGm0&(;9@FbCQSNrar4H|kSQfI87YNccKH^Tr()A*mC3VrCy)nr0d z>;<-^sJ6A1Q3UdkzWgZQZ)3n*+a47RC5FlCQZuYZW2=)W&(Q;O0p6|eFcXM$LS}^p zh`={mokh;bn-!kB-*lECZjBC%C`Co|DQdsa;G>Um0UT@5bREGifC1h6YivQ-Z;wSJ zrqd7dYfjVCDW&5LLS z7PY+3Vr>2FkD2CW^NY$lY(7^=H1%dqpR$)(6#ZU;tQA5iZ;jek{r>>1NNx|HUdk;4 zJl6*}JtRJB+k@U#UWgbVK!gGePG7qtUIIQn*z3F`ZE-^C4EtrXiYx zjlnwle=1o0g`r*f2*@f(^}jV?t3MIa&EBlQl$EjL~5pD28%^t=rue}xl_K3Kfy+MdGf+DO}seV1VS791QN}P_84Wq2)&N+ zx0PR?cF)O9w>lu&S4>j6ghW=u;6a7hfBh0>uLoZxf~NjKB9)R?O1oNbEC;#@m`G`M zZn4O4*bQ(U}$2pHH@x{yd>oalN;* z$+XT{B|Z{CS(b#gy_RQfc_0bGZH)5;%gj(b43OmQwPUhq%-xtN-N+uX;KY0EbHTT@YvU$7?fRMZ$gy^t=j|B$)THIWSjU?A zwJFyz_jlOLY2-*H+h{1mcBiFn=*4qLbB#4EDBBE%`-xzpKqJUuawFWxu^aX2PP{U~ z)h|PD1MOhrA5IYUY1-^_L}?LaJl7mzW%|R|(tm=<`C=6fBl8?TffUq{+{wPe$k4QQOkD zvK7-2(aee~huNILA2+_3$7&>3rh^p(98X@ju0)53o$e?)eWivcvt@%OHb*J>D}*8+ z-$GwB6yY4T1PpUe+&qf;xQCO%omPBL;N?)5?VpkIZRc%2J|^XZnv)d187*hXn!lXF z;kD$>T29Af;l%gK7{6`yPi`0#R)cFzOvMwgd7!#v)_+7n2xfaGm*vXo-*18~va`1-C|* z?+7HwdQdwRb96Vm&IUJogCi56V0LuvnTM!JAa&8%3k(rwL4`NTV1aaV#d&bO^z`P@h^!86UB z5;X`Ybtc(nLm2AoBYub4nOlCex3||9Zrsu`kTIqPy=G@A2WZTb6pCd$S9*CIhums+ zp8$zeMiWTfd+K-D+TYb#tMmWnWQV#643oF|J)K99`4Cm7KPO6W(TFM(b`EXAa}T@f z2%qZq$PcU@am^Wg2T-=AoLDUMM?g`ztN9^;xQuy#NP6Hx1!_M^fp6{Z*Xw=1>G58f zbl@EPiQOLRaz;>DgTg5kSabN1-k&|ij|h>4Iluo;f)`d$-9H~KoPD2o{)!xVq1)6| zb8Ej)X=IM15+)Osy7p^F!*EY&#$41nL*(}*I&cYLM6m60LrGiMGcgq%N%5x4sI`LZ zY7g=($s-kD$oHfpU}(J2)H63xfPp+D86`jA^+6=i?R9F;h-*GTrEXc=k8MH!9pjO$d7Q0b!v8B&dWK9$!Dv? zJKWIS>s7JdTgDS!%X~rHWI+J_?1f$Ei~j{GIe*{GDQrH?4{w`xG`HnQ??*3MOdF}*aGJi*`Bso$rzSO@o2A^K8T@znjA0Tq zo!IG|3e^Rx`H8q#b*OjhF>8^CIg=vE6LaBshcZ3t@5|>W)1KUIZ_(V>ER_7A7d};s zg{AV8Q*a*Y$^9wqm+DlSL06HEV!$G%KIV1ctAe<5lsf4h(3Y!0j8o|vt~nI&C-&J?W0g#5*OjpS>i zE}PKISMse6!CSt?$JKui7NA;R8tI$5y4B^i+Tq5~@wEo+PkjYqx9Fbxcx()xT^Du9 z({gi}6!21nHID9kv&8t3={L-v)qFP@hJm-i7^!MRD`2nZ$O=1Md+V;j_yg0J7DQ^T z(d4umi$A+N4WGxY)^~N;xe{{}0PizFqw+zFvwSsr6^tUS_XM}@`<;$hl*`<%MCaRj zcScT42Fn4#e3JpIOhK~q3)4brAe}myuhpFeLfi~@ZTY!h6_HuQ8cn~3k@aG%{(Jcw zIz1a1+{e1Pekl93Q;ks%{+DcQv*@k;B13J~#bF^?d7CQ>gqj&HH^-BS`ZLkqoQrbB zkzUNYDU%M5f+cX4!mB|{QZ6GXyOyDDf z&w)!1d~W~g=5fH7I@(%q$D2MtPk#2_-&-h0DDFUUzjLt8uEq9WAk12Rmdn*PH%c?j zm3@jl(}8(2dJJ+5w8lrD#*hqkm7-6)Mr}i*)&Ocfv`K5Ru@FS(_kh28*woah( zoO4}(&vI0AJoh!}FtrMvu35^BzPlx?btVaeQeAY@GR84|t^|-~#h*wMd1mQas_RM( zOq8jC?6}j(N+YrHW#B*srtAWHTBzPtn(5{$y1N;(%IIbj8C{0WAH}4W>KMttC0ZOI z|7A3Ob7mA4hzNXQifJ8Nf@Jk%n8#fo)#TQ`C{UC7dg|$AvxmztNk%*~Z)m1Ft9|?D z+2w3Pt1WL2{HyV59*l0fH?-w-eE;bqaG$izTL}@XqS@a8ZWhaP?I79C5fCJoEUhIF zyYx74>+1HKKIn5^%ZWor*u5ogqMmw5qy%MdQl5p$YD)5H>bAM-ec5_!@ni~slFj8~ zg8Rsfu(}ilp*ziWgrgo0s&~rg>yn-!a`aYezd(4LSdyDjHNECEvVcWPJeqxSaX#8r z<&)lg;a1HT#*(?bHss$F8B4pyjxTlVI`C?8&fbk*EkMBF#PoQXf-e@?nx6b1WSV$g zRbo0W#}%&-4q?U7;Bonbx-5nzPgKUY&90M(ebH^k>zg&rvCo58BEYsmY#FTUkr&eb>8QVyOJd(s8t>K{K$B;_Znf`q)?flF>XY+&% z!fK&*vS|dm}>S(-VObvXEO8spUJ?IViZfQ<@IgY|mniq0oK{BkDtWhjyuoLR- zF^f{BO7#0^qypxHgh;uQE3NfXW~!HwMbp6$)+-OVQkWAvU28*O$`-k0-I$`@8IWzl zKiN+t6im}5NY7YHC*7mNf#GD+L$H1-$1uMLnnnwU&@2qt1S`}&x5;KlZrbtp(}y-0 zPXQ>KBO9Oo;f-<+rsDf2{%ln1at|;*txtl!>svfTaJ@pYPP-L?HY=(8v2!{Ev!Tkv z{JdE}(cqQz7QUT2m3RIwQ>IjbXw!~(7`tgCPo86Z0r4pec^n6ubieG^Q>ok4{#BxB z0^<6BJE+4H$2Y=$=WvX%P^}S~g73xRwrU7yj$qj85B9|`)v7=wMAYfsfYsgjv}qsO z&5}^vCm=9qk`o&KQTyfjqwn$vm|racUz;d)-Dq$V?BR`(=SH#e`H$#ooo(kO#qMtUVnxTb>hu#CI3xpZrT{uzCvCd~`w8p*CbmHLwMH2r7Jre|RU z%J5IWvA@&qM-XqGn`AFGHlY2T;MN!)UzED}fttC9u#!_eA}yBz-r6<5?uhTCFN$$_ zb_B87DthYFQFT5;=XXt_E}LcTl_Q=_$(I;@hgTM7{JzeCYB8(pvZtz3{GVa?UmTKiBg@}8Cv zCyUf^O_!yO76_&63Ez0NiKnPZm+A^;iD#=pFR7Bc6941vv$Qtxo$IBf`|5eCr#F9S58-@-y`S#fqC1ICbGIQU`xguAG9T=*qUB1LVjPx`B8^|(H%6f!$ zT&zZ?&I5rbwdHEuEDDXpak+c6qxJXZ2G3}$p8-eSpZta;McX0tPmFcu((nc?L( z@nxI+YB8iN+3{<&%M^o#;ha$SaT31P^o;YL^#jtvQB<0!;Iq#gV^^Tx4eiwhs5!;x zWNZe{rqayhAFd}M-U(s*1hF{{>t8EGipoT4TmXXH#NSe!kBp|)8`JSSvdLEQ9h)KUsZp#~!x*gI=i=$#uX;HK-0yuKzczeG* zt}`Z_^k1L}R+sh<+S^)Bi%U9bu`(u?0RqNm}548;Dj&9vn0iVtLX3&3hWI|1D}}ZS3wOES$i0Pd=)X zzR?N|=JySIc|d3Elf}Qn9}aJgwY_zx={S;?{_C=TrOAQ7H{J0!+xg;wraQhV!j@Qv z06*=GI>)vwQSBu2TXRi(w(4^g21NC-XksyHolBkQ0+k2Gyby3jZh@JyJc%JlJ5{Ki z8Vu=s&zMY?_$?nLcTcvok;HMG1RULI@SiN1aFr0f8+mImgIcvXGU>`5O*#Bp3yp4! zJQD80>8W|6WzuPlr2E~Wyu(CEVI|J+R5;T<(IovCMJIO%e`m(6qv6#M_31?W=rA!Me{oovw-`e#S0BiY9E zxhy12#}jpAw+N6_uN8tXd>tvct>llwJw|v}t!u}maifEP?788W>TE;%HJZWYOu`AR znW1K%=N0lB25CR3)g3}UUlX7E2@aI#bP5M2c1`rM?j0)!dsQp0qxK+|?E=PDd>|n6 z)ovBabe&6}3JY=T()`-w0^zaq(=WTStMXZJjk%6givp+n`6<_Jb(O|EPemYT%U1Z3rENIs0KgNoSuSTgHHb#REu zKo)f#H`>H&@q+%C0&?mZqd8{Nm}?tne5)o+XAf55s_cfqs3B#ZB@}*Bq;>oe=KT>B zXU#`+>b{&jW)-aaPrZq^$~%_D*Mj3aldSjYu_LKl_av5uEXmF;ME`D4M_!dg+jBnC zH>mal0vLfDo`~oQ5HCyv1wh{$hGe2#dq09s8cR%kNrKO=2 z$1^M8?A5?xFtV)~fzvC!!I_4qSv|_Qf7z!w<4(?N@xrC=zQcoC*NMNlUzp9n1%xm#b*B_vAlbI#bYFEsSokX=q*X9ofdDZ@c|`ulY*&X?Q~ zLfM+TnuWCZP*FyJb>$3ghKwo}>od+aNI8S2P#)|CTWY!`8PQ_^?VG(M3d$=N9M_rutHn2r_XuSNKy}t<|d^x>-wgdpwnVT6BQRW=(5ek;HCewG~ z0dm%pZHZp+0vTBdMjK<^y<6i|oK4RRhy*-+Z7d~RjUL!u95tpl3})#Gr^re(z+@M$ z4CWd~fY(bWvh2EMcwfuSq1gdb&=$8hwaMr8X64yGKVVsT8`RLqNTwJle8)@ZN+6^D zqRR-@>^+tblWK8bV3u?onmF64_8O&yIgMKw8sb%N`wgov=&ISKOM}(kz7l5#EQJrP@AaLEf}||&^7rJW0Li&6ZI+KFu>Jze^Pw;NOsHs{-8VfHho_v0o%K~8l3Wp%OXJv9K4G4I{J zIVYUaQ!X*V59B&i5}}CNU1O2qy7M;j;x1NCd41@w6ea-(8|@L;`N-YrQx#ck?(j97 z7_(m|3QrA+H>W=DcGLotU3WsUn2$O5H375jzJ_a&6i{qEPfk>74w5@BEhxj+=A+et zC!Ua<6s12=V3l_7B;-NhRs*Ll zX+kw>TqHBKyQO_2@=Qcv*(M_7sB!%dsJh>#)2-+{*e(4pbR~ue>b1Tca1&@QbX(aX zO?91t06*LUWe;0biZyJE6UkfpZG#9)76ziJMv_hG@5y8iHi6{fEHOMI9S^HtqfGYj z=A&{vvUl@vV^H!f$7o-tT;$(T)2pfh(@kc-u6O3sv&D0Dtk|~epkXnpRt;Tzj^3;% zv(Sxcm!_&ty?<0eP8Toktg0>=&@p(@>kYSk)6zytvrFDryjH|-wb?~ShwX_0I@#$D z)7vbeQfx6{Lzz7q$6cZ>n`4-Lz6v#Uqc?vPo!{2HhyL+-x)YYo!%rybnL14Cxdka6 za5;ss?uN?_zuwN(^^)8Y=U`qhD3vj8=4D730o&0m$6uFgVUf_1wM4Z8Vr{GqQz$B_72qTdX8)$~Z;XEklZ#t=9EQ@!^iA;&>#yS)zx8ZI7e2 zu={AbHDM^8Z~zvyr}e`De0*bV1+VLz)GcM*z(dxljU)4k_-tc?EpQ?CrD5{Xb=9sI zbacYWO~6KPMJ@jb6@*itH)6;6<~vH6T-9-n#_s#>Lj&R%0``?(bmPMAV+YITFkSE3 ztsMxdux&%ERYGXAFosb$VrQhI3|rN0Yo*PIgnX(gnZn%N(w^!n9&X%B9(a8pRV}z5JtL(S zcetkUkexGgsCHJ~E@>(5gQCVD1eovi)LBnm{<3rN<(?AM5|3>|M)q1?TJ|XeY4z3^ z7&uXaZQk(|6(wwrE~Jb%m)GiM!l6s_nMVd$Z=FqPDHIg0&KbLoz+Z~9!jq-C`5R%< zq>@x9`V9J{V3b^~c^r49VO*dy_52Zze!*tgt}f}Pj-Y5iR!qKB01UaM0b~f~i;fZN zMZ5HBiKa!W9jX<}AOCQ{t7_-m-jV+%(dYV!!2p{U-^3y|I0J5YeJ$EW$C7?Z9!s|$ zFPtI0#7&iB=PI2fy2E#V3|SnzE1fVt6Ol^#I>k+J1w-w8s}}#q1(+W%KK^q6WXl?& z(~Mil>0p{azb>L%h@|-GQBZ0KLX~4rCJfg) z1I(?K4OJgMiq3Q~2oPZjiunX786Kq%ZNNd>>^!JLxwR%ReXfzI3P{QO$M$yj{C`t` zIcIS?j9I6fZDgsNQ_b$vXyWMwi=XCmYT0k=dI+TFU6Gor@`>xxzb&u=yfx}V6dMbK zd`QnYQ86pFUB4Lm#y1e%q4)?_cA2J`t3UQ|EdJO6g=>Vr1B|B zB~|9DP!w%$6ojTvES2%lY4+)z(~0eydJm=!W+1_@hXFxn9>?e!95)X5_|3x&5gV8x z`i>1)bGjnDtfT#JzxlbtHyXnaAqr?Bal4&lP|f&@UnzeyCFJ1>i(t(Ow@Eba)9wql z^l2gtpY)uzd>q^GaB*>yB=?~KA@Q)uxi%fGK;`+t%qSu^_8A%9r3a2=GwfLETOzgj z1?OqlT2%>m)EF6q>;0w@>M>7jFC3lrgs^C-DOVvYOfU#NZ>;-zOr;|%<*6VA%5D

                Prev Up + Next      + Image

                +

                +

                + + diff --git a/website/pics/result-table.png b/website/pics/result-table.png new file mode 100644 index 0000000000000000000000000000000000000000..c1124226fb380b1c05ab350a74998f0cbd5e39b1 GIT binary patch literal 111110 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�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 qjL$?Qw9DObC*Um)jc!2bgxQ8S1D literal 0 HcmV?d00001 diff --git a/website/pics/smile.png b/website/pics/smile.png new file mode 100644 index 0000000000000000000000000000000000000000..49d678dd896ed8cc46e0eb5c3ec7d93709fc8944 GIT binary patch literal 1394 zcmWlZYfuw+6vh9^CL53i!ZQgES+qqI)TOZkV$GrmL8AtWwzd@#K*VVj6s;)*vP&dN zK@lGnv?Fm^DMhL{sHIBHLJ(sOf{&I|v=FWJF{t682J+a(59j>moSFOS-no_1)hV9S zf~ElgJX6I<=`IGolN;>v?(>QS7u*ZQ>x%&J@OdYODmSavRkAiEu1W;p-2M_<+96j) zbHwSZ04RPR074DGB<@t9 zIi+3KLs4hF{T*B#_>HO_VeODD1#*+|3n0&-xLpP2EXJxY3mL~lcDyy*}|#o z1dQ%-#T}hW^+q_>9E1f;U|1_AwA)l(O-}{gt+Y2eVv`*+(|%~CX9jfl#|@N)zPDaY zXO)d`#t?ZPgT?i$9xeJcl~yfG)1KUdAd)`5)3JfE}<(yl6)dklS5y_aGq?&@Cvy3DChFAigBJPnhV^}K(Q3ed^j{qo2*5vg7q~& zrSLyB6$o4UrsXIp^qPz+5%{L!N8=->=fq`g)T0zb60Qm$i_d^N=UGy(y6sN7qK?gS zT??~l^wq#yfho?(^o;8)JUPZxSI_d`wlN=+hGs`bZg!}XzGDQ7t1Hb{og8HTen&25 zfG%0XJoK;TtIYFYH#8!@r`_^oP}us3pzQvp;UhV6<@uN1`UlHZRBEL;Hp;&ZzY9hW zZ4e1wwoG+VU7bdYxhF+ifuG8v%X^vi?pz$>g;~FP+r&6p&&C`Lc~Z|OjK)Va;=QhH zWBYw;MdJPaYVzZQ?2yE;tq!@eY=UDLKo(t}fiPEua2pC~nYC>dz5~t z0P*`bUBxRmvfR+aw_kKh8pjpczVO5Ud=W`OR!*!{)Vz;YlA05f-In0G@POO2pld}e z0kW6QO`+qRC6gmvZH@s!S!*ey@z&5@g{{WtPwCADL{yh4T%7Qx);wTS@$ll>UZxw` z!ge?Wh&H{MSXN$3t~^#r?yEXNs`vOQEH!IH2dEbcn> yNzKgW2?x7I3*j{Ilyng4E@!lg=!amH!XeJYx+2 literal 0 HcmV?d00001 diff --git a/website/rclidxfmt.html b/website/rclidxfmt.html new file mode 100644 index 00000000..0cbdfef4 --- /dev/null +++ b/website/rclidxfmt.html @@ -0,0 +1,196 @@ + + + + Recoll Index format + + + + + + + + + + + +

                +

                Recoll index format details

                + +

                A comparison of index formats for recoll 1.17 and omega + 1.0.1

                + +

                Recoll terms are not stemmed before being stored. They are turned to + all minuscule letters with no accents. An auxiliary database + handles stem expansion. Omega stores both raw + terms (with prefix R) and stemmed versions (with prefix Z). + The xapian-side of the information here comes from the relevant + xapian-omega documentation + page. +

                + +

                Special prefixed terms:

                + +

                A comparison of prefixed term usage between Recoll and + omega/xapian.

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                Pref.Recoll useOmega use
                AAuthorSame
                BUnusedReserved
                CUnusedReserved
                Ddate: modification date of file, like + YYYYMMDDSame
                EUnused. Recoll uses XEfile name extension folded to lowercase
                FUnusedReserved
                GUnusednewGroup / forum name
                HUnusedhost name
                IUnused"Can see"
                JUnusedReserved
                KKeywordSame
                LUnusedISO language code
                Mmonth: YYYYMMSame
                NUnusedISO country code
                OUnusedOwner
                PUnusedPath part of URL
                QUnique Id. fs backend: trunc-hashed path+ipath + Other backends may use a different unique id. + Unique Id
                RUnusedRaw (unstemmed) term
                SSubject/titleSame
                Tmime typeSame
                UUnusedFull Url of indexed + document. Truncated/hashed version of URL. Used for + duplicate checks.
                VUnused"Can't see"
                WUnusedOwner
                XPrefix prefix for multichar prefixesSame
                Yyear YYYYSame
                ZUnusedStemmed term
                XEFile name extension folded as lowercase + (omega uses E)Unused
                XPPath elements (for phrase-based directory filtering) + Unused
                XSFNutf8 lowercased/unaccented version of + file name. Used for specific file name searches. NOT SPLIT + (spaces as normal chars).None
                XTORecipientNone
                XXSTNot really a prefix: start of field + marker (for anchored phrase searches)None
                XXNDNot really a prefix: end of field + marker (for anchored phrase searches)None
                + + +

                Values

                + + + + + + + + + + + + +
                Value slotRecoll useOmega use
                0UnusedUnix modification time
                1MD5Same
                2UnusedSize
                10Signature: value to be checked for + up-to-dateness, ie mtime|size for the fs + backendUnused
                + + +

                Document data record format

                + +

                Recoll has the same line based / prefixed data record format + as omega (name=value\n). The Omega data below is quite out of + date.

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                PrefixRecoll useOmega use
                url=Full url. Always file://abspath. The path is not + encoded to utf-8, this is the system file name ,usable as an + argument to open()Same
                mtype=mime type (omega: type)type=
                fmtime=file modification datemodtime=
                dmtime= document modification dateNone
                origcharset= character set the text was + converted fromNone
                fbytes= file size in bytessize=
                dbytes=document size in bytesNone
                ipath=internal path for docs in multidoc + filesNone
                caption=title of document, utf8Same
                keywords=key words, utf8None
                abstract=document abstract, utf8sample=
                +
                + +
                +
                Jean-Francois Dockes
                + + +Last modified: Sat Feb 25 09:14:38 CEST 2012 + + + diff --git a/website/recoll_XMP/index.html b/website/recoll_XMP/index.html new file mode 100644 index 00000000..6b577cee --- /dev/null +++ b/website/recoll_XMP/index.html @@ -0,0 +1,125 @@ + + +Indexing PDF XMP-metadata + + + + +

                Introduction

                +

                Organizing and searching a large collection of PDFs as part of a research project can be a demanding task. +XMP metadata stored in a PDF, such as journal title, publication year, and user-added keywords, are often useful when searching for a publication. +Here, we describe the use of a custom Recoll filter to retrieve this metadata, an indexing configuration to store it, and result paragraph format to display it. See also a related wiki entry, Generating a custom field and using it to sort results, for sorting results on PDF page count. + +

                Saving metadata to PDFs

                +

                Bibliographic metadata can be saved in the PDF file itself. In the JabRef bibliography manager, this is done with the "Write XMP-metadata to PDFs" menu item. Note the presence of the keywords in the screenshot below; this field is a good place to tag the PDF with any words of your choosing to describe genre, topic, etc. +

                + +

                Custom indexing (fields file)

                +

                Let's create two fields named "year" and "journal". The prefixes starting with "XY" are extension prefixes that are added to the terms in the Xapian database (Recoll internally does not use prefixes starting with XY). Additionally, the year and journal are stored so they can be displayed in the results list. Some other types of metadata, such as title, author and keywords, are already indexed by Recoll (the default rclpdf finds them using the pdftotext command) so there is no need to add those to the [prefixes] section. +

                Add this text to the fields file in your Recoll configuration directory (~/.recoll/fields). +

                +[prefixes]
                +year = XYEAR
                +journal = XYJOUR
                +
                +[stored]
                +year =
                +journal =
                +
                + +

                Custom filter (rclpdf file)

                +

                This is where the heavy lifting happens. The filter should create HTML meta elements for each of the named index fields. Below is a diff between the default rclpdf and a customized one. The PDF metadata is gathered using the pdfinfo command. Then, grep and sed are used to extract the publication year and journal name from metadata fields beginning with "bibtex:" (part of the XMP metadata written by JabRef, in XML format). That information is fed to awk, which puts together the output. The crucial part in the customized awk script is the inclusion of the HTML meta elements with the names "year" and "journal". +

                There is some additional processing carried out by the l2html function. This replaces some LaTeX-style accents (stored in the PDF metadata if the BibTeX file contains them) with HTML entities. Only a few examples are shown here; other LaTeX accents could be processed in a similar manner. If desired, the sed commands could be modified to give UTF-8 characters instead of the HTML entities. +

                The l2html function also converts the LaTeX \emph{...} (emphasized text) to HTML markup for italics, <i>...</i>. With this, and the markup="html" attribute in the HTML meta elements (given in the awk script for the title and at the end of the filter for the author), italicized text and accented characters represented by HTML entities will be shown in the results. +

                One other thing to note: the filter changes the "Subject" HTML meta tag (created by pdftotext) to "Abstract"; this is so that the actual abstract - of the journal article, stored in the BibTeX database and written as metadata to the PDF, and reported by pdftotext as the "Subject" - is indexed independently of the title. Otherwise, terms in the "Subject" and "title" meta tags by default get indexed together by Recoll, so a title: query would actually match words appearing in the abstract. +

                Grab the default rclpdf for Recoll 1.18.1 (most likely /usr/share/recoll/filters/rclpdf) then apply this patch and save the result in ~/.recoll/filters/rclpdf . +

                +104a105,126
                +> 
                +> l2html() 
                +> {
                +>   # redirect the stdin so the function can be used in a pipe
                +>   cat |
                +>   # use sed to replace some accented (LaTeX format) characters
                +>   sed -e 's/\\"a/\&auml;/g' |      # a umlaut
                +>   sed -e "s/\\\'a/\&aacute;/g" |   # a acute
                +>   sed -e "s/\\\\\`a/\&agrave;/g" | # a grave
                +>   sed -e 's/\\u{a}/\&#x103;/g' |   # a breve
                +>   # linebreak so multiple \emph{.*} can be replaced
                +>   sed -e 's/\\emph{/\n&/g' |          
                +>   # \emph{.*} to <i>.*</i> 
                +>   sed -e 's/\\emph{\(.*\)}/\&lt;i\&gt;\1\&lt;\/i\&gt;/g'
                +> }
                +> 
                +> # get PDF metadata
                +> PDFINFO=`pdfinfo -meta "$infile" 2>/dev/null`
                +> # need grep -a (--text) becuase sometimes it treats input as binary
                +> YEAR=`echo "$PDFINFO" | grep -a bibtex:year | sed -e 's/<\/.*>//g' | sed -e 's/<.*>//g'`
                +> JOURNAL=`echo "$PDFINFO" | grep -a bibtex:journal | sed -e 's/<\/.*>//g' | sed -e 's/<.*>//g'`
                +> 
                +107c129
                +< awk 'BEGIN'\
                +---
                +> awk -v year="$YEAR" -v journal="$JOURNAL" 'BEGIN'\
                +111a134,136
                +>   yearmeta = "<meta name=\"year\" content=\""
                +>   journalmeta = "<meta name=\"journal\" content=\""
                +>   endmeta = "\">\n"
                +115a141,146
                +>   if(doescape == 0 && $0 ~ /<\/head>/) {
                +>     match($0, /<\/head>/)
                +>     part1 = substr($0, 0, RSTART-1)
                +>     part2 = substr($0, RSTART, length($0))
                +>     $0 =  part1 yearmeta year endmeta journalmeta journal endmeta part2
                +>   }
                +133c164
                +<     mid = "<title>" mid "</title>"
                +---
                +>     mid = "<meta name=\"title\" markup=\"html\" content=\"" mid "\">"
                +167c198
                +< ' 
                +---
                +> ' | 
                +168a200,205
                +> # replace latex with html markup
                +> l2html |
                +> # replace "Subject" with "Abstract"
                +> sed -e s/\<meta\ name=\"Subject\"/\<meta\ name=\"Abstract\"/g |
                +> # add markup="html" to author meta element
                +> sed -e s/\<meta\ name=\"Author\"/\<meta\ name=\"Author\"\ markup=\"html\"/g
                +
                + +

                Use the source (mimeconf file)

                +

                Recoll needs to know about your custom rclpdf. Make sure the rclpdf is executable, and add this to ~/.recoll/mimeconf (replace <username> with your username). +

                +[index]
                +application/pdf = exec /home/<username>/.recoll/filters/rclpdf
                +
                +

                Then index away! +

                Note that you can also run the rclpdf script manually, e.g. rclpdf /path/to/some.pdf, to inspect the output. If things are working correctly, the <head> consists of the HTML meta elements, and the <body> contains the text of the PDF. + +

                Result paragraph format

                +

                Here, the result is formatted to show the title, which is a link to open the document, in blue with underlining turned off. The next two lines contain the authors, then the journal title in green italicized text followed by year (in parentheses). The keywords are listed in red after the abstract/text snippet. +

                Edit this using the Recoll GUI: Preferences > GUI configuration > Result List > Edit result paragraph format string. +

                +<a href="P%N"><img src="%I" align="left"></a>
                +&nbsp;<span style=font-size:1.15em><a style=text-decoration:none href="E%N">%(title)</a></span><br>
                +&nbsp;%(author)<br>
                +&nbsp;<font color="#009000"><i>%(journal)</i></font>&nbsp;(%(year))
                +&nbsp;<table bgcolor="#e0e0e0"> <tr><td><div>%A</div></td></tr>
                +</table><font color="#900000">%K</font>
                +<br><br>
                +
                +The screenshot below also has the "Highlight color for query terms" set to black; font-weight:bold; for bold, black text (instead of the blue default). There are various methods for creating the thumbnails; the ones here were made by opening the directory containing the PDFs in the Dolphin file manager (part of KDE) and selecting the Preview option. + +

                A search example

                +

                The simple query is cerevisiae keyword:protein. This returns only PDFs that have the text "cerevisiae" and have been tagged with the "protein" keyword. The LaTeX-style formatting from the BibTeX database is displayed as HTML (note the italicized words in article title, and umlaut in author's name). Other queries could be made based on the PDF metadata, e.g. journal:plos or year:2013 . +

                + +

                More possibilities

                +
                  +
                • The sort buttons (up- and down-arrows) in Recoll sort the results by the modified date on the file at the time of indexing. If you want this sorting to reflect the publication year, then the timestamp should be set accordingly. If names of the PDFs contain the year (e.g. BZS2007.pdf, CKE+2011.pdf), the following one-liner would set the modified date to January 1st of the year: for i in `ls *.pdf`; do touch -d `echo $i | sed 's/[^0-9]*//g'`-01-01 $i; done . Note that the publication year could then be shown in the result list using the stored date of the file (using "%D" in the result paragraph format, and date format "%Y") instead of having to add the year to the index as shown above. +
                • The filter can be modified to fill in the "journal" field for BibTex entries that aren't journal articles (e.g. bibtex:booktitle for "InCollection" entries). +
                + + diff --git a/website/recoll_XMP/jabref_metadata.png b/website/recoll_XMP/jabref_metadata.png new file mode 100644 index 0000000000000000000000000000000000000000..d312add6c9eb26da4f75befb952c26e3664c1b3e GIT binary patch literal 95017 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≪? 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 z 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èU2+EUSHS!Db_6k-dGC7;fO?Qy1>_Z>sh^D??03Ik~vNm2SFX8lN7I^BB&)vN=|T zh$PngjEoqYMe4PBN}N@d(D}hP#7~90xJ%ywVbHP~< z$)-RZ0lEwRG+gVK)=cFeKbVems4*viBn$LS()9RuSy*nR_9ed6E+0cOLrd=-AQ>$Y zBo+Be5Ei4m55iJ8N<*HTT$V7Fg6hiQzMPyqm>S{55gY0OC|$A$j_3zWAI40LJ9?8% zS2<~kb3T1Uiikn^3N}WG^1>v?Isp{GA2^+U*?@T=KZ6?VKj7{t(PxTea_3_vI|x8lcB z=GsJ(;dPm^DHVx<0yMQ>(|r{VkJq4}P}S6Rd%7S7Qyt*FYjSIqg1W zl^Gczy(=P;9^T!}a_IB*lzTvQ58Fa1b1rJkpmWY)mcp07q(bX=ll_dBjv-&AFA{|R z=TBLm;#`ZGp<&GM63ANis@eR4d1|KRz`EEB?h!2oH%$`MrcAi7VSX8e(tbmxCtBH9 zN)!wa0$I;bnLlPaFLZUOpW!`!6Ragjl5lXoy*E`X^XhbM;G_LVi_JgP5Oagrk5^XJ z7PwI%pY!z{jn_*S(7Ere3}o?<$^gMXW}4ktmH}jMV!56;$o#xq zw;2er0OtDbup$KwEC{DlQpw>vv-$Ha`C<9DC;XHh=GB8!Q^7iU41T?&z-)u26nO%H z00xSfw{RY`#IjddzH{JzqHp^URFWVXA%3JIA#OA$X{P|%(wfe`9=3+pTHx{I364I* z6}|kn-HvRg1wK8(-6kE&X#6_L{k zI1)V%Pw+~HM`DcF&P`-aSkrxjXOBS0_$VIY`}#AlcBFqzy0U=YTOv!%VQk9nxuM}e z;zM2bqr-~jFS;IcCo9PuCg`AVk5^}`-M;K|Z!kz9r+^4T{tZ`N+v(mBtLJ3!h#~3* zpz?R{b|B&1818$3su1b+z7f%fuJD9JGh^8N4vK9&1j=;lr<8Pbm?8SI*Ra+fGF{+G zz=je_20jCh%K=iAS!(d`eC*c00$EJ&-#Bk>5-^~E{$v~;H|%1lRUUuiZG|e479F=f z2%hP$X)b=3j0wJWKx#RCTfnT;xsC-P1b24M3QJ0I zYidYf|F9D0KsG&6qcA7)tpcQV@QFc7Tx+|j^N(R6eShD%BZfxV(UC)^H1XX#La5dR z>I8s0Ag}N1@2KB`6$^e)q=GKLo;v}nP%V7WQlfkez*i8u;Ujm~`ph{)L9wz4DX%}= zG*AkFx(`B#WkEzp9>xiU^83JRb`6`n#*aZQ2RcK4%%Elz|FMO<>{nPirRbrsP#V*&uIMt5KP zPWk6_fTG9N?{Tp_KaL?mf?V*&J=1&D7(!9qA0sTEG}A)#Ip{L@DWw?V^(!{()0^1dtC@dSTRB%?mz9;vpY2t*XuN8wQlZG3L zgjkt(O#DZ_cZ_NOb9{(md*_-0T|=47X!k z9O|cFF&lW#1xwfltYmsc%kW3`EQM?8;iCDw|J+;qYn|b>tR2`)`zVQJ5cd1rrwRBK zP>zGN2b3qFQ~l#y7RO6$m!Sme>Nm-XqG=d!W6mC(3FzxbL3;F>!_MEthiE~~5|fV) z3ZDxfZ8(AG8Ppi?QNczB72uk~&+$QV==Y&mgb&|p$4H6|1+<2$>O0UJ!#f9IYtsz0 zJMyHgIeeV}?{00`!TYzX5gL?cCskOj0CgKIjDNXipaY@NZ#Ctt@ER*ScK6<1om$zu zgNK%uJwpB@0;3R z8mfu>Gqy5n4IZs^E+FWg;fx2EnI1T9IGW%sO)M#u5X5xG|16!@WT3=dIPm-rM*}Y~ z7ym!)*(=Z>ji!kRZM0@cjRoIYTv}P!JJo7(yk6dPNUonw@}s{C7?+T94in7K){U8( zm{xn5Y?~H$5Y@O})~y`>?i5p^r<_|#GK7`F!Ot$EtIOgx!FFWxJx#)v|61mZD*YT^r* zoi|xRLc;kLUy~UWgU+t5?D-#1U@;tBE{JJ;u@NXOT|s#IOxAdCDPL~dpPwByxecb? zE+6Z`YdrF?GpvcOvQUbTPZhFp=YLiRb=9M-x+4RS2Cr?b=H@T6!Zy|lErGxY#Avxs zRN^x6wC952uSri9(8nmIZZGulO@H6sBZ!iOK618w#qb4qjD*kjxscfcdU9SIAkHR(uyGrma$c4F0 zwMq5vT_SySH6*F3XopQ~cGy*c@e}h#5OQLaiZOFZ_YYa7QtL^DKaCMC<=4Z9~;`U!A^p114bki3V0=Qm~`C63Uw6FhhuYaWaPDP zt?Tu+1rGQ{AP#=aE(5j`kQi@l*i`O&0(lE=^XDMl)yc^RII@MOYQqQztJUV^)u!~{bCQebAciiuf z-Cw)E`TP_@VGB_`9XwxHMFG-_B|F@3MiAoLL%b zse&;G7~#>5j-wx(nThFHYMB}fHLwRPMO9Dr3Aluy_@DcJd9k?2|AXxZBXz``sP;FV z^Kd=Nfv7=+@N;EiVxoECL&NB?_4^45#{EBNDY1qpCR#xS2z^4l$1b)f+|-0ggeF}- zKGfBDc-!47xCPFMo~7*KstB+|`FHJmqKhmFI)Nn!k~vj143s#Nb3t=zqsv=i8Ch5D z#P+o@oIxRw7Bi4m59g64K|V`9o&*yi1UBf!+2Y{hD!E>Y)Ne*cMrztz7jtP^DLbl> zIa?nb9St5ezH5PgaX&j26Ra^2qjDO*iU*AD;0Cj27EI9MP z4dE!f?tP}Bp5VamJsuN`NsA_a8%_M!3zxR+4TAzOUsMw{RSt7cK;a1?`Ecojz?+LJ zB0paW&R>XpO`TGL)mK$q1Zl}>qAuaiI$57S0-65=)@p-DgUxSu5%?wHyRWEyckWJK zOdml3g22X|ci_iFllo+?BQWCdR@ZK-C8FMqi=Y2TcLIwnJ$~)(F2o8!@^<`!!`t}y z)~_Jj;PtS}G(0224uV9hy1OA6353HCT+DE0Y^pT*8E^jx zCK$uvzkj&@qCzK3iVoanHoQW0bx1@CiLHR3b;051*o3@`VqcG7fSarH(BO1`ha!b+ z-td0?REc(dVr=Z4Q%|q1-dtmp3$|fiTwI6rKpE4nf=8w)z8; zIO0aS!NA({0<9|7(%KYQUC0IYnuX3E`VksH+>us~bzZ$t)*hRQQ&y*!FSY$Pd0w{~ zrI4q-HB0_3gCeQ&$=n>$pSuwYogPLjd!R)pOk%++Rg#B3#m{5$3I?k!JZlw)>fv4h z%2QFAnX8!X-NT6)aeB&Te#c=f1<|_c>X#%1DN4IpG2ZXBLCh`WiVbrgVDwmw@IFY= z-q>GtHtp?YUcMXfKCFVQt4vUR!O@EhAnws%T?y-?Uinhf7(Dv&7ZM8;{3G<1{$^57 zFwd|YVDt3`?g4o{i4}ln2bzdO_skGfU<(G(Y{`gf2PQ25BU5&Y0ej(zN}CMYs)-#j(eSyIUK)%6x_iEn;vr3x?$!BQosR)e}BIc_z`8> z79t~~F^&t0d|6E0pICF)J!nefL8XIdIH2q zq&*_Z$;nxD@nlWJhF65}^!TUa`Kk}#Y%D6mr=&2sYP?|8Z^Ta55YoQ9u;YVb4J-yx zG!{|V_!2EfuhRRwF2EG`S?3{ig&?~@ohMM$oDJ$)^1kb?uce@03I9aVl0pJQOxel*p`issY>1gv`$K zlfCkka9GP8b`VN_NkxsPRB%f(pp88T^*QVW6?iZ7a1K1oF>9k zgph=!%4^IH+8tz5VqJahnWkY3y{vGP6JwWYToeUgCGeBL-!ZYUS*#pV!SuSv>AlK; ztw1e~jfV$QCPA{|H9kS{&kjYKYtg%d+Lk^a5EpY8nnq)>WVHt~9+k_`|bbe>P}c4FfK~Qv|rFWi==GFlJ_syhIPfU@`%H zZV{A+d#yC*{z$Wzgm6F1{?KYL$MO4m<@=2q?-nY7G z8-n0RWk_Tsb~Lp}c**F{^e-tlO}?TcW6o5l3n@jt-=Cfw2p_KIAZL$UoE^nyCMh$K z&gYIu==(JAuiyCR3wX4AxhMCsWs!m$Tq7Tb*8wU%2B^}JpY-s=VR0EhOyU_)aAcS- zHk?Q(Hm*W&Kn$lao`i%T7hQj9Xg1S=J=d#O3>GP(6C@CR0F|fY_w7zcC5)xw1ba(N zX}hh(nU%AR(O(E09LL>7*eymds?ES#(>+36b-=M6kgCiBZPF9XL?)+1#)=GTN#w@d2b50Rq zYm@=e*{6@U!E-EdFDM9u9BLMUYNwmgQ9xuMBZO)SFoFhUpoE0lREH&Q2~&1 z;HSjK#&&33?mIs(5Hsr<%7d?AXn0r=T;?acL}|j~ucd}QZH`+&2}$2Xo5}NXY@UpC z@ki`E6p)?`I?ST**-ZBuW_pJojFl9WmPP?S0(G0{4ExEA6XCtFCeDpLMf7mMWZ}6M zjTQ?4RNZHhauYoWj*6<24hqS<|2zfEZ0R-iN5l~z3WXD?pgNBT78$)LFz(mZ`? z@Xk2}qQyB`$>2$WLmj}M`|0Km4*sTe0a8Pecy1KfO8NF+WTBsTgrtHvdKC=~DU*ep z9UUD%*Ia%(Z7h;3!m*3{7@|@y=ZvB$$(6UY)6=PJe9T$kEP@6U7L87N;&Vpj3NYnn z%+$p{#lVYIDp*@zf12ZA)gRg}Ph547TxwZOXF&Y#*R7?w!CuzV8{9hArCovQ>E#LY zHjOvGx_~+aKdf!>Ss{#48W|mJ*xJmjFW>WV+j^Dt;&v3P2`_B=27bm6?}HO>VA`M; zhA@cSVXL^VMN@(=PBmQWbg_@0JSoT&<#H2D&*T zsjq~oS72O{3_g76P{#A7M)|sl6_1rLFft;EH$a=-bS|KE22Og63DvEPHO-~0m)(Z~ zOowzL$4FCpHdkeds| z`0BP(&Zw2j5LSgdHrVW&Eluff1MC7RsGT*V4*u?}{nH{|tJ~Y1Yt9vR7lOzus(R1b zu}%-B(S67z(kL@%hra;Xs#)erIH3?(zo(du_Zry_VYaAKJqDN;5?lZ>SPovv1l9(! zK!5aqf$vgL+k>o5OrD>vM zF*1;;%o%HX1<1$JQoK^Zc#Q=fJn1)5*~ptYp;$8tBdq9&y*(RzT-iL;RUC96phrhX zwMvt7pIg1~*06>FNnn5-_a2TiH8uTE#0<{?64X$jL5Hh8XYe(|Cnv02d(nD80r)FC zF6b%}sw}FYRfB~Jj}lb0f7>Z<|8sR=YWks|&UW|Q1BuJmCuegpR&As@bIA-s0(t39_$N>xa_Ta z95;u4{P^+vJ2PV_L*T51oVEfb-dL+X`dFFUxWUN1_%%PolKY8Zy7^V3&-+M*)2R!7 zN?b57BRxqf@0vWu$*|Gwn)dpW`aYE~Va3tkmBojGY`9UmU>JG}ZI6@Bv|Agyw@4nQ zY!m=T-3`?DGj*aUsn+~HzHc_V7FSK~UB;%`QtIl2lH!S-LY(%E2q`u78!rx0c$mUr zoPF~7nT_Xw@0Ya@iu|R#?Cfi#ncVgu>WQ}!s8{rd)>hGO#U{hNFNG&Lq{`#pQ}OmR z8tUu%fvCR3z77gr#rm!u=!QC0NZ(ukWgUbC1^tV&=lO#}-I>ELUE4)P#Ra8Dg#+Fx z;I1FH$v8ZT%ahN)@LMWMC{JFlQXU(~D`Fm$ff|qhAzPTlwJ3Nx4A6za=VK*r=f3~2 zP|f;JR2jW2*VnaCOKwn#43GTg_t+CTV7S_7ngX)`AfFIH4Tm8Zd0uqI-5*Yb1p^`< zsCya4#3;1V>h)2y6JhbLe6dZPJgQq0_1tH||Ku>3jmTFca1w&%td`+0XVB7pd9A?E z@%?Dw8RhDB!G}){uf)o~Y>aTjTWOjQsVndka|<^cEK{{LFglE<%luKnpXy zh60zaQbFfB0<6-VlXXrA_ivPf?r)D8uY4x=QoVkBGJTt#5T#VUkOD*Zx;itzXP6Yg z*o&gS))2_j?6vJnLUVa_84z%ZiiFB`=C`JRIYGvi#NC$%^rA$!=~BH163QwU>Na6j zFOQBo&L7_d$HO4SK6Es(MqRUqLR&AOub_{+N&HAp26|l{r{zz8I2~?JMGP+)FXSsu zUWJNfXIFZkyn^^30Rdc7?WaxkjazNW|J4Fyj;mKWe$_jlX^r_X+6_YYee~-^*`Swv zGqy0Nd^DqMAKD=$pZG{u%GVbaPi&v|U~eU7Y>mU>z2v`5Y2c1ICM_~<3#{<%lI_1Yc!2{0 zj$rXC4#lT&+mYVFIWQKgsi`3k6NqPoO6r!78>ic}u&H)FEDvy}fWQM9adbd{IR)wN zV1+;z1S9IBQ)_I*%g1txnBnkT{VZszjg-2;Wwj^dR%wZ#n@6C5o>`3(XjilTAsCZG z4o%ERZ!(1MWC20i*l3^zz;K1}5*Bp)dw-V!OdzA6y2p->Oa<}WBnP4frl>}ldpEvT zOyz?Ew=kJYlyD0fJ25^2u^i~Ywh;EunrlL&6gN3!Xp(21c>H|oAt@l(kkKElR6=|U z0N9{G|KTO_?W()7(8bo8A@x&&l8TBrp6StmmYSK}fC3+G@d_=%&{lC^k;d$5an)5o zJxTaFGcu|bxjz*_`n z6(Ql-RNk4LloJu5v%_&d#R1!ij>@GTnC1HcaeVXd@)*dc9F7iS6VfHW^htTWq##Nl zg2j2SjN#wwm1Hg)lUActN3v`JcimQTRV^z#G`v5e#FHG)lGm z07!to8xVh0b$v|;`VyKBw|5HAu-t~X4X&5?Xhw-AlJ1NHB)FZfH#X{QhPp#E3i=ER!N>YlUtwYoR z5g5^C-eC+vcE{dBJ`h_5AhHzg8<&U)CGWEhNU~Bh5=TLn0szWH+T-JJUjfk#IsAYa zfvyCuXTVP2Al~-6IwPZ^fWvihB_`=&C{O-oa7(;m+vJvLWmVPqtM$^4f8CuPk=onw z)_h3>gXb{7dmV~=u-)tIT3sM)?HRlV^YS+UF;42a^ zfvH|?e_Ynv$k>o&b)Z9R*&ET@$|4B*I4R>FLK2{i_t_E!9~4Z8LrR3;8AJEX0pVxV zUi%!~-94b%Z#S=k^j|1vTIYT&6*6Xgk4=?_ld-i`6i8b$vjrzA=%(U$)_=W%ZU>O$ z!lJ@vp;e_kKf5a9Zv!t|4S7d|;I_uKVe$(+HTLz98+)>$x*4xT%pa2H#? zky6*m$cRA{k$Kj#GP83%Q-+@3@thwFNj~k{{jNH`4HFq%r*KL}u{PbkAbxaz5aXY| z>veJS(%#r zN=8AE>b`5c(uP<7=vkvoCm28{m`^Bn`$JKYwKwmwGx@-W(6}Ld&#zugOso)YH3W>9 zxcFTF)<*`)Gt-`J+8Cq^q-7O-B@b%;-W-D7&B6?xG=MoH$RAz9{1>IX^B6PmKh)vv zX+6}}QiP@dR%W!AT=)O`m&9+E^`o?qL=Mxu;UJ838Ym+n#SOk(wt}O>1iqvnLTxau z@r@!`*8}pX3^&sP*ldvbX!@K$G}Hc%ARz1!ihhdwI`<@iHII|a^GBQzsHvyxZSSuQ z18Z^(x*a|IyX_sM4)b^1YISLZ?7E-FJK?;PLFYb%nlxac_7ULu=fS zn5nMLC?=-+sQleZ)s=FdD$qE6A8q=ngQ|Ky7IkNk9D%R}RR+eEFERYHifQ$}u^5wT zN~)Z!Rc$VslfTzYlNBag$O^(ahhEVG(PJpd*yC6A`Qmcg3$=DH-3_tv%i?32NGeze zp%H3oSfPgPTV1^eeo_w50YFs@TNQ8&WWAKzG}A}3btZyryCmqGoj+F@x68qYfysN& z(W|Pc1Y~~%X(yym%QD0-uB;40&kYL&?(KOn1pJPnS!pLRlt?st(tMl3{FY9vbY?$d}QY4;f+g8?SZ+*&Ak)PN|@a-QwryX#3i5 zfmV&3$je`)OKSxgEnu`J#ELb1hFor2?knl%Cjl4`BZ2hguDETO4#wR_L1Mx%efIKX zIFpV%>eE@UKD3-W=X*kcx|lfpdM8 zm|2M6n|hK^9A`n%fC8xVAvTp;IXO+;DipN*e})xZ3`8x^Pfuq5xV&4A9C+{jxjyx1 zdJkls2kVf@$gxOe43OV2L;Ski(er0oD3M|fS54B?b5ICmoQsl2;YT2y^nlFAuDmj; z&_N}ore>gy;Nay&$~x?7D4?+dTA{u?2K+Xlr-#8hS|u8wNdoRj2LDk~#NiiS>*Zb} z8)rgbq(GtyFhA@`={WkYg7rvg0&q2evpC9fz;y%(U7(XjrpG~D2WliR$TBd_UFUb* zAO$@q{2Mr@OiWA&i3#Im7(i9~`srN-bFMiD(yFdDn8Q_AT%I$tY3}|zCS0zpRoqt` z6%bX(cHB$m0<$Uv4R@uJc6F~G%=h-SrzCfE#WO;Ln$|<&uU?+ufnp$z0I@psTg{f7 zSGi=eeCu-PqV@g(|TSMgV#M zR;}8%02$~qz1H{z^*Cm5>*C6i3YP`$fZddwudgV2P{4EsHIxg0f>VYD`Og6BV@ZEg zUA?QXuU$+yGIwy6jFPhH&XGHyPDTd$RFH6~X}!K|RAq*A&H%?tl#oz+Hu)|gX@QJV z!k!(z+lcWr4ulk)3==7Rf*dsAsH4XhviQ>Z0U?sqAMTRHue9DA<1e7(nbqn zzTgHLSPr`DeGzS3#k!Pg-CXx=$Q~97*gfC?XYqC#OpWtZyg`@v?f7 z|A4x;9|bgdpky&IXH@Wqy$h5TYbaD@P5y3F@mA&uXX*T{jtcVXG%`$lOhy5&+s3}h zPomqOq>f$x4mi*Y80hnRT);=Sg6UyjUmCw}8Yl|jtMZ374^%E-i<+LMX81~^K!6o| zGcwX)_B*QiKv~N=;srZ7SgmMVjqj$*WsR<_{@tLvckg<-Qq07ZG`M{sPk_SyYpg|v zZwM5l+1Eg+46vGioW{=|1kH4U35nYkrQ5v|ajmJxJ$?0Gt)7 zbmYwrtsAKH5%cXZ^%)=Nk+FrW%2&LGXMZ(4j=W}`8mZhtXklmCV}gV=V~P#njr?!l z0>KaUoU0&Ya8L#G1dx~fJ$C)Oc@*fw z4yYsmMq>vt3(#rc=L*k$rluA-oZQpca0ZsAwuPH;C?S_Q;ILzMzrW{P9g+Mh(~sa8 z?w_)LEdv&VtYS3MFWIx zTlh`57id}Jqt;6**RVY)Y*nD;e9W0nmmxPOhW~+ff_Ky2|ESzRURjd_Nqf7h6X~a? z1K4u?!^|cFc@(Tq2(f@z3=m<7CPzcQEYLmqld|*1#_#Fdr#_YdCp6H+@6Rb6h%TrBY zumDzgQZVXxykoTCI?<;1nOeFm2(BF@eG7{Wfbq6D2Zt9|sKjjAku%$!pp?@n$ocpY z69hXjt_y&X^PUy4&H>+D0=sW(=H$w0-&3se>Wfpe=jou2M24^fEpct3TwS9?OWa1G2#3 zVZbxW838Q)KUz4-J4D3_t~-y07n{_Xa^GEf~nK&>uW{Wd5r}8;U2m>DD$k zO-75Isl3&@E8w5nvwItu3d*sga8~4zr?q|1UxPy2&0iJPhKs zDgRqeAQ)ueAgKO7B{;+XO7Qe+zavg8$RH!vCf7|7Qmy%X+l`0P%seZ~ns< z{r~=7Wc~l2SNp%c)c@@bXyR|S+r5};3Cv(Te2`{(yabwbs>gUsJ zR388Hif>Tny{)aSB_3e4yasRE?tGPUMBu-NkfQv4!2jpNe3Ol|s&)K=+G9h-79Hk{ z8OT3yL&X639Okywc0Pw}`|5Olz3;gjfwTB-E!i(8nr*tkh{?lcrF2u;^OfNW-b8ze zSNr+LdhC*V>G@IIoD~kL`yQIJIR04ax@MvW22>Ht6b{5>KbX0n@f!|w;8~yaQHQmu z>orY}Sc&RhrLkR9eC;TIxK}oe7`z(!N#;c`$t^U{WzvW`Mk%ts^=r3k<^KHN88>|b zG`P$&4z3|0Jn%DIUs=5~?|vsIRnU>p6K zjHO)DakH91JKiJVT>zG1(>p8d%$2j(Z9ZZnx1W`L%jLUz()s7;rH84+l6;f=&p*_i zV~H<1V}=QNy3Tvj1uqfh_=Uw4z84L-0`haoU-<9Zr_H`d+iH+)tdy8%n;CU%E#Ssx z(VNO&WLu2l`bDs^bNzwFscGZxBPtsA#nGT6K1uz0^74p(R+jsPaVh8aX&}0rQi>Oi z{O(#G^Nr*eKh(5+-NL2)Ql)C1_F(w3aPWj+QocQDn>cuvMDZzUExAduC&s{iEmW22 zmxE6p>KXpSdbjS$I*pi|pO42qsl;sGt$L{TOlXif5R$)dknL&M{Gg=GR&UUGxMDV4 zBOX)y^RYog#?ggdtBj{H#)_Aj=+fSba!*N0>53C$fC^433r=lW(wZXbgRqMu>pGvD zj5yWn?}q{R2PdUtGT@^+e2LS zEstF*0>0{gK6gLru|GUNGZlRmkue{Kux(h!AQvuImG%@S==3a1ye@4zT{q)v)_CVD3bi6t2upkr^vS=}_lasqLP5m#6a)YvOU|nsmJYeR=*Y#t+L^0p3ZH)GG zoL*P?+wynUtk`R%jyiLDvhL&hzlX%-Vf3X;{)20`L{rU8`g@vcN)`6n)v+Xv!hW=| zS%21Ee&}Z9!T({WSl{vVu)tkYXPIJq7?IwApdpk+FGVZ7i!6E8!U?l?jlY#k>t;wIA*PfooI1kF)mxj1##_V8 zzFD&;0f`+y+Vyp#a1-?I(M!``yZM&8yve}QaLJQ<*xO+1t6Q0-kee}ylm6}3#XSD} ztJHIk4IfiJoKxI66`x16;y=jgE-fC>q?Xn$*qz3RKVNgg;w5{QHCNBsnaxbmm^^<< z$6il(iI^dLMS$OQHr+NXha=-37t)@o@I3X#62*|(d)mM8S{DOW%chO{+8_1v*$#(1 zt#$Gi_pH9C6`JxBik??1-Y)XuoRM+gX%JFpguVsDj zQFIaOMQz~H!8;YT`MLNH@71P#O2c`cLc08LZ;!ePIb-yiLZZigGAx>U+4kFs$1T#I z&j;+n9=|#r-sp`)yb?LP#hLRpr)6%td*fE2&51$y!=<+>A9j>yL{>kx#bV>9q)BGY8Y}sRQIQk zdBNAJ>G{GvkI{iYZnglU9`nAc_x7oP+8?eqmHO`UEx#*3>Dt=oM-v?TmS04Wn!Y!E&D)71tbqLfkW@mS8QaviW)RKhIDf7HIV5<1f@3-pmpS+^0S zz9gD5_PMe$&Y92TFStf5_CnhcWOCrJc@^wS{6lyBl0c1OE)2}HF)9H&7XSS3;#L=&ILT-;k7;m3ht zgcy^kWo$ip->qo}j9+Mc(H_YjgGt=toXMvB8_ZHcCe8Lmq zX5osc(Qwf_bA_qPV>}IJ;lYw6d^BaDt=N;31#%@9`QyO1G6C8CDK4lJbw781`s<4| zc;`Cp`4tZFy3{0NW&X+DJ*KHX&thq|V4+=0JUPS-JFkyp?S5xqNJgf9ximApaq+P? zV|(rW)$@cK>qJ}b_9=LF&p2ec^p?H%nNu$xwCBeZtO^xo&3$USM8{zh{jk(X69l&! z&2;=cl_beCH~O$&9JIM}K6}{TwkL<5cpbi1q?~Yy8CU3HKFR0XnUwA4HY9m#p3{9M z_F=cjzUSOtIfYH_ad*z#3ge4@&7pS`=Ff1ou?8r83!Q8Q9}W6wwfgyJcbs?oZBBKxE;%unevp8Az-{`SeAzEEmO%n=M`3F??QH?~^3AwXowg7}8|s zBItKsFR1Sxz$udnbq}p2UkYm&p3W2{B#+UY;MsbLnkiL-V-9+!mvd-~lg#o#U z2^zrzLZWHa&H0xDHE-=Xe$L~W{OZD%#^=Vl(Z#Xmv7OU-ywhTQdFFr@ta1H_acKV7-si}Ep9btDni0ocEoEE9-u9aUFMT zXPUQWTStF6#K)A>60V1gb_LFKhMA1^%i(nF)6QB~aiTM2msi8PIyzHNE$PFS4e;cP zLLa$fD@G565OKNlYUdfhS?K{3%u9%u6@-6FF&Y)MV#TmNZ(?DTIZ z3#k+G`cK?RlZnR7c+TgDBmArVE47e}Sb+yD=ey=aRFQ5U^h->RRs~R7PmBqJw88TkF=He$>(UMFHq@a zvrDUjvICzG_ZAxQ|54!1Xfvyt|ExVIgWouKo93${k>9veTJ;_?|MXmbHZ2K?#g~M7 zKGwUG@(vS4o~ob#i<4o&nxYod(Qb_^!Z(dVPiL(%GozxqE@~aFZ>p`JMkLVH_vHmo z!aZ60pE)E!-H8dzVvUCLh$cDjtxR=;wE*McBbW1+Onq!kMYBVNz5TB(Lg**&@SpVy z5hc9Ie{Au*;_qxW#)`7+zNCLxzWUln3054PV!04vna2I=c?u^1s`zi8xgSug-w87m zX1K#u=#3DvDob_uOs7s?WqM@zSdh)dL$CXDx>v0{p{UBO%t_`wZ;JC1qnoYY2;GRU z$41D9+NjrUO+6^{;`3e*c(^{pHtZ17yM~vm^`2wTEMMir-un;}s%L)jPl7!>>&h=) zq|`NyIDB~e)X+u_1)<|2t(qKvLm5xbImA%Vob5_dweZt5(XcG}LF%(tnL=O5me;R! zDJA%67rr`*=X{tcSGDPepLp<~tSepXg)!#9EgUs$rC_}vg$e(VX04Rn#rq{rUz2GT zTCiW3o^mLK+;4gC_y}Dulr7(&mpjvb#O2H-O^C!BS^xNUIGefWQFzW?S!{n>fZ7Y= zvhhgNt>Oq>`&#%di!G7oT-8=73FDtd6u6|5akwV_P#bdfeKyKlE=uFSBd&Hkwqfp7 z-Q)#~%q#ow!7}1hWP2=vWM`5~bj7LPX=}xaK_@TJ?B1XMhp4xJs_KijhYbWp5fGIQ z0ZD0T5CsIKyHmQQ8w3ey5D*ZgLpr5Hx|>UPcS_fP@q6!m-yK5-dN1dmv-e)H=URKt zgO=Y8YI6K3yN7&-*TPO*b4f;%=OwDWxB#P9KutruY&M&quz<)baU&TrdW<>%wI@Lp^A zG$HOFZT#Gn318LCe{JE39!E3!*afA@>M~+_OuJ{l;d*15l1&?@@}hw4e7@I2g4$ux zl~dUY6FX^m4JVd_6h~WD|LdS}PkTFyhXFSCi*>$tjAW)u{f2Qf5dwJXjUjxqTd ztsmFcElC^0COSJt5uC^x*+$LkF`(Y0?s(5kn2fnJ$WJy=H5}vxm zlUYrDwd1*(M-JN@Uby;0-e7~33es=qhSw72CU1-ug)K)+Ka z@tk91qT^@A`#8NXk1BcfQmTprw;m#u8VK0d#+6~WQTLBK&VJhvwrO_J|6$AGw^jjH0Uqe$csXrbrtwJaD>vzo`IeQttzZg0lO;$1qEU~>E$ZV(k zWlV4@Q?{Rkz0G0A8TXkGt`Q$9Pk};eF}v0e%hdZ#>GK+fpD)MG`bworvxl-JiSZj< z^avazCDQVLQ91>P+gH;?3cMU($Jw`Ds;-ccuw#w8djC!c?c`q(q6e>pTr50DcCl2^ z)W-Jv-a+G?fZFgdMKm^+IB_|~6^(ni$!)8YW+e!&pG1x494zwBq^3$&B`mySKe>7ER0=uVnGB%U^Gt*W2M z^efuy#&fVM^sG9|?r#?)tsHl-&5h)qxcbP?IT3SQ&^GQYH|eP6GbO4!;PS8&1%X>_ z6*kwI!*f;sH^YL;Po4hBbYsr~!)U=I-AW@W%A;hfQja+9y)#|x~f>k$tXS3yq<|N-m<{3uQkM^Sj#Gx!R zJ2$!}<^C2bZatQnjosx}tIeW5>v(Vb$UFHKQUj*~QciyV;y&s1^Kieh?UbneLn0O(Bxq_YNK(?7#Y?GDQD#t<$NbAkJO1Zt6>CEq77&4mLSC z{gLu77s1NO$7`{pM{Ax!#7FDXJKw{KMQOhU1e^=pY2rCy%{Z`?5&v+pP=aQ&Ff_q_ zk@Wh>lP9BpmR8&q>o?eSt(NeyUS1`T{rOcF5uTrgvzytrQm2Zu_Hs>tpMSn%%>A=s z$~Bq~UXN~ELvJs78VLziByeo?|8ZvMN*A?A#N~3mjYC^+Y|1Mdo&M-svZU#jN9$fv zH*x6BTu#G?_}9eH9{li7c%4{$q75tFWx@4eS6*Y_M2FkR4OFlWQ&S7&rXE}Bs$=qC zuJMyf7*8YbF~0roMdQbpiP?pH*|`j{!OMxypO&Cm8Az(U(5dpZWG?eWRP}sdrFj9b zy&YSE&BV^ogJm6&QqD0YmTdD=KQAvYLE2S}g&FiXpb#byU>1Ze}Xq)ZLxRzdM zM(Xni5B!FOvtv9Q>}6>bs@iraQGc_kNK-G3Zjsta3(`@Ix>w>9BYJ$Aiie`jOvQT| zmFc9U&4i@dLSN7seGe_C`N=J-!Ow5Z?Oyd}BtzsZ0>*{l+jCi?g4bs=pSbx_`aav$ z56$kEqMB^oo=}KwBd(%Q z%^6av#6LxCd)8fVS6@H8P+mG^83O9@0D69-FZtr~DD{X}mXLvQV~`)3e0c(lACFcVjYRj<)>7He^BU}HwDw`0(2 z+4w8WZ{mnTtQ*+} zb9+e8D*iG?o;XV(vp7l+qfWc}lDiH%=Qd@L|ESSy_`->GUtVK3sUq-e+Oqp!$2NoR zoWjW~xIWeQSUU_M171I%?vE7EZ{(Jov zJNcuf?$lp_{*O~G!>Q%&f{cU`Z&aZx_bl;~kFh4^v;7DoInCr#w&ATMnqHy)bV}t2 zN0yB`wYCzs{u3@*Y0h(uL3h-Am&1EyaT*Pcs{XO`#fIcMjn;v6>AY^*TdNLJST02t zlBB- zRpm@_Rw5L_)srd9a(;s8ds^M42nb5wFcn5x3o2W+jacrl_gLt>$TAWwfhxG{+(d6{%}&W<0lDqEk~ zWQsc5>HDp(&z-4;q1`W+qHgj_H$7Lw_$I025;F6{YyxEG8fzEqekCcOROtP& z6v+-u)s515JwcW8JE1m-B2F+K=^FD0V%QOspw(cy{r|zCJIq)TC+V z#EqM-j+=-`uxu5mlbY<YRA)JFliLRnH$x;HR`8)>-tYvORzLP9|ITcA?%HowoOVftS>8FmK%D$1d zJkF?Um*8vq@xJDRs~hG=ME6q(gwL9!J^AHf$j7PzPDI?|)RMtRhjj%~Ic%5Z@vr&E z`6=#(#B6B^WQPccxI)>=OKOU`@7;;mZnL^V%+52oA?ByQcxtngKen!sPHE(=ls+qV zUBcz+t@!1z)$Hu7E3s9v5_6PVbIkp|G=MOD5&~ATeO2ftW+T}>D zLyG#!)lBxrTg>;SAqW=E5Zf%KnjFYMG9C#1l^-Ma7}$#v3Wf1E5kfJR^QW>%Y8@@* z0nMrD@U0fQQ}4N7o~LuOoZC201m1ajoC}pMbk498jBgV3ywV$BopXteZVvG+ieXLX ztr|rA$feq`KEv{D*M4pcf%0I_PUuCHw7d?;tyz|S=oKwHoK^FSpOJj}nWpSJQGYFV zyNh@racs!)XXgCx(Io6WPZjpIu3ouu#dUw5a4OJseNy%>AT=@BN3oW-#q4e}0lTU1 zc_m5qxyA@?*W}sR<4PeXYc9>!qO}@_^?HLc1%xS6K%jQzK@bBeBV@5IZZcn-#WE=Ap z`Hxw0WHHVqo*jVQ4Ei?BuH>1iTf`ftIZS*q|EbuNGE?($f+CPdE{vyQ?N}&elE2D& zP~f;=|BN**6W7~fgX$40Zg$0WPyPe-@*gY6jw5!jz)io>PUs22C0p1-w0+TX64z{> zTkFQ%ryKN}O4pv97ska_SKXPih<>+futCi@{Sn`hNp)HzePx~)mv{m7tzmB_u;H4Q zPN@%wwV=A7yy;$C$tYSKiOC^al4Y0GO>t-yb)k!GI`f#O!w)NbUg$XXV!ZAjSqNHQ z&_cf%YJP3`uli26jPf0h3xK1jb~?Ls6B6;3q#kH|MNfAd zRa@6e7Y!)>SPLNA5S)_}|JX`fdHAVwqyGJwXXH)dl|NvtPx4BkO6SxMK|i02sbnL{ zZo~Q<{EMMHDy$qVtVId60`5BUrLZ5W^|XUd7=*Jz^K0`$Yw9D#XpP+WbPC5fe<}K@ zA$zI`xkRI+VDaCk%4f#H-mD*(aJGD1{3xYaXyiUIm_}p!Bki(_U$*DIk##&zJnwEWkQfahnC0)Ft86K*9Ov`bl--Bu(yT6^^E<1M(M;;~%u9Vs^5O`8V;24FUs-r8d)h>STSP*C z`a4eIwRvn^DQl<0+bg~s>oS+yo<25Lul+h@DCIZgR^D;`3oYpB##8yEP)jMLQD9876x(h@buhJn~0x(kii9 z>BCu`3jNzFTts-NkeZz&XpmZv>?45tvivv06jAAL_v5rBIc77h*CByhZ+#ghX&&jz z6nCnQnHVfjwnRDZ4KYqTh&2ZcYR;GK|3Du@&70#Gvn>hk9NCgfb7>>AH%*_I&@4#2 zhip!E`bT^6scP3il*U{TL)mA>44-W3;rCqqNQ|T>)nu;}&l8K}wJ}YCHgaDQ1)45Q zlH9}1V@i2Y6OoV^v~=Z5#<9Oo!@OZ2++}dO7`Y(G=R{dZcPK4>dLgsix!6O5#-+u% zP1rK0TJ)7?0kLsZy<(9(luY_I#Zbcl&s}c$i5NB;uPkQWMs)?-K!wLa61i4ekf8Ck z`2RXyzMZ#Sc!Tk=QCqY1=*OW}d2s_YSoU?t+_#BTczz+eThBi;u1nvBtV@c~$ zb-jN}G50$$x?Z@VIZ0X9mzti>_6REF;`2whYPazor((0{ol2aQ9Sf(JUg*Utn$MaR z5}{Kf-k;)$JtraKX&`aYH z+~@Ar5!NrAc;e*aXonAGeVuWpsiRFkU4E8%=yk@ylIM)GgwQ9t_>2z8OpZbrop3Kh z8s0e5w^+@Y9?A(xrex92;aqq)#NQD5loV}28fKTfHVOxIGXsPPt@oUzj2KxeP44d{ z#k-ugY1O*uGP*8Y6pp>0zM%HL&!;#fa!>iaQ{2!U{Q$H`nI6aoknQd_85Uv^uYcT8 z;0>LUt9_we-a7qvd)UfJ#`X#N)ILw$qHegVcFihRYi9=o(&xqw zNyk2h*n}CUZ*#m{-#TG3v6j0u5$o`e zwWIG;B}l);bn$b#kqd_xb!1KxYx`OYVyTPopQ!D63~)Zep3@xqpWO3`S*80)y3yBh zW|*|(`}8Uve?ric#toYhAN>&eD1}FPMin`B%0Y>t*4HRi$`01-uSGa}@Luxqun<&; z`S8;VWItCrUc{Izq2c0N_Lg}eoEE`S>Wrfh`>X%K3y#ctXU(UwI;C^lISq!Tq*RNK zRdq~{86WA>ig*)vs|~LfZ760O3T8hat<-wmW9)Ifv*jBuqV>U-M9z~SjU>aMgh9gi z9%@D0dv@DKWipa%Q5XJvw!l?_Ks9=@DnZH6GOPgeb)Rsdw<&T3b8FhsbVn-cJWO!T z**`Y?d#^s)EnITCDkAn=f9ku*xKpf8BS~66(uE!k>%t8`(X4%pEuQPLEkT3af zPO43btp*!zeUG=HFAJ&X={m;yXfBeoWGCt~2mi(w;hlP7tNks~wRvH09y?P0Grjvo zB~xn)OMsvb!$#wbdV(ByxL>~aeatTsa`BAaQR~^4BudIq z{WYC)FDHicYsi!5yX&n74-V}b-)Hmxo^Bo0?!0ER#NQUhHlr{_qf@TH=Z$wuz^=M# z2|V9f&SiMBFn1*Jhirr{LUWs-v59g?|gig*%9_M}+hTJ;O%@UmYnvR@g;skRda!atXp=eU}^SlD)o z`;tGixQwCKxo9ydvU@+EsivBCJQDj38MJhii8X59c>O5<9lURR2X{@e2i*X&2Rk#3Nzt{VA_;%=yW1A6 z)y=dVeaE;?>IEAruT%HyMKe};oNu{d+gZ{OJ8?!8vS#=^s6Fhg&Ut!O`Xdl8Y3Y#U zKbRI*OOjG>Vg%{jjjsvU%!cO>C+LX!NL7gX7GI;1cE(tma z(%(F5>2$N%-I)2*r)f0z2}ylfF=FgZ<$YBsvSoeyhto*|e1RGKI{ z(?n}+uN}&YFr(VVdmUnHT~cj#eqhQ__D9UknxeB6U8{rAw~c+Y09W+G*_`!$H44^m zBN1_TDaur7xk4H(z^OeD_K=;YGqe$B2U( zMerTQLTRb?kt?}}YY1{EHw0-TNyGsQjz=CLg!gz-9Kw|WEWkmTys_~^b7TF>ZPr$3ez z$E4<~>F65C4x_zla)MM6UIh061moKl^qMINlwSz1xULQP@aO%0AHIFkg$>OX8QJ}9 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/website/release-1.14.4.html b/website/release-1.14.4.html new file mode 100644 index 00000000..098e81c2 --- /dev/null +++ b/website/release-1.14.4.html @@ -0,0 +1,53 @@ + + + + Recoll 1.14.4 release notes + + + + + + + + + + + + + + + + +
                + +

                Release notes for Recoll 1.14.4

                + +

                Recoll 1.14.4 fixes a number of small + bugs

                +

                Installing over an older version: version 1.13/14 indexes are + mostly compatible with 1.11, but some new, relatively minor, + features (ie: duplicates collapsing) depend on a full index + rebuild. The 1.14 date search feature does not need an + index rebuild, the data was already in the index. + +
                If installing over 1.10 or older, you need a full + rebuild. The best way to do this is to just delete the old + .recoll/xapiandb directory, + especially if the index was created by an older version. + (ie: rm -rf ~/.recoll/xapiandb/). On very + old indexes, recollindex -z may sometimes end + with a backend doesn't implement metadata error, + which is wasteful because you then need to delete xapiandb and + run the indexing again.

                +
                + + diff --git a/website/release-1.15.html b/website/release-1.15.html new file mode 100644 index 00000000..d305c95c --- /dev/null +++ b/website/release-1.15.html @@ -0,0 +1,194 @@ + + + + Recoll 1.15 series release notes + + + + + + + + + + + + + + + + +
                + +

                Release notes for Recoll 1.15.0/1.15.9

                + +

                Notes: + +

                  +
                • 1.15.9 fixes a startup crash in 1.15.8. This occurs only on + some architectures, and if you are not experiencing the problem + (it happens every time if at all), you do not need to + upgrade.
                • + +
                • 1.15.8 fixes quite a few bugs (see + the BUGS file) and also + breaks my promise to only fix bugs in minor releases because + it also has a few small functional improvements (which + actually border on the bug fix category): +
                    +
                  • Searches now allow negative directory filtering (all + results except from the specified directory). Other + attempts at still impossible negative searches (ie: -mime:) now cause explicit errors + messages instead of lame results. The inverted directory + filtering is accessible from the query language and by + checking a checkbox in the advanced search panel.
                  • + +
                  • The GUI advanced search panel now allows specifying a + field for each entry (ie: author/recipient, etc).
                  • + +
                  • Added filters for .war (Konqueror web archive) and + .mhtm (other web archive format).
                  • + +
                  • Result table: +
                      +
                    • The detail area now has a popup menu similar + to the one in the result list (open parent, save to + disk etc.).
                    • +
                    • Estimated result counts are displayed in the + status line.
                    • +
                    +
                  • +
                  +
                • 1.15.6 and 1.15.7 almost exclusively fix build issues (except + for the indication of the stemming language in the menu, fixed in + 1.15.7). If you are running 1.15.5, you probably don't need to + upgrade.
                • +
                • 1.15.5 fixes more crashes still in 1.15.2. See the + BUGS file
                • +
                • 1.15.2 fixes the GUI startup crash described below, and an + issue with very long path elements, which manifested itself mainly + while indexing the Beagle queue.
                • +
                • 1.15.1 is identical to 1.15.0 except for a very + small modification to allow building with qt 4.4.
                • +
                +

                + +

                Caveats

                + +

                There have been reports of the recoll 1.15 GUI crashing when + starting up after an upgrade. This was fixed by making a + backup of ~/.config/Recoll.org/recoll.conf and deleting it (Qt + stores the QSettings for the recoll GUI in this file, things + like the search history and mix GUI options).

                + +

                If the result list is displayed with strange indentations, try + to completely clear the result list paragraph format (in query + preferences) to reset it to the default. Next time you open query + preferences, the new default format will be up, and you can make + any desired changes.

                +

                The support for Qt 3 has been removed in this version which + uses only native Qt 4 interfaces. If your system has no + support for Qt 4.4 or newer, you need to stick + with Recoll 1.14, which is + still supported.

                + +

                The defaults for file name searches with multiple fragments + changed from OR to AND: see the changes list below for more + detail.

                + +

                Installing over an older version: version 1.15/14/13 + indexes are mostly compatible with 1.11 indexes, but some features + depend on a full index rebuild. These are: + +

                  +
                • Filtering results from a given directory subtree.
                • +
                • Displaying simple filenames in the new result table.
                • +
                +

                + +

                If installing over 1.10 or older, you need a full + rebuild. The best way to do this is to just delete the old + .recoll/xapiandb directory, + especially if the index was created by an older version. + (ie: rm -rf ~/.recoll/xapiandb/). On very + old indexes, recollindex -z may sometimes end + with a backend doesn't implement metadata error, + which is wasteful because you then need to delete xapiandb and + run the indexing again.

                + +

                Changes

                + +

                Recoll 1.15.0 has major new GUI features and fixes a number + of small bugs

                + +
                  + +
                • The GUI has a new display for the result list inside a + spreadsheet-like table, with configurable columns and sort by + any column. The table header right-click menu has the reset + sort function and column adding/removing.The "classical" look + is still there, you can dynamically switch between list and + table by clicking the table-like icon in the toolbar.
                • + +
                • The old sort tool is gone. There are now vertical arrows in + the tool bar to directly sort by date ascending or descending, + which was its only significant use.
                • + +
                • We added duplication indicators to the result list when results + are collapsed because they have bit-for-bit identical + contents. The indicater is the collapse count in parentheses, + displayed just after the relevancy percentage.
                • + +
                • There is now a menu entry to clear search history.
                • + +
                • File name search: it used to be that multiple fragments + where OR'ed together to perform the search. They are now AND'ed, + which makes more sense in many cases (remembering several + fragments of the file name but not the order), but means that a + search for *.doc *.odt will always + fail. Use ext:doc OR  ext:odt instead.
                • + +
                • Autophrase now works with the query language where it makes + sense.
                • + +
                • Support for lyrics in midi karaoke files. Works + better with the + Python chardet + character encoding identification module.
                • + +
                • Support newer Purple/Pidgin logs using an html format.
                • + +
                • Support thunderbird extreme brokiness in handling the mbox + format: naked "^From $" separators are now accepted + with mhmboxquirks = tbird.
                • + +
                • A change of method for filtering on directory location makes + it much more efficient and faster.
                • + +
                • The utf-8 file name is now a stored field by default.
                • + +
                • We now catch all exceptions in Python filters to avoid + crash reports from the system on benign filter failures.
                • + +
                • Indexing now creates a lock/pid file inside the + configuration directory.
                • + +
                • Fixed parallel build issue on FreeBSD.
                • + + +
                + + +
                + + diff --git a/website/release-1.16.html b/website/release-1.16.html new file mode 100644 index 00000000..b0bf9ce9 --- /dev/null +++ b/website/release-1.16.html @@ -0,0 +1,206 @@ + + + + Recoll 1.16 series release notes + + + + + + + + + + + + + + + + +
                + +

                Release notes for Recoll 1.16.x

                + + +

                Caveats

                + +

                Installing over an older version: 1.16 is + mostly compatible with 1.15 indexes, except for a few differences + for weird terms containing punctuation signs. Perform a full index + pass if installing over an older version. The simplest way to do + this is to quit all recoll programs and just delete the index + directory (rm -rf ~/.recoll/xapiandb), then + start recoll or recollindex. recollindex -z will do the same in most + cases.

                + +

                Also, using the anchored search feature requires a full reindex.

                + +

                1.16.2: this is a bug fix release, (see the + fixed bugs document), with a few + limited changes: +

                  +
                • The indexer now puts itself in the ionice "idle" class by + default (can be changed in the config).
                • + +
                • The verbosity level of some messages were adjusted so that a + simple sequence of indexed files can now be seen while indexing + with the verbosity at level 3 (info).
                • + +
                • New command line options for the recollq program add a fully + parseable base64-encoded output mode, with full control on the + list of fields printed for each result, for use by external + programs.
                • +
                +

                +

                The 1.16.0 GUI can be crashed quite easily, please + just upgrade to 1.16.1 or later.

                + +

                Changes

                + +

                Recoll 1.16 is an incremental improvements release over 1.15, no + major function was introduced or modified.

                + +
                  + +
                • Images are displayed in preview. You can get at the fields + and complete extracted text using the popup menu.
                • + +
                • The preview window popup menu has a "save to file" entry + to write a subdocument (ie: mail attachement) to a file.
                • + +
                • The GUI advanced search panel allows specifying a + field for each entry (ie: author/recipient, etc).
                • + +
                • It is now possible to anchor searches to the beginning or + end of the text or field, by using ^ and $ + characters at the beginning or the end of a term or + phrase. A maximum distance can be specified as a phrase + slack either in the advanced search panel, or as a query + language modifier, ie: "^beginterm"o10 would search + for beginterm within 10 terms of the beginning of + the text. This feature was suggested to me (thanks Gökhan), + for searching for a name at the beginning of a text + (in the author list, as opposed to anywhere in + the text). This is useful for example in the very common + case where the metadata for the author list was not + created. More details about this feature are to be found in + the user + manual.
                • + +
                • It is possible to configure the result list snippet + separator, given as an html fragment. This is an ellipsis by + default (&hellip;).
                • + +
                • We can now perform negative directory filtering (-dir:/some/dir), + to return all results except those from the + specified directory (recursive). Other attempts at still + impossible negative searches + (ie: -mime:) now cause explicit + errors messages instead of lame results. The inverted + directory filtering is accessible from the query language + and by checking a checkbox in the advanced search + panel.
                • + +
                • Result table: +
                    +
                  • The detail area now has a popup menu similar + to the one in the result list (open parent, save to disk + etc.).
                  • +
                  • The result table header popup menu has an entry to save the + table as a CSV file.
                  • +
                  • Estimated result counts are displayed in the status line.
                  • +
                  • Set row height according to default font size, and better + adjust row height and vertical text position in + cells.
                  • +
                  +
                • + +
                • It is now possible to set an increased weight for indexing + some fields. The title fields gets a boost by default. See + the fields default file for details.
                • + +
                • The query language allows setting weights on terms, ie, + as in: "important"2.5 .
                • + +
                • Improved preservation of indentation for text files + displayed in the preview window.
                • + +
                • Show hidden (dot) files in the indexing configuration + GUI dialogs.
                • + +
                • Added filters for .war (Konqueror web + archive), .mhtm (other web archive format) + and rar archives.
                • + +
                • Improved handling for native cjk punctuation signs.
                • + +
                • Updated the list of native apps in the + default mimeview (ie: xv->gwenview, rox->dolphin, + etc.)
                • + +
                • Added -f option to recollindex to ignore + skippedPaths/Names when used with -i. Allows the use of a + purely external file selection mechanism.
                • + +
                • The performance of email indexing has been slightly + improved (less CPU usage).
                • + +
                • Real time indexer: several configuration + parameters allow adjusting the timing of indexing actions: +
                    +
                  • monauxinterval: the interval between auxiliary + databases rebuilds (stemdb, aspell).
                  • +
                  • monixinterval: The waiting period + during which indexing events are accumulated prior to actual + indexing (saves work on duplicate events).
                  • +
                  • mondelaypatterns: a list of file patterns for + which indexing should be delayed longer (quick changing + files like logs that should be reindexed much slower than + they change).
                  • +
                  + See the default configuration file for more detail. +
                • + +
                • Fixed bugs: +
                    +
                  • UTF-8 paths inside ZIP archives were mishandled. Also + fixes problem with colons inside archive member + paths.
                  • +
                  • Fixed GUI result list doc parent operations (open/preview) + which were broken in 1.15.
                  • +
                  • Fixed case where indexing could hang or crash after an + error occured while indexing an archive member (which + should have affected only the relevant document).
                  • +
                  • Real time indexer: uncontrolled concurrent access to + the global configuration could cause a startup crash (mostly of + big file trees because of timing issues).
                  • +
                  • Fixed sorting by document and file size in the result + table.
                  • +
                  • Email messages for which there would be an error indexing + an attachment would not be indexed at all.
                  • +
                  • Text files bigger than 2 GB could not be indexed.
                  • +
                  • Fixed the handling of compressed man pages.
                  • +
                  • Memory usage could grow almost unbounded while deleting + documents, because idxflushmb was not used for document + deletions.
                  • +
                  +
                • + +
                + + +
                + + diff --git a/website/release-1.17.html b/website/release-1.17.html new file mode 100644 index 00000000..64be99f2 --- /dev/null +++ b/website/release-1.17.html @@ -0,0 +1,255 @@ + + + + Recoll 1.17 series release notes + + + + + + + + + + + + + + + + +
                + +

                Release notes for Recoll 1.17.x

                + + +

                Caveats

                + +

                Installing over an older version: 1.17 is mostly + compatible with 1.16 and 1.15 indexes, except for a few + differences for weird terms containing punctuation + signs. Also, file/document size computations have been + improved in 1.17 and you'll need an index reset if you want to + enjoy the new goodness. Always reset the index if installing + over an older version (1.14 and older). The simplest way to do + this is to quit all recoll programs and just delete the index + directory + (rm -rf ~/.recoll/xapiandb), + then start recoll or + recollindex. recollindex -z + will do the same in most cases.

                + +

                Some new, auxiliary, features do require a full reindex to work:

                +
                  +
                • The file size filtering functions.
                • +
                • The anchored search feature if the index was created by + release 1.15 or older.
                • +
                + + +

                Notes to the kind packagers:

                + +
                  +
                • you need to either depend on libqt4-webkit or run + configure --disable-webkit (1st option preferred if possible + of course).
                • +
                • The default build now installs the Python extension module. + This means that it needs the Python development + package. You can revert to the old behaviour by using + configure --disable-python-module.
                • +
                + + +

                Changes

                + +

                1.17.4 is quite probably the last update on the very stable + 1.17 branch. It has updated German and Greek messages, and fixes + a few bugs, see the BUGS + file.

                + +

                1.17.3 fixed a nasty indexing bug in email processing + code. This was triggered most probably my messages containing + Microsoft mimehtml attachments, but possibly by other ones + too, and caused an indexing crash. Also fixes small glitches + in result list paging.

                +

                1.17.2 fixed a few bugs and + adds a small feature for handling characters that should not + be accented in your language (ie: å in swedish). See + unac_except_transx in the manual configuration + section. Also a new rcldia filter for Dia files.

                +

                1.17.1 was released only for a small function needed for + supporting the Unity Lens. If you don't need it, you can stay + with 1.17.0.

                +

                Recoll 1.17 is an incremental improvements release over 1.16, + with quite a few changes under the hood (like the introduction + of a webkit-based result list), but relatively few obvious + changes for the casual user.

                + + + + +

                Recoll 1.17.0 changes:

                + +
                  + +
                • GUI/config: new set of dialogs to set up the indexing + schedule, either as automatic real time indexing started + with the user session or as discrete cron entries. This + will take care of the details of autostart files or crontab + editing.
                • + +
                • Search: Recoll now supports filtering on file sizes. This + is accessible from the advanced search panel, or from the + query langage (ie: "size>10k size<1m"). For + documents stored inside archives, the file size stored in + the index is now the actual one, not the archive's as was + previously the case. Because of this, you will need a full + reindex to completely enable this feature.
                • + +
                • Query language: the "dir:" directive now accepts + non-absolute paths. For example dir:dir1/dir2 will select + any file the path of which includes "dir1/dir2".
                • + +
                • Query language: tilde is now expanded inside a "dir:" + clause.
                • + +
                • General: the Python extension module is now installed by + default. This will make it much easier to use small recoll + integration and extension hacks like the Unity Lens.
                • + +
                • Desktop: there is a new Ubuntu Unity Recoll Lens, it is not + installed by default, but quite easy to install, see + the + Wiki page.
                • + +
                • GUI: it is now possible to cancel a query that takes too + long. Because of limitations in Xapian, this forces a program + exit, but it's probably better than staring at a hung + Recoll.
                • + +
                • GUI/advanced search: the dialog gets new sections for + filtering on file dates and sizes, and has been split into two + tabs: for search terms, and for filtering.
                • + +
                • GUI: use Shift+PageUp instead of Shift+Home to rewind the + result list to the first page. Shift+Home is useful in the + search entry.
                • + +
                • GUI: the preview function will now check that the index is + up to date before fetching the preview data, and propose to + update the index if necessary. This is especially important + for mail folders. It was previously possible that the + preview would display a message unrelated to the current + result.
                • + +
                • GUI: it is now possible to control the date format + displayed by the results (go to Query Preferences).
                • + +
                • GUI: when a search fails to retrieve results, the spelling + suggestions are now presented as links inside the result list + area. Clicking a link will replace the appropriate word inside + the search entry.
                • + +
                • GUI: thumbnails will be displayed in the result list if + found in the standard freedesktop thumbnails directory + (previously created by gimp or some file manager). This Recoll + release will not create thumbnails.
                • + +
                • GUI: it is now possible to Copy/Paste from the term explorer + result list.
                • + +
                • GUI: what used to be the document category filters + (media/text/etc.) are now defined as query language + fragments + inside mimeconf. This means + that you can redefine them freely (see the comments for the + [guifilters] section in the + default mimeconf).
                • + +
                • GUI: it is now possible to use a Qt style sheet to modify + many aspects of Recoll appearance. A style sheet file can be + selected from the GUI query configuration dialog. A sample + skeleton style sheet is to be found in the + share/recoll/examples directory.
                • + +
                • GUI: the result list is now based on the WebKit widget + instead of QTextBrowser. This means better HTML/CSS support, + and even Javascript ... You can force the use the old + QTextBrowser instead by using + configure --disable-webkit. See a few CSS examples in + the result list customisation + examples page
                • + +
                • GUI: added menu entry to show all the mime types actually + indexed.
                • + +
                • GUI/indexing: the indexing thread has been removed. All + indexing is now performed by a separate recollindex + process. This has multiple advantages, the thread was just a + very bad idea. Among others, exiting the GUI has no + influence on an ongoing indexing.
                • + +
                • GUI/indexing: new menu entry to force a full reindex.
                • + +
                • GUI/config: the indexing configuration now only shows the + directories customized by the user, not those which come + from the standard configuration (ie: + ~/.thunderbird). Showing the standard directories was more + often confusing than useful.
                • + +
                • GUI: the default result list paragraph now displays the ipath: + this is very useful for archive members and not too + disturbing for other kinds.
                • + +
                • Command line query: can now select a result slice + (first result rank and count of results). New option for + easy parsing of results by another program.
                • + +
                • Indexing: handle the html5 charset meta tag.
                • +
                • Indexing: added support for Okular notes and Gnumeric.
                • + +
                • Real time indexer: restart automatically when the + configuration changes.
                • + + +
                • Fixed bugs: +
                    +
                  • Indexing configuration: deleting one customized + directory would sometimes delete the whole list (depending + on Qt version I think).
                  • +
                  • Indexing configuration: adding a customized directory + would not make it the active/current one (so that + another click was needed to choose it before making + modifications).
                  • +
                  • The GUI preview now performs an up to date check + before displaying data from a subdocument, and proposes + to reindex the container if it changed. This is mostly + useful for mailbox containers, where preview would + sometimes display the wrong message (if the folder had + been compacted).
                  • +
                  • Fix a bug in html charset detection. The wrong charset + was sometimes used for GUI preview.
                  • +
                  • The chm filter can now process files lacking a Topics + node.
                  • +
                  • The default slack for proximity searches from the query + language (ie: "word1 word2"p) had become 0. It was restored to + 10.
                  • + +
                  +
                • + +
                + + +
                + + diff --git a/website/release-1.18.html b/website/release-1.18.html new file mode 100644 index 00000000..934ef6c6 --- /dev/null +++ b/website/release-1.18.html @@ -0,0 +1,203 @@ + + + + Recoll 1.18 series release notes + + + + + + + + + + + + + + + + +
                + +

                Release notes for Recoll 1.18.x

                + + +

                Caveats

                + +

                Installing over an older version: 1.18 introduces + significant index formats changes to support optional + character case and diacritics sensitivity, and it will be + advisable to reset the index in most cases. This will be best + done by destroying the index directory (rm -rf + ~/.recoll/xapiandb).
                + If 1.18 is not configured for case and + diacritics sensitivity, it is mostly compatible with 1.17 + indexes.

                + +

                Case/diacritics sensitivity is off by default for this + release. It can be turned on only by editing recoll.conf + ( + see the manual). If you do so, you must then reset the index.

                + +

                Always reset the index if installing over an even older + version (1.16 and older). The simplest way to do this is to + quit all recoll programs and just delete the index directory + (rm -rf ~/.recoll/xapiandb), + then start recoll or + recollindex. recollindex -z +  will do the same in most, but not all, cases.

                + +

                The subdirectories of xapiandb which were previously used to + store the stem expansion database (stem_english, + stem_french...) are not used anymore, because the data is now + stored in the Xapian synonyms table. They will stay around if + you do nothing about them, so you may want to delete them if + you have not chosen to just delete the whole index + directory.

                + +

                Viewer exceptions: + There is a new list of mime types that should be opened with + the locally configured application even when Use + Desktop Preferences is checked. This allows making + use of new functions (direct access to page), which could not + be available through the desktop's xdg-open. The + default list contains PDF, Postscript and DVI, which should be + opened with the evince (or atril for + Mint/MATE users) viewer for the page access functions to + work. If you want to keep the previous behaviour (losing the + page number functionality), you need to prune the list after + installation . This can be done from the Preferences->Gui + Configuration menu.

                + +

                Changes

                + +

                Recoll 1.18 has some major changes, the most visible of + which is the ability to search for exact matches of character case + and diacritics.

                + +
                  + +
                • The index can now be configured for case and diacritics + sensitivity, in which case raw terms are indexed. On such an + index, search insensitivity to case and diacriics is obtained, + when desired, by query time expansion, in a similar manner to + what is used for stemming. See the + + manual chapter for details about controlling the + feature. The capacity for case/diacritics sensitivity is + off by default, and you should not see differences in this + respect after upgrading if you do not turn it on + explicitely. Even on a raw index, most searches should + behave like they did in 1.17. Sensitivity must be + explicitely requested in most cases.
                • + +
                • The advanced search screen now has a history + function. While the focus is in this window, you + can walk the history of searches using the up and down + arrows.
                • + +
                • Recoll has a new capacity to store page break locations + and use them when opening a document at the location for a + given match. It will also pass a search string to the viewer + application. This currently works with PDF, Postscript and DVI + documents, and, optimally, the evince viewer.
                • + +
                • The GUI result list has a new "snippets" window for + documents with page numbers, which let the user choose a + snippet and open the document at the appropriate page.
                • + +
                • There is a list of MIME types that should be opened with + the locally configured application even when Use + Desktop Preferences is checked. This will permit, for + example, using evince for its page access + capabilities on PDF files, while letting the desktop handle + all the other mime types. The list is not empty by default, + it contains PDF, Postscript and DVI, so you may want to + reset it after installation if you want to keep the previous + behaviour (losing the page number functionality). This can + be done from the Preferences->Gui Configuration + menu.
                • + +
                • We now allow multiple directory specifications in the query + language, as in: dir:/home/me -dir:tmp
                • + +
                • The search inside the GUI preview window, has been + improved, and allows selecting from a list one of the + initial term groups as the search target.
                • + +
                • A new script dedicated to laptops, which can start or stop + recollindex according to mains power status.
                • + +
                • Added <pre style="white-space: pre-wrap"> to plain + text HTML display options. This will often be the best + option to display plain text: it will better respect + indentation, while folding long lines.
                • + +
                • When running in an UTF-8 locale, and after failing to decode a + plain text file as UTF-8, indexing will try again using an 8 bit + character set heuristically chosen according to the locale + language code. This uses the LANG environment variable.
                • + +
                • On initial installation (when the ~/.recoll + directory does not exist), recoll will install a list of + characters which should not be stripped of diacritics, + according to the detected national language (based on + $LANG). There are currently specific lists for German (don't + strip the umlauts), and Nordic languages (keep the letters + with circle above in addition to the German list). Other + languages currently only have exceptions which result in + decomposing ligatures (fl, fi etc.). You can have a look at + the standard recoll.conf in /usr/share/recoll/examples for + more information.
                • + +
                • A new configuration variable, maxmemberkbs, has been + implemented to limit the size of archive members we process. This + will avoid trying to read a 4 GB ISO from a zip archive as + happened in the past...
                • + +
                • Proper error reporting when a wildcard expansion is + truncated for size. An incomplete search could previously be + performed without any indication.
                • + +
                • More effort is also put in choosing the terms used in + generating the snippets inside the result list.
                • + +
                • Recoll now uses the Xapian "synonyms" mechanism to store all + data about stemming, case, and diacritics expansion (this + replaces the previous ad-hoc stemming expansion + mechanism).
                • + +
                • Partial autodetection of thunderbird mailboxes found out + of the configured location.
                • + +
                • Fixed bugs: +
                    +
                  • The unac_except_trans mechanism could be buggy in some + cases and generate wrong character translations.
                  • +
                  • Don't terminate monitor for permissions-related + addwatch error.
                  • +
                  • Fix handling of ODF documents exported by Google + docs.
                  • +
                  • It was previously impossible to open the parent of an + embedded document (e.g. the CHM file for an HTML page + inside the CHM) if the parent was itself a member of an + archive.
                  • +
                  +
                • + +
                + + +
                + + diff --git a/website/release-1.19.html b/website/release-1.19.html new file mode 100644 index 00000000..fef25791 --- /dev/null +++ b/website/release-1.19.html @@ -0,0 +1,261 @@ + + + + Recoll 1.19 series release notes + + + + + + + + + + + + + +
                +

                Release notes for Recoll 1.19.x

                + +

                Caveats

                + +

                Installing over an older version: 1.19

                + +

                Case/diacritics sensitivity is still off by default for this release. It can +be turned on only by editing recoll.conf (see the manual). +If you do so, you must then reset the index.

                + +

                To be safe, always reset the index when upgrading to 1.19. There + was a persistent index corruption issue in 1.18 + and earlier versions. + The simplest way to do this is to quit all Recoll + programs and just delete the index directory ( + rm -rf ~/.recoll/xapiandb), then start + recoll or recollindex.
                + recollindex -z  will do the same in most, but + not all, cases. It's better to use the rm method, which will also + ensure that no debris from older releases remain (e.g.: old stemming files + which are not used any more).

                + +

                Installing 1.19 over an 1.18 index will force a lot of reindexing anyway +because Recoll switched to using st_ctime instead of st_mtime to +detect file modifications, meaning that all files which were modified since +created will be updated.

                + +

                Viewer exceptions: as in 1.18 (but we kept +this section for 1.17 users), there is a list of mime types that should be +opened with the locally configured application even when Use Desktop +Preferences is checked. This allows making use of new functions (direct +access to page), which could not be available through the desktop's +xdg-open. The default list contains PDF, Postscript and DVI, which +should be opened with the evince (or atril for Mint/MATE +users) viewer for the page access functions to work. If you want to keep the +previous behaviour (losing the page number functionality), you need to prune +the list after installation . This can be done from the Preferences->Gui +Configuration menu.

                + +

                Minor releases at a glance

                +
                  +
                • 1.19.14p2 fixes another reference count issue in the Python + module (a problem with the Query iterator put in evidence by the + change in 1.19.14p1). It also changes the handling of diacritics + for Bengali (accents are now unstripped, as for Hindi).
                • + +
                • 1.19.14p1 fixes a descriptor and memory leak in the Python + module. The main library and programs are unchanged.
                • + +
                • 1.19.14 fixes relatively minor but ennoying issues in + indexing, plus a few other glitches: +
                    +
                  • The use of a separate readonly + Database object + for querying the index while indexing would trigger Xapian + errors, (bad block reads), and subsequent up-to-date check + failures (leading to unnecessary reindexing). The jury is out + as to the cause, but using the same object for reading and + writing seems to eliminate the problem. This is linked to + a Xapian + ticket.
                  • +
                  • An unnecessary log message in the child process between + forking and executing the filter could block on a mutex, and + lead to a 20 mn timeout for the affected father process thread + (happened only in multithread mode).
                  • +
                  • Also a possible overflow of the filter stack. This could only + really happen in pathological situations (hand-crafted recursive + zip file...).
                  • +
                  +
                • + +
                • 1.19.13 hopefully fixes the rare but longstanding multithread + indexing crashes, which I hope were actually due to the now + corrected mismanagement of Xapian::Document objects. It also + silences noisy but mostly harmless ppt-dump.py crashes.
                • +
                • 1.19.12p2 fulfills an old promise that I had forgotten: have a + double-click in the result table run an "open file" action. It just + had waited for too long...
                • +
                • 1.19.12p1 fixes the 1.19.12 install script which did not + actually copy the xls filter...
                • +
                • 1.19.12 adds a parameter for setting the truncation size of the + stored metadata attributes, and a new XLS filter.
                • +
                • 1.19.11 is a fix to the install script in 1.19.10. The latter + did not copy the new ppt extraction code to the filters directory.
                • +
                • 1.19.10 has a bit more changes than + usually goes into a Recoll minor version, and could have been + 1.20.0 instead. On the other hand, it + brings some features which needed to be released, and did not + really warrant a major version. So here goes: +
                    +
                  • Python3 compatibility for the Python Recoll module.
                  • +
                  • A Ubuntu Unity Scope for saucy (13.10), replacing the + lens (and which needed Python 3).
                  • +
                  • A new PPT format text extractor. Catppt just did not extract + anything from more recent .ppt files.
                  • +
                  Mostly, if you are not running Ubuntu (Saucy or later), you + can just download the ppt + filter and stay with 1.19.9. +
                • 1.19.9 fixes a few + significant bugs, mostly a very + serious one about date filtering, and a quite common GUI + crash.
                • +
                • 1.19.8 changes the way we handle Hindi / Devanagari + text (no more stripping of diacritics), and also has a fix for the + results table dups and snippets links.
                • +
                • 1.19.7 is 1.19.5 with a few build and packaging fixes. No need + to update.
                • +
                • 1.19.5 works around a Linux kernel bug that would make it + impossible to index data from a network share mounted through cifs + (this worked in 1.18 and stopped working in 1.19 because of its + wider use of extended attributes)
                • +
                • 1.19.4 has a German translation, and a few fixes + for relatively ennoying + bugs.
                • +
                • 1.19.3 has more translations (Spanish, Russian, Czech), and a few + minor bug and usability fixes.
                • +
                • 1.19.2 fixes a bug in path translations for additional indexes.
                • +
                • 1.19.1 was released 2 hours after 1.19.0 (book of records anyone?) + because of a bug in the advanced search history feature which crashed + the GUI as soon as a filename search was performed.
                • +
                + +

                Changes in Recoll 1.19.0

                +
                  +
                • Indexing can use multiple threads. This can be a major performance boost + for people with multiprocessor machines and big indexes. The threads setup + is roughly auto-configured when recollindex starts, based on the number of + processors, but it is also possible to taylor it in the configuration.There + is a section + in the manual to describe the configuration, and also some notes about + the transformation and the performance improvements.
                • +
                • There is a new result list/table popup menu option to display all the + sub-documents for a given one. This is mostly useful to display the + attachments to an email. The resulting screen can be used to select + multiple entries and save them to files.
                • +
                • It is now possible to use OR with "dir:" clauses, and wildcards have been + enabled.
                • +
                • When the option to follow symbolic links is not set -which is the + default- symbolic links are now indexed as such (name and + content).
                • +
                • The advanced search panel now has a history feature. Use the + up/down arrows to walk the search history list.
                • +
                • There are new GUI configuration options to run in "search as you type" + mode (which I don't find useful at all...), and to disable the Qt + auto-completion inside the simple search string. The completion was often + more confusing and ennoying than useful, especially because it is + case-insensitive when case sometimes matter for Recoll searches + (capitalization to disable stemming).
                • +
                • When the option to collapse identical results is used, documents which do + have duplicates are shown with a link to list the clones. This function + needs new data from the index, so it will only completely work after a full + 1.19 reindex.
                • +
                • Recoll should now behave reasonably on video files: index the name and + propose an Open button in the result list to start the configured + player.
                • +
                • Thanks to Recoll user Koniu, you + can now access your Recoll indexes through a Web browser interface. The + server side is based on the Bottle + Python Web framework and the Recoll Python module, and can run + self-contained (no necessity to run apache or another web server), so it's + quite simple to set up. See: See the Recoll WebUI project on + GitHub.
                • +
                • Thanks to Recoll user David, there is now a filter to index and retrieve + Lotus Notes messages. See the software site on + sourceforge and some notes + from a user with a slightly different configuration.
                • +
                • There is a new path translation facility, with a GUI interface, to make + it easier to share an index from a network share on clients on which the + mount points might be different. This could also probably be put to use to + design a "portable index" feature (for removable media).
                • +
                • The first indexing run after Recoll installation (for a new user) will + run in a fashion which will put data likely to be useful into the index + faster, so that an impatient user can more quickly try searches.
                • +
                • Implemented cache for last file uncompressed. This will much improve + usage, e.g. for people fetching successive messages from a compressed mail + folder.
                • +
                • Recollindex will now change its current directory to a temporary one + (e.g. /tmp) to mitigate the problems of some filters creating temporary + files and not cleaning them.
                • +
                • There is a new recursive explicit reindex option to the command line + indexer.
                • +
                • The default result list paragraph format has been slightly tweaked + (removed the relevance percentage and small ordering and formatting + changes).
                • +
                • Mime type wildcard expansion is now performed against the index, not the + configuration. This fixes many problems when searching for, e.g., media + files indexed only by name.
                • +
                • The choice for case/diacritics sensitivity is now fully processed during + wildcard expansion (for case-sensitive indexes).
                • +
                • The Snippets popup (list of pages and excerpts typically produced for PDF + documents) can now use an external CSS stylesheet. This is useful because + the Qt Webkit objects do not fully inherit the Qt configuration so that, + for example, a style sheet is needed for using a different background + color. The style sheet is chosen from the Preferences->GUI + configuration->Result list panel.
                • +
                • Improved handling of filters during indexing resulting in less + subprocesses.
                • +
                • Added function to import tags from external application (e.g. Tmsu).
                • +
                • Changed format for rclaptg field. Was colon-separated, now uses normal + value/attributes syntax with an empty value like: +
                              localfields = ; attr1 = val1 ; attr2 = val2
                  +    
                  +
                • +
                • Extended file attributes are now indexed by default. As a side effect, + recoll now uses st_ctime, not st_mtime to detect file changes. This means + that installing 1.19 will reindex many files (all those that were modified + since created). Recoll also now processes the charset and + mime_type standardized extended attributes.
                • +
                • The Python module has been expanded to include the interface for + extracting data. This means that you could now write most of the Recoll GUI + in Python if you wished. There is a bit + of sample code in the source package doing just this. A few + incompatible changes had to be made to the Python module. Especially the + "Query.next" field is gone and the module structure has been changed + (different import statement needed). Adapting your code is trivial, have a + look at the changes in the Unity + Lens module for an example. The new module is compatible with the Python Database API + Specification v2.0 for the parts that make sense for a non-relational + DB.
                • +
                • Recoll now uses a dynamic library for the code shared by the query + interface, the indexer and the Python module. This should have no visible + impact but was rendered necessary by the Python module evolutions.
                • +
                • And quite a few Fixed bugs
                • +
                +
                + + diff --git a/website/release-1.20.html b/website/release-1.20.html new file mode 100644 index 00000000..c062f493 --- /dev/null +++ b/website/release-1.20.html @@ -0,0 +1,255 @@ + + + + Recoll 1.20 series release notes + + + + + + + + + + + + + +
                +

                Release notes for Recoll 1.20.x

                + +

                Caveats

                + +

                Installing over an older version: 1.19

                + +

                Installing 1.20 over an 1.19 index is possible, but there + have been small changes in the way compound words (e.g. email + addresses) are indexed, so it will be best to reset the + index. Still, in a pinch, 1.20 search can mostly use an 1.19 + index.

                + +

                Always reset the index if you do not know by which version it + was created (you're not sure it's at least 1.18). The best method + is to quit all Recoll programs and delete the index directory + ( + rm -rf ~/.recoll/xapiandb), then start recoll + or recollindex.
                + + recollindex -z will do the same + in most, but not all, cases. It's better to use + the rm method, which will also ensure that no debris + from older releases remain (e.g.: old stemming files which are + not used any more).

                + +

                Case/diacritics sensitivity is off by default. It can be + turned on only by editing + recoll.conf ( + + see the manual). If you do so, you must then reset the + index.

                + + +

                Minor releases at a glance

                + +
                  +
                • 1.20.6 fixes some decompression issues with serious + performance and system load consequences in some cases + (depending on data): minimum checking that enough temp + space is available before uncompressing, no need to + uncompress tar.gz files. Also: rclscribus fixes, Danish + translation and fix messages in two places which were + not translated.
                  + Uncompressing big files to /tmp for nothing (and re-doing it on + the next indexing pass...) was, I believe the main + remaining reason why Recoll indexing could cause system + performance issues.
                • +
                • 1.20.5 is 1.20.4 with a few Qt 5 compatibility + tweaks. Builds and runs with Qt 5.3.2, fails with 5.2.
                • +
                • 1.20.4 has a fix to skip compress file system images + like xxx.img.gz by default. This should have been in 1.20.3
                • +
                • 1.20.3 has a very minor change to copy the Query + Fragments Window config file from the default if it does + not exist in the user config dir.
                • +
                • 1.20.2 fixes a bug which prevented the real time indexer + from indexing the web history queue (this was still processed + when starting up). It also adds systray capability to + the GUI.
                • +
                + + +

                Changes in Recoll 1.20.1

                + +
                  + +
                • An Open With entry was added to the result list + and result table popup menus. This lets you choose an + alternative application to open a document. The list of + applications is built from the information inside + the + /usr/share/applications desktop files.
                • + +
                • A new way for specifying multiple terms to be searched + inside a given field: it used to be that an entry lacking + whitespace but splittable, like [term1,term2] was + transformed into a phrase search, which made sense in some + cases, but no so many. The code was changed so that + [term1,term2] now means [term1 AND term2], and + [term1/term2] means [term1 OR term2]. This is + useful for field searches where you would previously be + forced to repeat the field name for every term. + [somefield:term1 somefield:term2] can now be expressed as + [somefield:term1,term2]. +
                • + +
                • (1.20.1) The Query Fragments tool was added to + the GUI. This is a window with customizable buttons to add + arbitrary query language fragments to the current + search. The buttons and fragments are defined in an xml + file inside the recoll configuration + directory ~/.recoll/fragbuts.xml. This + makes it easy to define "pre-cooked" filters for things + that you need repeatedly. + + See the manual for more details.
                • + +
                • We changed the way terms are generated from a compound + string (e.g. an email address). Previously, for an address + like jfd@recoll.org, only the simple terms and + the terms anchored at the start were generated + (jfd, recoll, org, jfd@recoll, jfd@recoll.org). The + new text splitter generates all the other possible terms + (here, recoll.org only), so that it is now + possible to search for left-truncated versions of the + compound, e.g., all emails from a given domain.
                • + +
                • (1.20.1) New keyboard accelerators for the result table: Ctrl+r + switches the focus from the search entry to the table, + Ctrl+o opens the document for the current line, Ctrl+Shift+o + opens document and closes recoll, Ctrl+d previews the + document.
                • + +
                • (1.20.1) A special term is now indexed for results from the web + history: use "-rclbes:BGL" to exclude the web results, + "rclbes:BGL" to restrict the results to the web ones. This + is difficult to remember, but the Query Fragments feature + means that you don't need to (this is in the sample Query + Fragments file).
                • + +
                • Recoll now indexes #hashtags as such.
                • + +
                • It is now possible to configure the GUI in wide form + factor by dragging the toolbars to one of the sides (their + location is remembered between sessions), and moving the + category filters to a menu (can be set in the + "Preferences->GUI configuration" panel).
                • + +
                • We added the indexedmimetypes and + excludedmimetypes variables to the configuration + GUI, which was also compacted a bit. A bunch of + ininteresting variables were also removed.
                • + +
                • When indexing, we no longer add the top container + file name as a term for the contained sub-documents (if + any). This made no sense in most cases, as it meant that + you would get hits on all the sections from a chm or epub + when the top file name matched the search, when you + probably wanted only the parent document in this case.
                  + However, the container file name was sometimes useful for + filtering results, and it is still accessible, in a + different way: the top container file name is added as a + term to all the sub-documents, only for searching with + a prefix. The field name + is containerfilename, and no + match on the subdocuments will occur if the field is not + specified (this is different from + previous filename processing, + which was indexed as a general + term. containerfilename is + also set on files without sub-documents (e.g. a pdf).
                • + +
                • A new attribute, pfxonly, + was created to support the above change. This can be set + on any metadata field inside + the [prefixes] section of + the fields file. The + affected field terms will be indexed only with a + prefix, so they will cause a hit only for a field + search (the general behaviour is that field terms are + indexed both prefixed and not, so they can also cause a + hit when searched as general terms).
                • + +
                • A new [queryaliases] + section was created in + the fields, for definining + field name aliases to be used only at query time (to avoid + unwanted collection of data on random fields during + indexing). The section is empty by default, but 2 obvious + aliases are commented: filename=fn + and containerfilename=cfn. Setting + them in your personal file may save you some typing if you + search on file names.
                • + +
                • You can now use both -e and -i for + erasing then updating the index for the given file + arguments with the same recollindex command.
                • + +
                • We now allow access to the Xapian docid for Recoll + documents in recollq and + Python API search results. This allows writing scripts + which combine Recoll and pure Xapian operations. A sample + Python program to find document duplicates, using MD5 + terms was added. See + src/python/samples/docdups.py
                • + +
                • The command used to identify the mime types of files + when the internal method fails used to be hard-coded + as file -i. It is now + possible to customize this command by setting + the systemfilecommand in the + configuration. A suggested value would + be xdg-mime, which sometimes + works better than file.
                • + +
                • The result list has two new elements: %P substitution + for printing the parent folder name, and an F + link target which will open the parent folder in a + file manager window. e.g. <a href='F%N'>Open parent directory</a> +
                • + +
                • /media was added to the default + skippedPaths list mostly as a reminder that blindly + processing these with the general indexer is a bad idea + (use separate indexes instead).
                • + +
                • recollq + and recoll -t get a new + option -N to print field + names between values when + -F is used. In addition, + -F "" is taken as a + directive to print all fields.
                • + +
                • Unicode hyphen (0x2010) is + now translated to ASCII + minus + during indexing and searching. There is no good way to + handle this character, given the varius misuses of minus + and hyphen. This choice was deemed "less bad" than the + previous one.
                • + + + +
                + + +
                + + diff --git a/website/release-1.21.html b/website/release-1.21.html new file mode 100644 index 00000000..aa1546cc --- /dev/null +++ b/website/release-1.21.html @@ -0,0 +1,135 @@ + + + + Recoll 1.21 series release notes + + + + + + + + + + + + + +
                +

                Release notes for Recoll 1.21.x

                + +

                Caveats

                + +

                Installing over an older version: 1.19

                + +

                1.20 and 1.21 indexes are fully compatible. Installing 1.21 + over an 1.19 index is possible, but there have been small + changes in the way compound words (e.g. email addresses) are + indexed, so it will be best to reset the index. Still, in a + pinch, 1.21 search can mostly use an 1.19 index.

                + +

                Always reset the index if you do not know by which version it + was created (you're not sure it's at least 1.18). The best method + is to quit all Recoll programs and delete the index directory + ( + rm -rf ~/.recoll/xapiandb), then start recoll + or recollindex.
                + + recollindex -z will do the same + in most, but not all, cases. It's better to use + the rm method, which will also ensure that no debris + from older releases remain (e.g.: old stemming files which are + not used any more).

                + +

                Case/diacritics sensitivity is off by default. It can be + turned on only by editing + recoll.conf ( + + see the manual). If you do so, you must then reset the + index.

                + +

                Minor releases

                +
                  +
                • 1.21.4: +
                    +
                  • Show confirmation dialog when opening a temporary file + (to warn the user about possible lost edits). The dialog + has a 'disable' checkbox.
                  • +
                  • Fixed bug which would crash the GUI when clicking an + Open link after modifying the indexing configuration + through the GUI tool.
                  • +
                  • Fix not showing results with paths over 1000 + characters.
                  • +
                  • Fix Show subdocs: too many docs were shown in some + cases, and the Preview button in the dialog was inactive.
                  • +
                  +
                • 1.21.3: +
                    +
                  • Web cache: fixed the GUI config to not cap the size at + 1 GB. added append function to test driver/maintenance + utility. +
                  • +
                  +
                • 1.21.2: +
                    +
                  • Added GUI dialog to perform partial indexing.
                  • +
                  • Avanced search in "Any Clause" mode: directory filter + would not filter but add an ORed clause.
                  • +
                  • Fix bogus syntax errors about parentheses around + phrases.
                  • +
                  • Fixed a few boundary conditions detected by VC++
                  • +
                  • Misc other small fixes, see commit log.
                  • +
                  +
                • +
                • 1.21.1: +
                    +
                  • Force memory usage limits on external filters.
                  • +
                  • GUI: add Ctrl+l as a shortcut to return focus to the + search entry (compat with web browsers).
                  • +
                  • result list popup allows saving results from web cache + to files.
                  • +
                  • The web history indexer also processes non-html files + (e.g.: pdfs).
                  • + +
                  +
                • +
                + +

                Changes in Recoll 1.21.0

                + +
                  +
                • Allow saving queries to files and reloading them + later. Available both for simple and advanced queries, and + based on XML files.
                • +
                • A Bison-based query parser replaces the old regexp-based + one and allows parenthized sub-expressions and easier future + expansions.
                • +
                • The GUI gets a "close to system tray" function.
                • +
                • Avoid retrying to index previously indexed files if + nothing seems to have changed in the filters.
                • +
                • Improve indexing speed by always using vfork() for + spawning external commands.
                • +
                • The pdf filter gains the capability to run OCR (tesseract) on + image-only files. This happens automatically on image-only + pdfs if tesseract is available.
                • +
                • Improved checks about when we should try to uncompress + stuff. Will eliminate some of the most dreadful cases of + recollindex having an impact on system performance.
                • +
                • Warn if non-existent paths are listed in the configuration + file (help with typos).
                • +
                • Adjust background color for webkit-based elements (result + list and snippets window) according to desktop setup.
                • +
                • Listing the results with the KIO slave is now + performed with incremental updates. Bumped max entries to + 10000.
                • +
                +
                + + diff --git a/website/release-1.22.html b/website/release-1.22.html new file mode 100644 index 00000000..00a2df95 --- /dev/null +++ b/website/release-1.22.html @@ -0,0 +1,74 @@ + + + + Recoll 1.22 series release notes + + + + + + + + + + + + + +
                +

                Release notes for Recoll 1.22.x

                + +

                Caveats

                + +

                Installing over an older version: 1.19

                + +

                1.20-22 indexes are fully compatible. Installing 1.22 + over an 1.19 index is possible, but there have been small + changes in the way compound words (e.g. email addresses) are + indexed, so it will be best to reset the index. Still, in a + pinch, 1.22 search can mostly use an 1.19 index.

                + +

                Always reset the index if you do not know by which version it + was created (you're not sure it's at least 1.18). The best method + is to quit all Recoll programs and delete the index directory + ( + rm -rf ~/.recoll/xapiandb), then start recoll + or recollindex.
                + + recollindex -z will do the same + in most, but not all, cases. It's better to use + the rm method, which will also ensure that no debris + from older releases remain (e.g.: old stemming files which are + not used any more).

                + +

                Case/diacritics sensitivity is off by default. It can be + turned on only by editing + recoll.conf ( + + see the manual). If you do so, you must then reset the + index.

                + +

                Changes in Recoll 1.22.0

                + +
                  + + 2015-11-17: + - synonyms + - python3 compat for most filters. Appropriate shebang lines. + - Windows port + - New build system + - Filters converted to python mexec -> faster in most cases. + - Make dehyphenate (co-worker->coworker) optional + + +
                +
                + + diff --git a/website/release-history.html b/website/release-history.html new file mode 100644 index 00000000..89c1c43e --- /dev/null +++ b/website/release-history.html @@ -0,0 +1,146 @@ + + + + Recoll release history + + + + + + + + + + + + + +
                +

                Major Recoll releases at a glance

                + +

                A summary of the major releases and the main features which + came with them.

                + +
                +
                Release 1.21 (future): new + query parser
                +
                +
                  +
                • A Bison-based query parser replaces the old + regexp-based one and allows parenthized + sub-expressions and easier future + expansions.
                • +
                • Avoid retrying to index previously + indexed files if nothing seems to have + changed in the filters.
                • +
                • Allow saving queries to files and reload them + later. Available both for simple and advanced queries, and + based on XML files.
                • +
                • Improve indexing speed by always using + vfork() for spawning external commands.
                • +
                • GUI gets "close to system tray" function.
                • +
                +
                + +
                Release 1.20: small + improvements
                +
                +
                  +
                • Open With results list popup menu entry.
                • +
                • fieldname:term1,term2 + and fieldname:term1/term2 shortcuts for AND/OR + searches inside fields.
                • +
                • Query fragments tool.
                • +
                • Better handling of compound terms like mail + addresses.
                • +
                • Selection on source collection type (Web history / File + system).
                • +
                • Configurable GUI geometry.
                • +
                • Different handling + of container file / subdocuments file name searches.
                • +
                • Simultaneous -e -i options to recollindex.
                • +
                +
                + +
                Release 1.19: multithreads + indexing
                +
                +
                  +
                • Better indexing performance through + multithreading.
                • +
                • Display list of subdocuments (e.g. attachments) for a + given result.
                • +
                • Collapsed duplicate results display link.
                • +
                • Path translation facility (for portable indexes).
                • +
                • Caches last uncompressed file (e.g. for fast + compressed mbox access).
                • +
                • Partial recursive reindex option to command line + indexer.
                • +
                • Can import tags from external application.
                • +
                • Extended attributes indexing is on by default.
                • +
                • New Python interface for data access. API re-modeled against + newer Python Database API 2.0.
                • +
                • Shared librecoll.so.
                • +
                +
                + +
                Release 1.18: case and + diacritics switchable sensitivity
                +
                +
                  +
                • Index configuration for case and diacritics sensitivity.
                • +
                • Advanced search history.
                • +
                • Page-level access when opening PDFs, and snippets + window.
                • +
                • Use Xapian Synonyms tables for query expansion.
                • +
                +
                + +
                Release 1.17: small + improvements
                +
                +
                  +
                • Language-dependant unaccenting.
                • +
                • GUI dialogs for indexing schedule setup.
                • +
                • Phrase-based dir: filtering, accepting path + fragments. Size filtering.
                • +
                • Python module default install and Unity Lens.
                • +
                • Result list switched to WebKit: drops qt3 support.
                • +
                • Indexing always performed by separate process.
                • +
                • Dynamic category filters (defined as language fragments).
                • +
                +
                + +
                Release 1.16: small + improvements
                +
                +
                  +
                • Images displayed in preview window.
                • +
                • Save to file popup in preview.
                • +
                • Fields in advanced search.
                • +
                • Searches anchored to beginning or end of text.
                • +
                • Saving the result table to CSV.
                • +
                • Improved indentation in preview window.
                • +
                +
                + +
                Release 1.15: results + table
                +
                +
                  +
                • Optional spreadsheet presentation of results.
                • +
                • Clear search history.
                • +
                • Better thunderbird mbox format handling.
                • +
                +
                + +
                + + diff --git a/website/resparpics/christopher.png b/website/resparpics/christopher.png new file mode 100644 index 0000000000000000000000000000000000000000..530c1e98e7e55af93ff92df6d60beae186fc5343 GIT binary patch literal 54014 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

                >ey0edx^NX%*}kNz(X-{=eN$~A$Ksq zwPdukQ0o(+gwIuhmYZ(H?2=k(Fs<1>-cA+GrMqzDJOjU{*Hh*+EUTXD!v}8T+S|&SGN=5Gl9Pc64=FN<4Dfa$n#1)xqT$h6DpLjs60u;H(T#eF z5?b5ujbPty%ctx%2%a+3MK`2iF%kF($sCmrMdW-N0`?S5vgLKyutilVY^?xNw zoQi*dc`8!iOHIHuHtu(D{yME+l?S1>0w6Tukszs{qTixq`QawxXytdKSJ;e@QvnS6 z<1`HJq14GrD!|FG9Ml8mXKNZc7CPC+0)D!pBCN>;DMtuuuGzZ0RKirhlJ~dqF)|<* z@rGW01-l#p{8oUoY;mzsI>tSi%tl4IJG(^@F=y6XMj~E}=6u;JIg2f;u|eSA@^Zc~ zG8ZcT>fM{=WnZ3qarsH-b>b_Jd@pJLkH}#NeVGd$4+5ti48{uv377K(o}6*VSb)@w zt+7I~oJE`MJ-R-g%3~=yD;>P56&9o-4)<%D)x)cyIXUgEYwcVC^8_y_JH=t?!aj4^ z$#V-26N~NE`Qwu#yV|1V6`JcU9b6niGP~4dI}$eSP>-JNA{Ct}6I|virt%r@sKnJt z7u+hZiZjhC;^ugFC}yr-5iDNROzlij^Y0Rp23q)2M^N4EB|yr{;CV>XAKpA$)h}9C zOD-rj8u%bfq^XI3d>M@{M2j%w7Nmh?G81yYW;hF_-U%>v3Squ8P3+%%Buh|We(!%h zjm9m7hIMwICcESFC3p9WvHYqU33SyMYcL#wDu};6f^g*E3jPT{eYCV_3J()(*6O*) zWg%v13ZI%w@N+3Tn=p0sK{^i*(6$_*=Txw_^++|X4Bpx~OV)-QeeP{}#EFv`b z$-<4T6_RDIWZyiYCh84JVQ_JC79pz~a*pA7(YNj6Aj_kBSL+=fX*1fPsjhYpgdAeY zbA>CzsuGDzkQ%0gsCHe_S$r_MdSuNX_}}UytT*HEH@o-V%?+5&4h3kqp()_y9yg%| z0Xv*CVZ`1i%AbR(JQ3bcFRRo)^^pPZWw%x!&?^|KIsg#;Yg4)(^9$yFn;GL26(M)E$O2*=a=Cr$CIpG9i>yp{;kQn)Nolh+_mRpgAp!PzlOGboW#LD=i%m-<5w@8qp+ws zN#5)Y-sP--qr02(dT^B!wwXB)OAtXafinr}tZOuv&#aqIpW26J@K;>z)P<@?muCQq zv=1}zco+`Dx3+*a`|7{^a`w3XGMLveR}~4r#TNDkesi$|l#uL6Ryq8>aYBS=W&QSx zF;srWWzF-w?tPl;f_QH$lsbNIv9iY~XUp`~A+vZkH2R`d?B?DLZCfNkXI>nyQcM&> z&qQxCp2$-ZGLhn9BLO5cgsT(;8Qg!2KQY{7q#ZT$`)3!-*==@lofwni=Zzk^htFDEMlro3E8MD#;_Dm5*0x+#1EPmqghEC2xv8eAs@O;S7c?-631a7Ja+ zTkg3>FjRmo+T5?jvUwM~;6K}Zx??p~tpD`AXg6;%X$1oYHMeF~&yTK>^|)YxC+rvJ z=opuS&EEouPB`KE-%4FST?YL|dcp|y^rjw~3^!vmTtl`Q`nL6O2p0HWt@jL(uv~+J z(;+>Mu{L9LyNPqbpXIA5I z6{wE;3+L5spuAWIjdCuTfvTnL!aG6lky1U>cKPv{26?<%AFp^Ex`aK4u;8f$U|Qm@N@W5YC|}Ofhy+O>Bd485iCSl z0Xv5VnsAvs(W!5@2UI@B1@J*lvtGK>Q_XT zQ$zeCJLHdS?6l)|CDC8gn75cI|D-{6+QC*KfL981l*eN-?b9rvUVb)_gW}{zfv|0Q zl}NE&Yu31;NkIZvURM1`$a^#4KNIXBnU=+|j)9(Vc2x&oaB#)r8n|er@#7L+IH{aW zmb%t*!YF;MQx;ixQNDi-&;a8_y+#}IU=qjXH~H6man8IoCTKq&;BHfr(<)lLTqWsd ztL4)kfDey;CVKYtYC@)>a!LN#*4Cy(+-nh zHHrpw>cUU~6}UXs8Qu^74-j!2nV9%L zMJMw=Y=jZ}fAm|phyRP%7%;YQ+iP-GFL5J-3puadCeggW2zXWF2_XkP^ieFjNO+{S zx1oRwrA&W@imh2#3hM`0G?OIiIteN~^4g8IWU;TY1`t8B%}@24eY&uOD&PHd8T%!j zM=;jbMBu-Eg?@d;K|d0Kmm_*C+oeeCk?~}weUzqGehG<-JXe#Et+e@@U^UzBJmvJn zB2S1InoRd>s{d%1pZai7i_*H8Mu^jXY=^ploWonhD}ZRN+MU{v>vLF_9( ziEyH(4&H<4V>pJUDteJf$Iblaz&$O~$Kqk^Sj7x(NN$aqCwy>2q5{*p_OvORV0L%< zHFrh$y56;2sexjvq{6=8RK0z8trX?YRQgVg0;s3_kD~>A(L%;a zbZG4s_1T3jYJ&>MmP<$2E>7d;TZ0Oe%G3q znWu0fX*#^SEV^AsKX<1SYfCH#)E!AAM_-Al(T!v#YkQ?7ve}2@Y0jp8tOKrA=bW=H z1m2kL)z`VvZUywCC9SU6^p;NekU#+Z_%Ys1UD|FTB)!j{e)?CE5_PJXkTIDD%X-q44i*bbmz-~`8T&uy zUunMF>A73;s*A-lO;)jtvxVC+1e$=11O%X*0G4S!a96pC(&Ujw8)~X-^#I)`joQECk?+ zE&`>M{Sg7sm$ZQ+Iw`({8?0$rJDD3o>*!i@-|wsL*rC>_z^FaXFkxAXK87b~1i>+5Lt(NXMqphaxk^uK&(x}O+A z>w)j$7w7o&s$XK_tvt&C2UaONKp27inl%qu^65?g zY8Y(ZotB!F?L@^6u~zwBt82Shez~(J&{)mgYEkF4Z%Uwtp1SEen(tMvE2<@z&15DA z74t>M*L=JtYAj{Eh#p>Mo}cuMoz6_^GI3@rN{ zY`br$;%GHenn9J*)BKy0Hw&A>4e5~S(S7Hw$QfdG)RN6g@6(RF)SjTDuCTPU;yi(L%wXkF;dFDV(VJeRB&L{w2_Sl zfQ*X|`bdDpHoo2cJOdR^p#oh7JDA2o}>$keutP;=Au7y&ThQ8LDh-PE2O-ra#G7|6!1Ffkvq&k>TMu4bD!}R z1*6yWOG_Q&)?Rfhr9>8m@5_jMl2Oqy#`~AqF2GtfAm^AfQp2g!4{75b;i54_cR!Cu z;6%CY@?#->daP_aGew{wzm_@IYVPNA{M~A!JP~jg9JSXrEi2@pG|ge+?!oSIaoAs? zAvu3fwo0>rL?B?M<|YH>qe9pnHg&8o;eTaaVL4s1;H^xXY_Eff`4aQA7SU(=PT#r7 z;t~>?#^g%pL#&4}Ut3bjkl~$@70as+Z}!7I?aOkNvW=_h-(LgCCk<6`L-o^8**52U zQ-D7N;r{bAVlaeUM1z_phgLH=`?@6+P7$3v>7}U7-fvsVt^)K}BkWzY(y&qqZt@Q` zvqh-jy3;-*eF>@GxP%J9dzoeu5OV8@o4+l+_44p=Hoz}fL$Y+E=M@D8G9iPPVE5FB zUB{6&(5+DQhFI6kK*^~386xJZ1&%Z&GAg#)nZjwp^#tLN?-0P5V+J%*BcnTDgDk_L z!b zX0z~fAWb{Fp5dK;L?~Ns243ggcuR$YZcWmgn6m4efhe|2m&SMGt%2Wnv)|AA;7hEibjMv4q_@P9?9G+L3UFnYZq#NQ z9dK12!#SHenpm;q^8LN!Czu(y8{D_Gt4QwZgkk2*475j)l{oE}S0#r;iAa$~vN#H- z&S9h5mt?}R34aIzm&(Jtc@*Xix^;|^tn%eQ@NHx+>Mror-T!2J%_xhR|LWrs;H%NP zPEmc+g;KypP9DZWA3#zB3G7)z(wFi7L(z^d&ewv2zNraRzSmc%9P@d$y1J9 zxtzauZa2mKTcHRq`_=IwAOESwMRWion8 zaRAk2zXva4H#)raXh5P*`QQQuq@0H}mnrWuGDqM7!r z^Q8pKP}_1()TG^FYRx!bNWAbX8_v=8WY}nOJ1QH^`~#pBsY--4iSXnY0m$(2;Ayx= zW;dR!9i5Yks0fwL|G7TyuU$`;dG!Zb(2Gme`F=vn-r9P~mcoEp(2-$md=Iek)oD8G z>6+}_#1TAeB@HAUf8I~pKg#@82_cn9PP;{bU+ZecAe-a7o;DRns8ZcbgquSEh75r9 zqO{X?Hh~5uV+h%yh-&W1(2sJyIs(7P?>Q|FCNMv|c&Skqkjl~%oCV!(D?KGE&h7Ofu|qei0dNvES6ZhUcN7xU=emb{R}UJnC>Yk3TxKqw#Ts7+b&eT3 z98FJtfhC`~W}zB2A}(;)!j!JBBL}_ZC9>W^=Kxy1t43O^iTOvqb8)riD{Nq8Gb&+A+HLad~#|e)4zQ>=jLI zcbb_E7Y)Ic=%C@3jF3exZDKYW(M1oOzg;o+Dvf{QKL~ zzXd6*z7RY2eOTn?42IM)j#EBuCzDO62h^qak^`!EwtjNivvY%SR!di6`Xs&)_hnMU zli?7?sUE#g{{&0yHCozq^r!qHkDLV!%;8b3Q=xC?m4m|;K|11QT!D3I#Q{~I{;4EnOEn|EY=CkVGYn7B;8+zJuxr$nCR=oS5J?m zZLPzFnaoF-)jJ`{=wXuAKsW1$ScFUefr)<>aZAa{FXh<4=TjwRcDeoo3`+$SYG=jO z!ToHoh{JGGg8RH@T7IbH^JrN`M2aY=%DTt_5u8ngT?kQ5P6_SkX+{Txp$j5ri8zXL zFP1-;=b$3+b1Hl{gSaO?8Z#LJqz1P-mfvNer0N7A|Ls~|L+R=HvMLp%jOr%PnD82~ z(rOsLhG3wu3nFjOc0V|0RqnHTykG_qt`nC~Zm<)pRd*3sfmR6}>;x7Z{ipf7vHm>T zcLf-9pKCUr|D@o`8EH#8$iWO)nEHzouY-hmg~;Z7}ZP{ znvKMsBL$>T4&1Tasq~Iq)8(Hzda%f)w>oz(hHsVWb2IDJcJ&Jr34pN~-dfDsQ=Jav z+o+Fcq_roJp9wmNWz;m~e{_c0X)v;)<-krg!tP`vGNke0N}yRMwhqWD59F;G?wx<-eMB4$e!OeVAXGeZyh}g zEZpGuo?A+o&t`*<6Z6-T$U;J2U6~qi+Mi@ySQfwmX%G9lXKk3G5LF%9w@9MB|Dd+G zq<=_Tkmxd9H>cfB21?$+T9Db(2?+c3->YQR1NndGQDpXo7{kH8=n-YA`WMisaL7BhZR`HVm6%1-X#cvVM*Wz0*e zcA>nG#l9l~h>lRu!;wrdG#qfF!9jEZFV(v$-xuaLtq~ViFxx`?q5xBclI(QV5P`i4 z`OwGdVE%$Pih=+D==bsGZ>VtEW8N>LYxSWh2mrq#(;|o+#+HO@S@yK(QcNNcVcBrk z)NvOX@v9YfMv9Gbo&eMids7BkP{E;Ni=w4U(npP>;nmc%f3sM9R9V1MZU5Ym9JuN3oIb>OCp?wboqolmI}mIGM@xxU6)_%X8uR5To5sKl3fj>pM)O!)V#|}K|NVg~t}d82!Wg|M zMIubN{qV*irz`=PW=3GR#}h~(8TS6FqWXCz(JJ5Vs%oN4G=S3TkY3~+%QmY0qwD@5 zm8>&7Iusm#^pHbUR&n`}*ej`VdV`(p{b$70U7>N+2Lx1QQ=-sj6Q{GcHkd(jlDaxZ z5=@EbVcG&W8cv#}@XHY_eZoEI+-Zh(yfR`cUR%l1Wn2;0jysvk{&EJ1tf`)<5ZQ4P zQwa-?Y;#mrpC`=zXsM~9{!cR>rgTzu6}U`X#nn`phz{Kf)>3$u7{AFd59%^mWRZ?u z?#*%j#DJpUT&WA_B4+1%mqp53?F39-mHC^WZboKn9jg~t2R0RD^IH_>``SqxEeHLn znht+p#+O0pP(Yvj-EZPk0bBGrk`OFND;dxa&drPfru6_2K_8}tGX+;T?nBv4GQWgu zJwV%%r?cjed4h(9RQAI_5!L+QEwzw(Zlh?!c!=39&o)pWZuQH+%}_0wi94;-Z+Hx&$Aw??q=3hP!xD|X(&ya*LwfWlxrR6o~xWKH`x#*ZbJiS0*p^U+DPEw^2wKc)bEl#pffVoj_;km)UEe(N{Y|n z8LaVbjb+*XcZ-j!t((>8YDt0Pj&Jmx?edhhL`V&<#5Zy*KO#TC;-fJyTWWGs=D1~S zOBumclvF6;&=Y&?B}d!OVpnQ~3|*<)rINPsKZ@c9SoxQ}E%jIA>z47=2%V{zvBzY36sHx;xPgr%67@w`5Ogl#{du z%Lgrgk;HP$DvHaB{tdMj(}4R%9;*4Z`EzFqy`r3$!LrJFL$1(uz0;~@G|)KVCyuHX zS*BSC-?Rs`NsH^ygibTUQJtp|7%6YpT(Z$KM%_dfbNkfA?%mxLua1HoSDlmjn<#)|_F!H|Yj#v739 zSy2PIo~~_Jx|O50#qAPf;xyVNQzExlqiUk*FEUg(tYvw?Z)Lp+s|5)6ggo7;%>Cl^ zLxOTj|E!jM-V4N^P-o|8TMC-u_^Cyp7_BM)pp6$Nfm2S`e~M>lZ{TdKIxe z=^_#n@dWFM>J^s@R!=<}T+>ee+9OBy_S@O4WB9W5=}Rm5e}|V_sLX|W6B+QJ3|^q; z^!qw*T$x2v@8Zi-xM%Wcze|=lA$QXe=HUFctacu!Zbl6t;EmaZ#VCk&@3BY~0rb5*4Mz1?l`g*%iTVB0rYXwqrE2c7YOh<_D zzARfq(hm4;;Y}wOTA9zF) z0@j$mOb#@~Vj1P#Kxcz_u#R9~r>Ww5_CA?+b4-U^#Yw!+zB@xzeHrg;&j;dX$U#J&oETJ1y=1sv{8&hoDc>o{##>l}Em<{CB+1=0mmLT~ z+X{{7ni!->4B*${_8xR~uvb@Rs(08Pl)2dsB^Mh8Uzr2(d!rxQ7QiGQ8~|UL0gl+m ze5Gi2vCu9U4sO769eHNF7s|Q%>7?w$DtJGTk%fn^oa{Fy7-|ligj3-M~ zgcTK4*W6e7gYgY_i-3Aku_xnY`yZ4bpYvyuS3LKYq=yxH`-ddUx{Y_$G?1c@a`)Iz zj#bSFXFdaUEbl%jpN~M47-b(-w*7ymt}0*#Qb^SN--G(Xlr+%5`m(|D*L$)Y9MZr( zy@;8>Ro49YdZHN_5kNmke(NH^koEY&N?!HKnrJ&b1-J4mxI!%r26!MxvL(kVh{JhD z;<8Xv&&f$hbg4k@s2_Ixa({8y_#jEhmbbyp5gCaF!3_&eOgyo>ATo3@NZAFIZ)}Fy zwT@@AjB2xAXt1Eb-#JhIy3_xhv-NtHceU*xEgpJI=R2Cn$^+VU7sEO6w)F z`XC?n?B+ohgY?N?)LzI90-z4DZAZ*TyDKSije%dv_rT0yy%$b3IZJKV0r~SL-a+Bb zlA2i80}J4`DQjj!Tg{@&^CrN!Q0(#aHT)>px(K3~Qh8W!iPk|*_%m%=lbbaHUS(0u>X;b!{{nW!LjJX` z)APU5(_|X;1)wT*=Xv-H_add*IB;`91)w6s?ZLp6{%JGp0LMLPwI@9#vrl zxjHTw1!LdDK6q?K9?7=xv?+y=)_ zZYcV|tR#M^^7~`KRS9LPyyUR%2Z-1bTWjE{edpZ3f|Qj=7(5lJf2^cjmEzfPTQ95B ze3JuCqs4R>K3av}Vcjc^^k+vTx?D;;ae>8FRkJzViKt)_l*wee2@f?j`=!=h7M-Y+ zl$31|P~VrRm8Gev2_h&dIqK%Rr!64?wf!+{&;`h7P@TGPLz41r&rhdr5|>`b%vkTw z`MxrXfCm=X`#WnGV@u#>#$+G)OwGCbxjh4#nT5slmzIWxg{i3+GI+2sN*6!PyF~xj zcFRwZ4(MST?f>$Vby1YO+6f@^nmwEK+6No`*I6Jj{cn02zmrG@^bqPxj9RYZHNda$ zZr9QQVJtilz{-PfBRy~Zw>$2CxZnc+NB@7g;2_nH=wLa(c>nlqq0Mo*Kq*qmut4-- zUaGP-Zo*=hgH*NqZyUwe32d$~EzZx11_~ofwJl|aPRDqwOjrx^oP?@XN6MM{X!1DC zsjVu~9`YMWzEu1d^=#Gwl(cZG1v+eIE^@ZRjAaq(a(5+1u}2X>3r{xO)uj4vPVD~T zShC)996OHqk0;KwKHW;o;C)$l{?^fl6sG=k$wXHeK0Heo=_>Z3`L^Y2Fvaqm@%`}r z!|qP}p?uT$VgXv}NLHSHk&1-hn4OG$Y|2v+26c_ztM~H>a`P!+2oGVazHoNt|AX{h z!cw@+utVgT4*dUsN0D;H%$j+mNarHRIJuZq!sO(1JjY9o>T zjUavmF&k&R3Jq}AyfL(<#|yIgsH~?30A#DnaXz;3oVVq1fh-X#cawF+8Qp9;xFz>G zf=h+me;d)F8Ia^=KctciOGDq3@w;Q9KZ2xwo!-OQz7bBu-QqQp$%)(j-TtIiY?&O_ zR{%*?MOR&?W444htIcwOAvD61UN%zy)RcCN#$x`iB&SzsJapQ@8=pt!Ou)GFDn%R$ z@=zdyG1!7LDusDbMD~99_Mlh#_2G;3xEWXq5%L6iC5F?!!4tef3DfZGu3p~FiMk4l8yAk&`Xq@a{j-o)V|D&Ub zwPI?#PTJ3Ct5>P<5jl4iSl78#*^|i~bQk1*w-5!lle1jOvZP4v4r-_?FPYeZYK=^#|BJS_4vMS! z`h7PJ!9#El!QCx*aCe6g+}+(1Ja}+-cL**)2X}XO*Kj9!e(!VMQ%CAn-MaG!HSF2F zr+0Tx@74WT-?a*n=c4GZ?U_|cadsJU)$}pVb?q0DgzR}^DBmK`{9j~M=2>9r&bP(* z7E1lJ{{@Lj_z)(nYP4;9t5NT*-l@;${tG1UGLnt;oXjrT8<%H|_%x-y55=(cd>Z7t zz4#FfRi=s%kh8_~1#|OP(P%G?$zB+*-4=N@YD+u^fOoSYDUhl(t zN2qGtp|shpr2?>|q8;GU@1IvSzPCI7E0=j*@lWYLqW=n8)DJ-WbrXeocZ!RLkSGW% zcTa3+)ET|~0vuv~Yl5%-^Q81ZGCGKCI1w$SAR`w{BrW>nrvQ_Z6|CbznlXZ8c=35*^>~dE z<;Man0u5Q3;j>G?_QB`Fg@w*;!{@R;2;#rAR%I+U#+Nlw&_ykLQn;!>GCl9;KoDmSX~#KtxjVwbk^VR7PVX=`hZt(-ZNKqP zl;b6W<#dR;3|E!i=;nk(mrRtDJ>_Z5Bei+xne-C|FJ0@#XIKS5*u`)r5MgKX{}*hbRei zRl*?Jca)#y6J|V*EJ8Ft!B6kOJYpQd6U-ljqOm+Rm`JU&IKt&T2026j0aQ|hJ;uII zES+52J_*N)@+JnC&lGh`qH_c6W=r23#b=SGpa5CfT7LuPLV3~AeHo~hJ%57s5w!PL z=*^7x4~6{)0S^(W#*jW;3kV*cd0%~k0aC07CaZwiO|O~xr$_f(ZYn%d=LUxVjsSJ& zI9O*v$v0Lr_teFY<{J1}*8<9mZx0lIXJKTn8Rs=s4#EBSKuL-H?%g{qEG%s7r1<#w z#Kc5!%w8206;)N{A0vl{796Rd9S8T1s|mE~y@(Dv>6}m;i~C_f%*p!?V8Q#l)4*S% z?-dhE#H6ji+ryWX{IJ^ho)9;HMbAnlg{PvTk#?vdwH4x8@Pm;md3)pX59%;iz)$!O zI64~o7aXzcZ?!J$BdvpTJI2fW6%&1~UuTwPgYBeRSNd+Zos>>2Ot~D5^#<+Laaqu~ zD%rVFhXgMU!LY8AWM59Tr#8mO8RfcNkzFfk1&J9#s(ets!z^WlCX_OCm7)dc351xN+VfO1w zOCh0dTQ7x0InuLNm{})DNbPEP+fW@@=c?K~ewqe}!uADUO| zGJBn@WY+83(JW>V;_?(e|2HaRzWZG}{Vrl)8ywK;Ze=zKfc>p54I^y+eAD@5l`IiF zVs5@8>7P4nikS)j3|1eNVr=+~>s+qo(Krb7r4>@=S01iY#+4pgH|1(rbdjuqo z3me*Y{etbf1Rz#KI>ms!$q%WCbKuYoc39=1uwd0rOmAV1sPy8BFe*Po$%uy&smIQK zgYmbG>~>uw>tCnd%E*30nR*gXNw@+_w1^$Dwb#fuSw?ys+FcK@FwBAFX zLR~~QvS4&B!LSv7-i1iT5E5k})WG@LW}S@+3q17QKq>y&-@jbl+o>(3`9T1oFg>Ch za?iMk=lbM*aKtL@fk}vpz!M9?WR^f95EtbQ>tBSD7QoZVsN=5Nt@gV(Ty?t5^LmC_YKuW-Oh)rq17w;H4UEk&L^jxrk<2szU z;TTfepZ0rIE9xPM0xgSgT^)BCNL&k{)P{sTk(FOlzbwrtO`o)4SKwt2O1Hgar*x0c z<(-Gu3|p+>2+agHV`kZ8G2nfMPMEC1NGaflI>yrXNu-fmOlXc8Vi|=5{Qd}izG(SU zL1OA!=RfL;rColx*w#$ZRJcn-ZoC&kFTy?gZe8(7l~o~hXpFr6EQ~}=Z8G6#EWA%Y zT+v$KmvWrD`O-sLOK#a5<*m-Bi8}uxM!Jym(}M1azsB>@3p!*q6F(;3&MnJO`og>D}nSzZM**PG-1Emd%oJP;&c{bH+_%|PtvGwur|90Enp&xPYFfj=w}=D0PP)}s7; zbL2NvK-At>0a40-xrM!@%{HRI`t~w+ol{J%wC$O-rnPWSzh+VW`=jsF3BzV#NY80d zP{_z|#3LIRPU#Iq9dxgba-IWCciE3?IOK1x^Q}%6lnalq3s`e3$^Qa{GDa$nmF1q5 z7-!=>@`(z(fahLab^PBzqE56ls%;D2+HQ7i!XJPXcjLB z$}RK3oU?M#BU89nmI8dji5CfjtkK8M6qzP@ItMBp^P7!4jtbZ5y}?+G*dtuApg3-% z)BV}C z=Itg3n|??8`^uxb*zsU86%+Vd)il9o#*}QMMEN^KVp;pA(QdpOBw$*xD0-If~d|ANt>45irdTn%_Gf*_P20GVR5m=oH;{)KSzW9fQ z>Eh5?!cl#$T&e%HSaGue8J0d@F;CBd1q++w=Y+!K+%6D;^CbkrP}kdcjNj+des9@v zjQg(bEY0)myS4>w#nm<$Z-yJn@2TNiyCl7n72OfsZ(h=oX`ZN#S!#ZjteI%PP^Ue@ zP^5B0z8^YMWn40wP0zk}x5#o8w2DcR9G!ABILf$Kk}DpDLyMoT6@_ALrod=JCfw{u zM|p!lXweS~Oe}r&ePzOVhsQIWhz#U#cKsIV{;F^GwS)fW(31s=x7JphGF;Q$SG+Y4 z&)%u8Yv(cgU84TwP5t>{p`39= zi(3{P87OuhD-qzdvKg?&jony`i1Kif)A<9g4D{C9Aqur!s%O`}p71Z&kS5v3d;P)< zpBy1Ra9>QglHDHvOt9ct9}jbB`SbwJ?-2G;r(yD5jk~~|UBsr(TM_L=;I(;z$P)Fg zq48q%?YmizGbWWd ztIWp@rOb?!1`%(%qfK{RT(Xkhgnf&qj0Ef;R_Gl^Ld1vGm=Ipd-;;}=|WJB2YikQBwnf= zz-G1lM91xEA41sZ2EwuloI&p*TjIj2^0QqyzssLfGAhqC6BU)p514!URqxDZ1O>h{ zvX&!R{-$bD?*Xc-?47leNFV@6_fLXM7iUF|9yK9`t-H2biHmRI3FEtYmWj+EZ?D3! z3(%Kw4aEqs#IO~l5LZLT_7BZEVSvOa>*0;mvjXX%x!UOxL{@8vvO>P0I8Rf38|Q#l z@u@NhD^q@k4lRGFr&trd<^8#7wN!`{4k9SEbl&aKQgs&)RzjGEW4Q``qPC}yP@saj z+H`|oftpu0yXCy=$&7N~4Xxg^xR50+@hZ(-)4K7z9jYTcz&_=%S}WJ;(^^qVo@y*` zQIRDxSHyGf6Az9AiIB{#4ttQ;!ge^%aY#^is1%?O%$$`MjM>*%L!ag`jv;Ymi0eR^ z-goZ_nJ*$CNvt}L4a2DZvljOz>EjrqPWF}=qb}3s6Q!zfam`fKq4-NrP^GVcjf#Lz z3BPbjgUN7`ZY+(CVs*-fVsKo=ateKz@bXxr38MS?x{&?w{=tE2a+mg>U2PAKNBLXO zCw28Z-ZRB}0hdJvi%@ytg)OU+V#dMW9yjuCD(=OtW&tAXm-(x~iJYsIb>b>~lRaaL_`J~3i zegSWN!y7Q+)TrAU`%=H|?F=XF#Mu#u!w;@--|R;gKQM}3+k`htZ`rG}BKnTHdmMfr zudA*l3K0uJ`-ObX*p&@VJmG9l2pegg@zYcA73PUihp*N!QNA$};YKXduFu@=?}@fu zjl$@{9ZW7D^iZ-lzoK53I!*|xv%Pa~eMQSsHiPcu(S&h0$2(v%dH>0PQZ#hl?D!|i zHffNLLvs2**{*{Y{>dfsCn@(opE2=@mr%L2d3LqNn3nuzZCSwfFpq^z-TVLmF|S{g z89n(8nkwArX;weIgUTTI%o#k_9XmFGgku8Ri(+FkoInv08R?H!g@fpxf9L24jiz)c zplq7#faYMn0c)S?ho*s^D{TH=V;4H8GgC3&h4cZifz~2o@QrEaghY~rse9BJfr#m~ zwh;V!6^4T@fgzlVrsR5~ZU5sfi+r8&TNsN`cdaZt?7Uxja1Q|RfJ!k#^~76|k#5?# zcr+NBLq=8nZU2UaQuymsrlNa(w0$l2%>8_J)uuexCXItv5O-I&=n5?*LHT`;E= zp@0GDfUlo5RuNYT0-!n|YI90dmGC;BfqhRX02vDS&l(~I6%SSl`t`scJjCCWCjDU}P#;V@eC&Rw8U~+8N z!Y{#MD+ygO+Z+Ns8T`1O46oB2Jvk$--Je%CJhS-=WD?{tW}rM(;{tdy@y;FBy|-e?&qkI`s?fPUq$})&$p!NG2nmXwg!1k4tWY^MQ=?=t+A}`^(OZos zNGzEkLdEgk+>x0#tuNWKisQr>@O+lt-*;l>p+;zj-qTXc65ro_)}Ttmho#ZoW3zC* zLbb?O6bdOF>Km_lS?}z&yW?`{>%LM;e-3D^-=V0BKh1&fZwU8Qpe&F5R+4?%Ji8Jd zq9ch=#ZkVFmuoxR!D*;bG}dgufk~MA!6!5G?6J|gKa;CIuT)eKR=~C^;Q*vXkIz)T zm%5&qB5+~%qDoC*qTgZv)t&zL)Cnbj1d*xsyTkmAtqgxsU|d zNX9J9!lxJ#d7lk=$32wHnHErN=ip15i_189NhSpi>@7`39=M?@f9UgTZ?M|QTTCtN zp^VvBD&fE#gi&_+6GH8|5YDU{Yhb^;O88VP&R}I%LS|YOukMiWT4={4<)Wve$!b?B zl1A4WtMdqLQz^?$mG5!F)fE+kw(;gp+RrUE`=_ROr#U`jBxa}j?w5K28&?mvX&%E2 zM9GUFkWAz`-Le;!&OIG0TASW(-pWqISG_aqPBSLQuei(v9`ub=7%~DoxkAT#e6-HI zOnVN#gkpiR_HWIF%`iZ-Pc{2528ne2eT>p;Y}=jZ3T9e>;V)rfEV|pk#@i}S6tjU) zJ9GjB2sOm>BUC*dt{NzZ1XMz(eJ%WTj1OvV+Lbkv)5`{q0!=LFC|-|eQBd8i9COgH z(f!5eT1C73wvGakv>5#a_bLUX89na}pf z{stX8CCj9zfZ)oT(;3R2KLLQj^5BovirvE?>-F(30|lX)N)O;z?6EMMfe~EvsI6Rl z71>y&x6ga}2fIy^Atg;LImrnOK?@ePvF`wqyOK=#&Kn=eB(^D z!X>)*-Al%-?j-KhOyV~z2w==u5Vfa}SI&#dXIlF4L3m#`GRg-ztm96Sg$O$Oy2QGh zET{-~_JD={Ij}0{MQuKt<-rz3W`EymgcQjd?hFPyp)vJRuI!M65#x?1<2A)v<6!@7 zUuODTtq`)T@cphcuPpyFMsrL$SHzG>!eaP zBZBQO45;TpgPlG_Ns1jN!UHw6eqJE6SpvcBVioQJf^52w4TO(9@15^PPHaCdp!2yS zMW<(mi>chY>m!TBjYAh7<_?e+b(k9`Ntc)5{v|j8Rta;gD~wYlIX!pNefH@pWe#;YVa2Mupehmr&wG)p zPBI!~8}6W@xLpUKjoU7LcbqXr_51!f5k*c26;BS4yUw_&FYcr#gg7>sV4~J|73x;# z$^3{@#+H_kz0i6~fWf$`EO7MW{Bjz^jrxj@v(?D@XbANyftQ+_|5(Jb4}asV-BuGH2QMPd5(X-zRVo;Z77rNL0=MRM$)f0{-$3}S?d9E`$Wr!{s95* zY3@$%oi%Zl#a;t$dGM1s+i6|)$ko^kEiNGVuC};x4P9?e(LY1~YJnIAIlqX-D!f6r zJRdb$U=Rk_2rX@#1TIfsuV_$#OT8CI^{k_r6`>btaTaZUil94|QT2LbBpd*E_JH!h z;a{+4sbFG{r_e=e>p5a-GEj72ko^dD<`J~>s6{xs3o1`v{^9F>aQ5Qjg_g8XDHOYj zl0QM~AscDKsNTWJ>C`HL#7`;R75&|`{qk(ZNXT+~yu%kx#rsO^=A z3mu`+l~u6qN(OIOJG?5+2IgADc+t^Ry!!dRmyGDzUc9QL=I5mDE*~^BBoIYs22=7f zE(2q*4{ugcNYx1bErg6V>eNzqG57dADwVd#4mt2q7uJxtyR5Cs7GawZF0czDdkZaBJXaq z$tYap`x00Y%!-D|JVOX;@#6vT{sNED)kpoF)M1~qdS0XxK;HF-6e0-;Y9fd=b0I#Q0d(QFW6Q=sbiQq-7jy1Lk% zbXuduBbMLVI!L8zF<^qpLUAo)K7sy*l@P3FMjBLE*;Vf`ELdy_H&V2 zM?E)(Z40(P4fuXsLYdcFLKM%j8g40F{kk1uc_UQ-HvEwxB0@7{6UHkg>_w=HWk&0> zVHFH713%J8F7FhZte+MLrK$h=TEt|M&syZnok&wYB#|hPTPEG)HSD2%C9 zK;n@Nb?zH3(ZoEGe9&-PE-{PYxm0v?&Hr>z(!sAG>z*urMZ|cryI?9Uvq3WI%d&(b zBepz5-=-f-NMp%)M12QcGgg>+t;YBfyL9f`49@nY{n=4N_GA{RSN$?>r~3q}CXknN zmzv6I99hEFy{Chlhv*SlnTXKkj!K~o@pEc$goR8f0iu$sYHuQc#VnJ)uE_Dgir0cA zU{^`&JYp7d$VN2WLZUJvt23+1KHg-?XK~t^43n1Le|Pdb#XCCl32G7fyF7)|cC?{6 z!IYXcj822DtAMb>bo*95#Ik~q5JScC?%&1?60_7bgmH0k+6JF!ak&+VsL z3YLct7(F9jXXY(`C`qXzhm`18JK93y`Y-HDEIg1rI(dcYudhWz4|S)9?PX1Z#ybw$ zlG;vSz(jhnA_**S+pc*apu*V9zg;+7l&7pVSvs_jyc%zQw{l40H|^T)%i;m zA0x6hp4?|7*6dPh$%-M>uiW1a?gfxyIe1Q5F=a*Wo{~|nfy%*2S68EIf81_)TRN2J zJ4*5_dm;j8zQjtsou&yX@N4+6tsLWiP~6;|_JO+uTv(8$+Jb{|WA5Yq?JE8*FB|)8 z>uPM}dhX^mtwv0Ai*GQXJ`Z4+<+R=|V}TvfE7e)B2gl3I`yX0#wOz1*Aj?_7-_~l4 z?xC+1BeZGa^4|6qJJ;nskgg3M`SL=#S-%=T(lCe1`!A1bn!SR-c8yA7MBmJeAR7V*`Df2+b7eL+GX`-xXYOKrp1qkg1 z21+IzBlfkE_03Er2Loc6~=kjS$WCCts~^vJ|hrGhO$^;L=BRD~B#brtD_j)}MO z@#XCLp6;uzn!dMY@#_)|_0RKLw(#M^aE_pIH3KqBZM?+1dMhYi5ws8am5F@(KzGHrVCw4qp+s-4;X7evt(6-qjiOb?q zJu6mb<(e!SyJ!B7hv2N~Fedd~3oV=2JgPM1=N2er4Z>e(ku=}9LMF`WgK{K)Mh)pL zJUb+u1{h8jS@%cv!Ob)~l1(^=nlCYsKOu9ddU5Y@Ma=V1_TG$Q;)D&IY^ga9P?eUeo#jJ5hERKqHQ<(eaVe`K-k`|Yy z?7^Ct5$R)0DJ-;Gh&1lNOykZHIyl9?4k0*-ov7m$cA$0W6F#8&cSud$tYt|$I&sAy^~$D?29rld<41Y=2A@>b$n*XAI0(cT{b*51$IzBn zvSs$P@P_z)8v-GKq`C1{)a6?z`uIJxPb+BZ%U)0THM>bc@!ivT%{dAm5Oy zcT~6mfzv#8SjCy+o_G3q^=A8A%1@$4wIgGfR7p7h3eEHK>o$k8Uwl$gaGa*Tav+_s z<|*PXyvsmjW@wZzTzI`8AAHy|WV!~}bP-v_{BDfTiJ_L3gtMGCY%@=S?qu$12~sfg zGZr|r`eopwf@ZCycNJ4y=rn6Z5fY?mbM&wSCae^*tp&>4HYTwo|(+kC`v>Q2bi=29##y-DUG3c>cGHS=L-uORuOH-BE6 zESB&@8>+pBl@?6kic0B-iTT+S4KKP|z!6?dTrvZ63?HQQ)#mB)*Nx`-s)z1aM0w_J zBd@rfJ{mKs`~-u2&KqYe5Vyz8VXC}|HU5v32^aRso-sX+mLKMGm66;>PjH!Ge@8~C zp4t9E)0&J(MfKvb>m0+vr)v*y`OJJ=s5zqLm5#_}NhM#BsUfU2x!DBBN%7f`*pp*&zXUOUzxwc8;J3BdU=oa*6iY*m zaGWzYJ_W}D+ugM?{tI0Lys7x+GX05E@)TbKFAtLIFg|6kqAo}(DMZor@@8_;#S2t? zkMe?8SU`HVldW5Q8kq9S8u^=nhm5&Rr<)=VC$>rc&IFBXVp!5}YY{sJ$~K;bQ5hjN z&vUngc0);*f+!LpXGcf$Q~A66j%II%ry6tLm)-K)YZv*xzr$q)G%gRd_NJUA!!YTw zZ2sts&0^+zbw2tOZ1lo|qE^0TJaO!H1GBINXG+U z3Ij-MOL$8y%%Snd0t^b6Jh@t*Dv@Ekzp#=rl2z7J8h^^YD6{U7As!_n(sGD6yy*vB z8wsS(cyR2@U8+B>tN!P>f#T#)u*q;^3XNvnpmvv`ZJ=obe2!ac6u?f z)MRc|t+zTXhCi%5cZjvp@4i3!Y3gd{WVz8sF={e0$)6}g5;Q&{j~kqOboCG;Vb0DY zoiJ?tdrH*@@e6N|jsWM(|r$Cr0N(ha!#PjH_m>8jJpENx9fwkA!>>KSGkeqr} z9BWs&$X#@30>3xvt1EN0_8YIdYNkr;gjoLY=vVa52HTh0)ZNMIvQZ8oMYJa=R(DwJh60s^dOwUuoh$PL4F z1z0*Hn1v4i?uOuU>FiOr^EKE#F~4(kf(W>=9TH#43&|KWli%8gfkWzd1Mc=8orX&%B{7Gys^wAD31RdN zaV-`PV{REl;j`2hR7-ZcK`$uoXWx0n8m!k((;HK6G$;BVC6?M(Wsg!=`S~K|Ywr?& zk8|_)C+2w#8~a;7A^ta}*~hCCZX&j0#*xZjez96io=U$!wmH~7P0Niwt=s>y zU?VLE#0fZS?@(OE)tN}E@jo4)<1pV4h<&ZQ>L?aI znrV7nI_%}{ws47mm@eGkRD`)IqWW$F0;tI(MqGFcf{EGg6<>>-uRT*MIq(yqT|9`b z#F?M5>V){bg2aRf9jF4YjkIw<@-1M%bzM9V}a;&vb61II5*jM+v4wzX9g(KZ_b@}G0^7Di(oboAx&^(FE%?6 z^jpp|u)-B16?==09W?)s7`GG)N%b2RY~-TW2YKXcl&{E_EQ9VI3|1?wK1$KC)z&EVjPEF}0Akk$EJnRk z^y{+T6kZ*SOg=@e%maQ)7FWFAbJ(?|%CV~&Qz_y#BSh0&e4l!4Ze(Wwpo!wfQ*Mno zo$PmOzjC3msAYo+PfNUa(3{f;W-=7STtx7)Jk7(=I5Q;Ci$tqI7OtG9wKqX!dSJ3F z6#pe<(SlWQ>X%_>iDRgj^Gz6sveSD78qC&J&WiF}QhadZnT@C5Q*YMv)N7INt-`ZG z_meXQV^;KExfNIse&G-H)@_Y~%6E@00PD9#z0&kIlt{zyqy`O?QgA1vYu(}%HcE}< zfMXZ9xO_}ig#!t-rd5f9V_Dv zvOlZcKJLSHS^hvUwV-LIH)uAql0q5Z*jz*Cgr=(6;tLy0; zSC@ve>nP zygUs}O>|+f7K$|Qo^j{3)$5_g>uuCn`s=#c;?24vHwu(*ZQnEjY0&ssfcg5wlV!oK zTk|IYbg$Fresam?de6NJGFlX4PMxJj3NidYbJHClvQ=^ zA70$5lcNvtyGH$G#|jA>j(cE+4F2b3yTlF--ZTaM4^u{aEU-HTeAgRz}9g!SuoZbWZjB{JgCq-ROVt z{&nu>;&$^t4iGNq;IOJ(kbln_kA~X&f7AT0(P+MJh-cdktSWTF#Q`nE%4cQEDkhfgI>|D#{xT@~a-BBpSgm)&G3 z0%B)pclP`phX9aBw%5!z`Zx1P|5Qt@=9M3HAPHhx${2u-@tWTkgD0I;Cf z|C|3jHo&0pyAXeU^QF7P?#wq??ecG6Kl0>oOSqNs5{rCCo3Z1XJ$qQQxzKZpaC=P)#awS5<8_2CBvv-m&lZGf z190#D{G!LPJDaa)F#3XI5FVhj7Ra})h1!`OF1J$vZqwbeZ$sD}Yuq-XYyg*Rb28ls z28Di_5*(mchSPD?)|3a`@T5QY7BPrgy?_Vs+h430K*~9L=x-HBIf4SX?m_x!>m#%a zdIUdBFH>*;CD+INF&Ovie(|}15{vRaTm6|gT0|b7?=-@f9CyL%V6|v(V*b9?7Xn`+ zKhn-A@~ykRgcO0X=ASm6bU@|Q=pD=hI5Y>MB-xKl4TwILrjBaS{%;R z^FYXnx?Bi9*nJ-RYrd40-?uHOzvHO(>P#{%JsF%9Phlzs3IJr<9#uVSV4WN`7h)@><8ZhO!hS@N#1fjqadWH zwhF2G`jZpq9{{i!(c}d9#eXfgB-`eol8_ro2ynRoy?ZbFk$J(??HmILlsus$@H%hOP-31R>wH`ZYai60Ba(-%8j&o)Xgl#mT|VF526BFdOHK1mq+i9tZH zE|R^3uX1Glz!CuRdc6|!`(y5?d5XQ>GR6+L(16AmsP448sg5mR*94(}c|v)kai#a6 z$%B!w=H1x_B7vFkY)kYXG1DnVnmSsm-_VnEU-z7`%_t(n_G2u~nLPR6^_883^t z9u5OCbf2z|I1ij+RSFHp9sv?A4)28-6$A+-2KpZ^EU3WY6Wb*D%$i}Kiwh8A|M@XR z+dL=W{%bJCZNf8#C{jfM9?;oeD^6SxE=t|V$;eNupp()fQW&BGOq|3h6Mq8Oj!uQ; z9lc-hbOQ|gNWysWTkLy6$~VT8Fmk?p0zNP28A`(uDqgQ5yQ-K$AVi`5XBzCFjS?B( zDSmUVg~8v zED^_;Hin>=tDLfTREm2jru>eN^!3L_HUpsZDj0MRu_^ZUS?Df@;giyWw~S5%Hr{sLJ5v^hv0qWUvod60gD*EDU{X0 z*twDXsjPv^Z*OKHMXFB__wy#*1CrOTL_jkZ9>x!)N>mPr2T@()8vT zDy3p=au_ZGKYzA9B)v>!(p~vHot@#H7*`HMJ0sp@t>;czCOjuvb6TDKzR;V+1FUj+ z(oKjK=hW3T&7WZ%E5%_@?@FxW??^es*V=CeA~`E7t;*Fc=$Il}Y`K|oMP%s#cEYEO zD^%ihPFTNfW!^JmMRIz-zeAuM_~Yewf$HJmfoTJN{=onT2L}QRT}Ow9zd30$UO&fr z2PW8;-BK!zy3G7i1ZNBfhgM(d`}K?F!CFcx3~a8E26cT#6ApV-`aL#mTL-NS0B^}8 zKMAQMF%DC1aJl{_CTZg92Dge#sQxf4FyQNb=|lkF%yH~~KKk2OFQ1rrUs2baqlngG zAYz)DMdB(TdOX-Ic{uU>cKCfh={j2x{$~VCxaRM&Jv;}VEg7aXhZ&)1NI9?AFB}l-t_;lcK$Um1U`73 zwps)UlX5`PME7j`GwIEx>zBNApr`%EeA*Yks05`;=aCEq20#K*@cDqCALP4N7_*J& zcYaD*&#pk0Xb0rCPdT|gdnMJ?WdGP@CVMlABtdyjVikUhBzf*I!rwLCCrE_7b)u3R zr~YoOmliL*qvQx=A;E4`2fhE^+pR>*`}XgoW#FP`EP1f)$V1E9xbE#W)ZbfHM(|yO z4h9kle4|Jq$G*lGyMojb)C$FP#FRnrD9)kbfhvuW*$OYRW0AjYc3pd4F_!Kt^FCAQ zN97lR%=X7kIThhAHG*`B4)aLuc-n#e6Wfk#?pCry;J3S_wGW3@$VA#A=^$lO`*|ct z60ATC8S*bQi4uKp!GH2afAEyVe0Vqv3AP+1|JpIzZ+@A5dLzCzqI&-=T6?+q@rA*d zmQmx{B@%y*ZQX;x1^rP}qBb)~_8Bxap^;u{e!6VGxw^M7xw)3VqQ#e`Da%(8;@&o@ z+-->U#h%d=< z*0Mh}pc{F+7=PA^+iEJE?ZB10>WtGhBUvhz<%i+~aYm~QEQtTOAo#GydMRdC;bNv2V8qIf+w@P&#_hy!?;JK1$Z{~Z4 z`cu8zn44EtBQC~e&Tor3i;bTY5Xy7&g|D?9s>IPjB8t4N$l<1Py@S|E;NbUDZePP- z5*5uKfXO;())$et=Aa>z-0qa)D@#JVU-PDiLxWh{cdiUSCN?xz(=BTcFI39K^rkmC zG7$OM@K~HdY$v_psYy{*FHtY|`y|qdCFDhmcyFY~tvPHaTIJtAlwLo~;1ka|va7tL z7aXd}OP&>t+rz&snw?%%H5=G>Ly*5>&sD6o!i+ksjhdg<5)Pvjan>u9e%O%Y7syYy zl`!ddo^wHJ*b0CKfCz8wk;_R#Ktgl@L9w4RIO^nFk^V4QKhieiqi^By$4VfUW!_eR zg5Ny>DX1zLi5?jx6coQROGnW&8Dwf&T-;@7y8D$}>CmY3f}8xw*~&&LM1m^zEeRdP z#5yyMj7fu_jIn$M6se%y!jChz_eRUBPrt02N`EC`^|D>9c#LA>zk7KfWa~oD7pLsI z0JdXKngOP)QrT18 zqCc(NvRgU|@T&xKU+eMhr>XdO{j}6E9K6fsSTY3#jEm47T6yE2Wlb0yzY>v|<_qO& zyvHK(iDl=f;|rD8t)`-7HJ_I+qf1}uEOUea*jt;?(j|k{mi`V#M`iUB!6J+D>^x|~ zMt_Wz?e_8y#KcWe3-&i*qcnxxGo=}^tEQ@};P&r6kl4N9hN3)fe|IAZPx2bXx>R#j zM4c|}GwR#Y^e~x%F&0_gqpFm~_VTzqx_Y#=^z7|yo7JYX&3tjp`XP%86ZNpu(WcpF zYN6NPA8XCS<$^cA;T!b_UQU5S_xE69y-E|QfsUOrsEdT+QOBEJOss%}oW5T$)ZBKk z&1-M!f_6}TZQEBa4*m`Bl@8O?j$4Kzko1X!6nbwoVW53{c;49u>7{N~q~Gfvqys2= z^#-i*SsXexr(i`sGK77_h5+F8D{r>1KB~3FuW(>~Ox_w{KVP`x$vN&Py*gdRc7B>I ze07>)J|yOEzenVchmsWJv$ya^E7r@kNW??wiVv$>)ga2(MzP6P>nI_4)?* zmsoh|wZUOZv)!`JkfGh)VCE&UiUFb)XDt!(#%J@{w)_=ddfyeRi(n|SbT=snsi^FH z6f~mDE5ggsv+wEQpV%mqZb(Vl#Yqy|7O4~cJ_#dYSPAnNBAoG$MTHGUMuC35e!P0@ zsk;Z?ZCn>gkRlBt_P65rAr>!KG+{sgv2@y;jq20eYV^d1cQg^xd9vz+LJ<;ENsw8fIpZ!u&-_D+z^vH!uaioz)4GEa<{`kJK$KQCTU1xA1n3|*wm3lq@+;H4e@DRP*c*5~oV4n#?YJiW8R`xzSvZp-L3K^&Bq8{E8?S<~1$nun*pU6!4qjvi5>sxUq zXXYI#7Jc!;Kuz7N9CN~gineqLuZS>407#TPGKeb#|KuAA%S&Jq7iupr!yO!7inHSm zFXIXQyHo6}d=brtnt2>=SBrWhraAXsGg|m2Oax-IT+ z#N5+WgQx!fRz+!4c}hZs|Mctj4xbjYMba)Y?IUfoGyO|zr8G$H=i3h@b&mBO`Z-^$ z(H~WFOAIqFrV3tlke$*5qrw(T)*rSD+b4QlJ_+2$$-i)PCnxzm2=3 zf$M-E-WZZzPx=XzjGnRNpu8>gibv-M(YA==&Xz22w7xA3fn_0Q*dViT!tcGz-|v!* z`2PeF2<`V@w^((suLX;M{KwS*avtq{SgY>}Z2|yN$W;rt9Pzh@1_2n@y=FVdF^kqb z7__FL{Fu*<&#?3wH+SbkPb~oG?Nj@u#cxmEl5p#->K%Yaclpvf5+Xrz5N@9$jWcB{L%7Ox2u0$o93c<_KqwGOK`f>@0!ez7h|Oa3Xk*#g(^OQD zcjoGcBNr1QpXDZ|N<Tioy85--#H0IzY}tkXcthzJMk!D!t!9A$Qi-^Tgeogvns#x< z&|SKdLnpbGn>R02h_V{cj2m-0_B*WEZPwN!XHM)|KEx$za+{$C<4dm-rK}p9nnAnw z{NZ@_&+cw^R<%8cU2inApDD1_N?$2eX{d@?qiQ99;L++i7Ys+t?pVclFRNEQC7=4j zfq~F3Pm&Nmdvj{rKb3ydezkGM{bv8Wdf4A2dXeAK2j%bW*9h8n^n}c@1KSq%*Eukt zN&j7O;%{I7?=g2Skatoty{T5V7cAohu10+xSnU|Sc)6bF( zGNR!&Y?RCD$uB$tds+_k_D^UDyeUsXgp2{|9yzSi{h2`hmnj5e~ZP=MWtAh0Og52x^ zDM$pF85!AHTIva<3i)tlps|9}QyjN{%8F-BOP}r@SBnDxt=qP$k>c2U%F3}_S2ip; z;gugI$FlqKt6k>A$Gl1B+d5b>ZVcKB+UDA&E>4v-RK=}Pl@b5|GH)6GUAMG%H;nwKi=euyf?E!q3HCrf^ zN~9Ek&0>1G8F{)Ha5+RMk}?>?+DwC|#yWp9_SE%MHit9ByGBhbP1&R6a1nYg=fS zY5KhAL)T6EOxG`N?9}(EA}}c&odqdznV@N;A%ESVnU}_Sk3a4*b>sOU??x6pM)vt$ zXU``ns2_gELO(N_d3%1R_DkM+Oh2=KR%@e@u*=k`Ra+OXJWmjUsTu%)H0#~_EU4jX z!L43_Eb~5l?=;Ji001zxtc~=ZDkz_wd+t$!^!@)j*!-`g*cB};SJ=&Z_;6~eLi82K zSYg7`51`+vp&6$rr0BY~vWDYPad{x0ohvy^N!rt!Px7oAHMFelY6bwpSCNl0Sv4Ei zD3u{AZ77AUp>hebMoqo8@kDyPc|JB3KU7C_JBQr6mm>v`Bpn^x<3P{woxd3~0T>#V zMtYB{Q9UJ9Vro`zU?7A50E997wmjD9vdlwAX>w7kN7q{F0HEjfSICglotF(>)Gcyh zBMpV0VHvr)8p8fpNkV{cd@6pI)Rs~JN(iZK%~xZK_MLgNa>t96VJ}zic(ptJM3zs!ux+}vE*`=o>rv4n{6?Lk$r&6>3| z&VBqqU{>4F(b3V-(ZL{g)5yRjcX9y$q{(L{k36h5>CC0A9kaF!TXHX_%*XRz9l4_4 ztCie$(6`&S-OrZYWEICAUUj~}uvv2pj{Fzbgvfj8{C3kO_ikdrV*m&fAIAvrt}OZ` zFBC7<2Q7KoY)#}pf0oT1dCoq~cps1Kdz?c70K{>pc02$VpJw`uY8J>bw6EtTQ?I5T zOJVse-41Kdohf!?QF9I$_uF_pV*4N~PMJa!SA=8gYze7XBVHB#TOi`ZD<@xriL-^e zs)s2~I2_czbvQ$(COWVfD z#l^+NrEVQd4VH$5ql=4+i;IhsjSj1N)l>4R>J1EpkSsYrwEMM&*MJ6Es^-FaUW-D9 wn#8Oa{MVgq#hHrm!?jz6Y&9?vMtNMp9ZpN>aK@y1PSKHr?IbXZd^I?>pDI zPW*AW1UJuSZ`QMB&CEUb+(W3MyaXyT0Wt&vL6wpeRfa%bkb%b;FJZygD0A9>|G_vb zONcL8L^5Rlh(F(%f{h`|#SAk6b;D zVbw)3VxmwhyT3_?>Y2#Nvj6;>wQG&}A#{L=isc(T4ifdnPiua3>3#5()=pBcVmV`FZYKWp;x@*0ir?r+V_ z_1vT6P8aY_#LD)cn?<8_VA%f(j1VKQZf)gZC~GO%9j|C=DJ|JSlai7mA|ejw>zW$e z7-;DYJ1g-PIz-4`zl4MRN>n0oWVqU2^6#+_+3RTB4MXz(c|wQ`alfs1c?|E3aLSJ# zKfbSIUN7lfb|0wd=-hYjY4ev$=nG9{rQh3y7v1!{VSoK{!_YN-+cVKI|90i^n#1dK zv(a@wLo-T+O5sl7OavA36#{-BxFJ`d-dy zXMXkr`_yeehKa3`l$1EXN4>|FdT|L}-KJhnMHmDq6~XyK$yJPWZn1hRAu*2omMral zqaR~&)mBenc+c8#>pZ*Nr<*9^`Q)Dye@;$TyD%`;-@WVI-q_G>a56i~3EgweNee2Q z80S=q!Pwl~tnPgBX>Dj|fGFzfg4_NjL+UHI+=7I}mZxA}(^V92($)8H+IL)1%1%j1 z$wlp8D0#BL{o8)2Sqf2HO#DZD{KOl%)RVAus(cxk!=y&jJx;u0kG+1=s+*g|7>xDx zb+@5SCw}A#?N&W_{H*M^GSbqJ%$ytw9$IA$EaOt$t#maVcFX1!V3z=dD`7aN3aDo7 zr(3sW-+V=Cj^~rE3A3Ty_8Oa+2vSnVjh)JG-}=ireR@O%y!SS0ZRgX7(rUZAE&Ipg zH*S{u+7_#K!*e9%v3p|KDsOu-W~gB-w$6+(adKjn z`p&!ddC;`#BO-bg)xhBJLJO}?Z-j@#py<)!< zliY7vA*l)qq+AY}B;If$9nmZ-kP1qw-p)>A30+-i1N)4u;FsqXH;pn`erJxitY?!o zHaqQ^D~3Ezw-*<}0f_rnPL0@qq6%g5e4Hzb@<)GtM0|XF;lusq+tB8oh7caY%xt@G zfHvLQTF=)2gf~lpuf}mv37F0@zup<<_sMpL?;E-vLZ|!sELQ#DzX}VNm6f@yEP3C* z&CVJg9?p|b$rFft*c(pPYjjEGv4sYq;IVJ)NV9t1x!Bn3S5z>^OXsF}dNf*I9hh@+ zPA@db0V~L0d3X*5iCAA)4)lbJPxCl70NCl(PuT8mm%nz{$Vr)1y@r?M?zf8%*-q}n%Kt1rnorj6}hQl ze@{3b%!;yj@08Ufqh2E%WSc1!9qmnlM8;~Dgr>GOtkB)mghAO;M_}HE2$&Y%7b4FAI3X!3t~s zJt--Xec>tbe$VDlW(OXVZVta5wCPY3Ya*9{fL(t>_{C+11h09kUvs8sMV@@xm9)#$ z_WleDd1Pc{+mpx6-Q_-KnL&O*ZJa+ppT`To$VfRev!LMDdQyD+{FkPBDgi0UF_4wR z(mzk?a<4WvUN*Ygq}_6UpiFi!PbJ_|to@WM=gpsBLFC9gA=3hCYHI50>X1Lh8cba( zg>xasa;}$qYJ`M@5N1x!Hpg`y8zN6nPY4L@7st7bHLhmAgoT7w?p*gboNh1oXJ<>7 zU$gk=Iy*ZbO&1&Z+{Tl5TOK1rXz6Gdnm$jPgt+d{w$)j0#!?-Sk!kM%MoT#euL?CcB{_F>l(3k&O`M@aA{Y6+9C@3X>e znG!WN2x}STI?Hxg#v}5HwU&Rr#2}(hA)+1xykrl!e0_iY{_f`HKta}2M4jGXMsfM| zn>RJC^Pex1#KeLiidtH`Yin8Lq8ga5W-X@Mh1_i!&>*+Be24bQjbE5L()LJG;{7=`ZW3O;ByGL2O53 zEtsF?KU_jrXfaAK!OKo>Z|Hq``>>Rrp5c3?6-~mwYXJKw_w56(9yCjM zU5tcXk(9jx{q6UFX>nm;VR`w{gukW9$%)C=+p216sBd_tCMTW8(r-ejGOmvp=;-(z z44?n}`bFU6LOHHrS>Q6u_p1|O)AsK3RY|hGcgxhf>)pxi8uxSUZU+12+q_^RJ*f*e*P_3JVM#pGOGCxBwSrW6 z=HqWu5)D3|oyW0!1<^G>AEm1^b#gK&!%Ml`WFx*%HK|u~_pmgHYh0MVH-W+C5V+%P zsgA{)H@iFQ*@p4IJzO6PRm6RK^l%xfLPHB#{%1!m2B!))aW+wwyiB@JFhqX+X;-}% z9V}GIzqz=!x=+LB`Qc-V4xy6!NzaNolFVORo#Qevk(*|TQ=(O|)$`vB41Qx|S^1Z^EbE`xqJr7Ery|Y}Ip~Ui?>P=LmlNDh|`qUMict8L%XS@G2U_ytesinSQJ5Wfa_6%grcr`seZO@?VaPp^o$CsNp zD=%-WGzbM`&K;V>+fILk$Za3+J|_)uEeCH-Ut=QGde-e0D8*VxZfmg_@cTR*H#RmB z^VaS!{|)~mP8)x;oPkfkb3l_ADiqLr&SRM=@Qs;h!;rrV4xw?Ou?HNOUhvYoWv#RQ zUmvmF%NCRu>og#z*-onnwt&oxf;XxkgsIuh8&g|C(0mB#{=eqMCdyp@fYq+7e?_li`qX&GOX1vhdMU%Wmpz9 z8FkoO8XS0hML01fitiLse;mPuubI@baIsm`u@pNS6k@U1NZ3-!rZ$0yt3ol@VzJe- zVOcK<)swNs27cs3Hw}a+$zw{%$jL zoFNyJzRB!9zc(v&-1 z?*NmeTqOGgNC@fHmlVQN9wV+#d&g5xI}$o?YDU7$1oe2mTcD!-p(oB>Ze9w!Y#k;= zHxs`t(1U^*e^EoePtR;UoOGoHAhMw4&u$Dn;xXZB0=)8c+(w$h3J>W-C)yz)Mukkz z&Am79_0~40vg9tGo10^b_8Ax&+V37v;fji*;I`iQ*4*5@E;aB1;nhxoM=i$;L{U%W z-cm+SN$GT4f>eL7AL1t*fM9>KhC)YI+&9~_1Ip%*E*1`ssIV~oI-eFv3Xje--CSi` z&9}W>(`Es5q<6sjx4PmiGC6W^;eXpO*cd{@m(P` z%cOFL(dvicciZzyjOtmro=&_L^%6&Vp=L$1bp~2oMK(vhs{^EHd)wAmZSUMv;VzSC z1#H&Ew*=0In1a;RRajZ6G6csyaE#vF+3-C4{Xw&eh!#l7CDfz^aWJ~v%dD~aYHRJ# z?gztW-uyEqrO85p57OOtJUTLx#j7I{xE? z4Ca7|FO80?++kYNZFwutd49%~*VQicy}=3klCSUi7U|Y-T4I{><+O&y(cjj`7BxCv z^7s7w{H$+bQGfn(itaX6Qvae>v$o%fArggTP3 za6w_p1qFTE)GlbRUf8HSy~pB<+Ef*wqR`XgZE`h7d5)i_(bI*!P<5h^B0hexH+q)x zYF$B~vbuVq!sii`_icYGIwmI0z_s0Km9zf*a$}!|%Em^I-72&3@$%-g!N3nTv$(jp zV6%K+<87?18x2=QAY6`X8*%p9644|ueoF5ov^6zlGgz`4^FF&hq|5h*hDC7s3K0M2 z?zxCcI0QrczJ?*3$)@Xy#p-I8(I1Q$1iOHpiJhu(NyJj7to|>Z++t z&xhmP-rjm#>~Z@n)DI8K@+{2sLT7sKRyqv)VPDLYX-zIHl#tj-LS^2(2|z?8TA6&_ z7{G#BO&=?y@xVj$^&fYle|`K2vvOkKyQ@H%ICOou$je9n>7m|HB8tdJJ!6;4emFzW zZsBicJ4A zfi$O{NaKc5?mpFTGB`hEZ%=YFbI|p2dZ*vcHh1$dWr>OR$LD+{oTou9O4;C*#~a08 z2tvX><(48vgY)}~b=`Rf-STGh@9QvDz=pKrlZI?8&_cLkbUyU<3G4m%yph;^7+YQ| z&VlJ5Z%~fl*XB&Ce^oh~tt_k-o-FAsqdRzMz4bI3QT1c`QBvKB?nm>BZn zayNAJS^K}qY!-t&`%1|PcibA|2i^<-U z6$^{tQAGG;LZRT{?vKd~-`296oQ-UB!Kw23$9plz%I0+9lck9b3Z$o}=T7Ai+Tc78 z>-P5T+up$FWL}HUpAK*@?Il{+t?#dhv-LfYAW@{xDYv{%Qw1SZ8%4#w4~}e*2qNym z?;_*Ig0~y%ff>H?l7H{#w)d~7C`zqFqQwzYCW?j4l(e8L3(Ltt9-IgyBsLX~#qQzzB&me` zs7eM;0S{i+?v*2`h@Q^*Nlql+?1@!@Y61xdZhB|{ACi4hCO*NYz=yWfqm50xQ*GVM zdp;dV_Fjh#29nyW-ty@aI#E~Fi?oEJ0X>0Qi5tkh?Rym5s6CH0?P(h$^p;6Q-m{&j zE2QnP?Pv!<_tLwx#HNhF;wNh8`pt9^{JW;T3_^1=qstiHG*q8PdO#l@15a51R*#Gb zf8lpDK5kEk?UK4I5sjwbr0zM-8y+<0wXk^Vc?4+4X$=D^VnH;>_1XD!oA>$%CpXb( zFzWtTs+3;iC#}ATQQwbb*hNj!dp6B)}V~Bovc~p<60+b)%Ayl$S?d#{W zCHiUg_RDKM_H4^hz{nF5!0w5)wu?Vq_^igWdZhZ|Aco*d5*Nt$UINSD`MqkZ{h4yk z9L4ItjZkff=FLne=T@7Nwz@psr*8rTV)%StPIiAx0k&AL)rE$E!S>Tl(%-+OO5@{q z(=!|;DTKeR{VYbHHTN)-*pddt$e3bM8>#WynHP$G+P%(p#5Xpe)g$~T`1aEz;5f>CMSI~ z&z6nxgYt5jEpIMDeaZ{J?4XKz^&&bOf;KzcMklL!=lr8y)N2+KlAlm+S8J$-!FW?u z^Rmaj-waEs+3s#p0&d-SHs|>*zzC4`N*WdXWtp@L-zOSg-ubC1;L6t^#SbU5C89;o zSFQ)3FOjmE_D8emboMpVCk{=kG}PCxaG^om-QA(Am-#i-RatsGxyprYdwP0{XJ=)A zQvvlS4kSmJrlJK_cRgvLWLOq*a%r1(LdU?M_B=B+g$)rA5s{UZWz-w&9~*1)x{ZyA z8E^mk;*!h#5H}3>eqiszxqk6-bL;J0ioJLg5hzii7e|ZtJL4uG_3B;U zT7ayw>~r5%uw(gXz0X;~_!uOzT5UDi`f!EkyoS?YHOi^7Ly8suaqo>AHjBs>@6fm#k?I7^2&3 ztqYp1wUZ=Jx=tKj^)^=Jb-0$trRy|QQE^`1BVx4nRZwD^L36`He>)dra1p)p9LXIH zx0!+Sy`$m#dnLbYiBeu%tkY(f78KMIlik-FiMm|j<1H#m(So|~`+Sc8skNJDd|h$S zOIPovK#d9G7abjaRd+W@-~*lehVc%Vg7Q6OOM_v@!)-aBRbB`&p`+jFfR07t5Fj%( z>D3jcTRg814i1VNW>ZsBHSf?9WfX!@2{{h>W8RTAKa&W*{`KqE#iuxu3%oE~LIQ%H zo(#vs$x{aCk9YUSZQf_6eeWcqSVc+o*uvL)BT-(yJlUJiudS`stEoYi$!Ps$@C+~| zz*vzak4}1ehv_#rK`6_{(^y~$>7G1|h%$$p9BHS9%&)o}h-?yKu8ZS?)CN0g&D7or zE4ObN^O5wf*GBE#IU7ADkV!^1gvhfE&L27Xw1~=kJ-hi#apLW^JCNSDSoN4xUny0J zlPoUVt*_3%Yd(M&1|}|E`);=_EbIH`6~FZ$8KrG=XeyI0DZrv*TqxsBP`N$2A(0J~ z>pQ|#mEs_6<6N3mQkc1W^V~-&Lmk!%@q3!L7)?bX^<7X_r?UUlTx**$yI)@Xo`&Bu zL6x>C0v|?ue(8he_3ifMoizSZ_M{Pratk z!~$OUkl^58Yu{o)h9TLUsKY&b25nOdi#nsOyVA6H_PJncMCDYDts5Nc+?vK_D1QGIQ zsbG}Ay}HiZ_P4RApbi9o)r>9%EBn6Ax$IqZKzZ`ct%Uhp`?Q6>fIPp$FVjO&1(N(y z|A!{6SNhI*QboGFg>~sAyu!=w=d!xGPXvNbb*o)+si}9PDSbTN@aXoQv#(>*(puc? z{p;$k59XX9hNGzsk9Y3Jiz(mJ(oi9!UN! zokuIwzQMsg7iqxLGxhb_-Cq9rm8ef(Yi|DeTzntv#r}-FgEQ#G_z?d_Pup6L7EFHb zCA`PN!ejEVS?iV}Gt}qlb{o{m?q9y}DU=Vo6Cw5qqVnZo&7)EPTvwmw$osjQAJfXNOpgLn zN=T@^vMpNhquNPCQRKg-X#8N9lP6-|VA$Dbliu!bQ&ZDV%dLweEjCI<^H`6>K5FtI zYs=Iz_7BBZ9)(`j(E|yy#GbsTa`0RbMfA4SH+_LF4?IYYhpi8F5nF<_)1vo;a-^nj z*S^MD`rd`*WC)6q@rWooFt@B-F8Y?Oy#I~c(_Vi92$}_$E6x`!7y$?$z zbyy0&vM#=Sxgf-xR}1APxDXVbrT;QCl*x%a{QE`kPKpDu7p z91vH42s1X7KI`iK83DVyH=r)eFN%z#%26ZW609UN9=)%Gy>h?=n(qgt^~L#`#7%E+ zPZE23vLhreFa}l8-BnLcE^rPFcMY(-em+Lv%^=>D<06tWT!+hihyLStcA5js`dM}3 ze&{yl7ZoTyUD6YJI@_sX!SFOwdsl5h@B^=Kph@e?BsSk^4G$o{WQAepwaK+fMgPmG z@oFAsQ54j)P3be*-g;FxBkqS~@x{HdIrLRDJa za86q&9Ar3>92*z6SMUpYX4(B{hvd$80T0E*$ubYms{?mchR6?0m6{KL-WI@AdhSJg z=8n!0RbYdn?j9{R1qB6-8JmG7{)S?`|aISbbHPk*_<08t~d9GJDSCGfO#m39A zOyPhc8|&oaMNClCOwUf2>ehrkN#@hiFz}}TIDqzCUe4;9$i>IUuUaP%0Yo1PoSqO10O;r~@_Syf zb8x7m(=#z~o}`gq_;&BcRk<#@c^C)87}g8i8EsS->pME0X5Xnz#%s8{H-HxCJB-VN zvxoTp@4*zf;SBWjJWxwOb*`OuXf?VZos;wOHdR-1>|a>Wo9El&|fSefY6 zx^X5&rj$6XDz@{08n%?MV;XC@E&`nW7khy;L19a~jBN+NCAZ*85sqfHu^)c-fL@X6A=@;^XUUT4Va3g>w~A$KGLpW)NEe{ zm&N17rrGZ9?uiLZ$kpMz1&FI=W@?Ix4mT&OIXO9issx?jyOy?P-{+Q?7$p%A|Ip9@ z(9Fh1iV%Q@het#w;R7vgXXoDm0WTgo8Yd_{_ zc&P;tUeep6{Yo0qYHD4HSo>N z%R`3q@9Y!-j428VN*7AcH)xX^ldU+UAAA6oc04 z>zmW{_wuQ)Lq)O0h`AidC@Fiu>N+}vTgJ0UA#kw2!f`AAc6V2AuGURfIo+OZf_*w& z@6*xLjRQP3mYf z{x z^;>-Xc@St|z+Sq#x&k|2TwVE`k8lFg3YZ_#J~(LI6NW?lvz3;C!R!e|UtL{%nUvd! zf`YQ#yAdD=Q1UE$G7*%4A*^mX!&(?EI-P>cVBzEl{K$%@9O~ z$jQmIJ)Fsa6N1O2zff+_wy|N#GXT!a;lTkegElr1k=I5)hATJ0o|O$Ogp!gHREtb4 z7ZVq|lb8LfvvWN?V)MFt?$fig&rkQqFA&jE*(^pQ2{{4cAbtP-eHThDqxHqkI5=w* zQfJ_ti;0P4OGKNil~+|&RaRD3R5;9(XqlUvTUl8V;EY)3g3CH}cJPRZW2xNd-AE&x zloflu+F@vK@*5hs$;mqw7avROmi8v|$HoMoWy>?HIZ0;B3)3~Oj~4g$_I4=p6*7Q0 zs-BT|r(DtA-u|$5-0o;;X=!h3!cI~qfgbS1raXFJ5$5JwK!&tEoa_u%2RsLmg`?^G zyxiQ$BZU`g-?z1!>><`S~4i?EptS>BTgud6q#gL zrjW3RQO%lpWp$$xO+u_O%^W=?A*E?{Abp|6VsU~7XEA}cRX z5%s3DviE*G&mB>TuO0jiA`!R80l1;HQ+FgJq{imry}crz$7Y~Yvhfl-?kFlL8g2O5 zWIgS<>@{*mP!EM_195}-9Bdb}iHS+5s7P!M2o4R-+YgVA_m}$?#>T9`(1hsvfqjPk zN5zeeJTa1@$6Qu+c3VyjZ)09UKv;^4jb&wHMym%_qA zBO@aa&RAJkkWf)ud>(lqV2|M7;4b!O6(}$-kC&fo5Oqefva?&7oA>ti2nYyvEKsI4 z3+(U4X96h(!otFku&B7Wxc)%*VhhXIiW{cRrDbGLUcEY)DNRXE)^c#Dh>S$d7~^bK z+{^m(=@W=T^67l;tDQkRJC=d0H+E73}o}4(avHk7{KwNJ1)@jMoiUX`hU3K*< zBCZN>OnQ5Jp={-iE|ZL6Ara0;3*1ah<$it;uqOrv2B6M@CQjJ#m1IqwSJl;(mzN{@ z&DYtdBqecib5}xtEh3xQ5*}`qvA|hz=J@-=-svq?kCm#@8n|!b;Njs3WGE<2Z4AT_ z6BFNhwZ_F^1slm`i)9OfhEWOMPZI)G|hgIMJ(!`F`Oy1bc{ z+-rCU=(8F>S3fkl{c9%YDsuy6T&wpT0vv+%T@KgL!NJ2!mKb1Ot>2de0};`i+l9`l zdOklrf}$T3kvy<1*qw$e7iv;cNWbHo>g$t|Ba=XbrtdVsZ96!m>d6tKC0i5y#r5@?i^rzsmak}j)IwWZTY+u#sx2|}m`e8I6A}>M z;QpL~1G~HYB`?cWYoMnmD7imJqfo&6nK?0^q56H_2ArGa?NQ4 z2gnFSL`0T|bRc2S(n=>1LrWEB{yFqs1xF6ZOz7z7RQ^p(y!-|-%ac(|Y(3vT*S~xH z&7!vhbEt5i@~js(H&pU(k9@%onx7jvh2Lcq@x@_-RPck8h{z<1s)T7`Vz})7Sg8@c zdKm`W&c&t5QAE3^$`v$VW@?pPl_|et9EzpA&4%xTmY`f%QdVaEXx)WpFp>RGd&rxo zkn*#_E#oTc4aCyQ$_N!$#L?At`otuuLytDTOt&F+sWdC{D>}Nmsw%Vm^mMVtZv3F_ zeC}aG4rtZJ6WVv)#SJ7O#RHm}_3Q9LJBXsxVSDp+$GemH zfWwe_=CEIEjDORsSah_;n9SRlKfH04DmOPb`1%EauP+W) zrpE4zB0j&q9vdF^y4_54Ed-uLfQc#czQOyR!`ADcK?*g>^&{p*eTPacc3HV>Xn3rN z@+5%lRaI4$i-%_kcwW>0wuS={Xs9;==@+PI8ULl{65H&>g=r&ONdUcF;>TOEZDz}4 z;h+QAHeZ)qg8s)K@4Mdp4N#jFWv7wyl+ia~Bag>`D873U7LEmhg9yVQ34L#0T~jx2 z?#0a-@GDl5?N`eQ^P^%>nk;BkCR3uNiOrPsFS1czD&HS&I4mDc`nPF-g8|+Tl#4uj z_@>Fr6goQdOl?r0jy%Uf?)k{}30qA^=X}vErB_1K^1X(^+o`{PVq=Usxw%rg6Q0*c z-p`NMAPW$uwZi`6r-}N&@qE79F9%PJYu()4<>luOnO1FWZGpQPe-0=wD+6@c3^399 z-kt{tG@+tS_g9A(7Z-p2C_;9CjX?12Ha-O$8HlSpZ}5I8{#{t0#|;N+ByBA%spp&c z#6%!DJ#;6tm7B7F;{UD~%yG>#u}<0t{49a{<-y!J0FcI&Hz2PLFGP?BWx1`eWJ$*U zD{~M~3D|+>`uqF;{7ImGiH$5KCpU6?zMYbi0>r^_@$q83>~}KVH!#DW62w!CKK!$w zDUtXA-~_LZm+ehVK%u8eh;H*+b!-R4zeC`vp%r@$C_{3U2UZ=} zp|!zGfcq79ldXmU+GIX9G<7|cLW)9Mq-1XuFN)HqwaA2G_=!O(%H9rY2qrV8A1oQo z&f;`IcuPgCl-jZgd-dxJ0}u3s-f0R-I>MKXh}s*fkx32}YpW0n7$HMcV>L6B@2Y(q zhA{0Kgq&cjgV2asO;0lSXV0$=Wj@te`uO+&box(9t)s_CXrn`DBY}7y^G@6lzt*^? zsf0}vDib)IB;fOK1BF6IQaAy44h#utYG?p3WYWTfz~?Hyt<4u8QNT{u*)0Z&kTW!Z zGs8z>KU=0ZUu#=jSeVRig;^R=Q&Uq5C!PTyBREgsjSL!HtU3dcs<%KK%%TR}sY5L- zEes5di{k}A#LB1f)YvZz+_|$rp#Y#gKb%JgJE+S^OG{U~ZT|kRL5njph2E6|wgp)H z`C?LmgM$Nfoi8>3z1R5p@MmKINTg+YO;>xyf=M8us z5QmPV@9#3j+%b88+VM(CuLQw@0VFv#hZUh$UA6YhK7c?J@V@(VTg5?gXkHkD7qt$M z8K^xjR1z8w{@4Xo)uKK&un`9)hfP{aUUa1Zur>S&w>UseUq6b79(405I*?J0SV%t~ zEhNXp#Qg9Q(KrCV8Khd910v~LiKowAyO&MIE5;BA1w1~N=BfS}8_JPM=js|40#~pR zz5^G&n6S0FiBBkY9}6R*O3V*Ukv*r#K)#X!aq@(?#WZ-%u#Et(;iIKQ^=T}bzPT3O z)bRDp%GLC~b;pJU(57(zlPL^jggYbL-y~!}PzpAJ-sh(K_yD0A9$unQDQXac$ZOG0 zpXeXkSJ-S30cpbg{r{bdg28%vd1WXSud2cZgAIR?NBzprKa93#DXwN_E0ttaWd@nyr*93VHJK&S zOCzC^^pt88R4bP5;r-bneDYInp9M|c0ky88qT=?%;O1F%H9M$PpiLfmhkl?uSBO9( zoos&#+Xa*mv9MvVvDPgeeu^=kan_6ruVt`lkzYgv7;%Xk0l@I~T~rK<2K8Da53(6@ zmR5;iGKa z{L4UCw8U_5#vCJ}UqrtkBI<&$VXZAKMlf!E82a%;RQ`K+0QU!)H#-*N`6(E}%0ZjR zLCCnWj<~Ct8!HT~gR0%Dj((Ynaljh?bSvx=ZxCe|6XPfbHk}%D8AG}%*?UVz+=Y~> z_+D+VR`Mire^#(QqM( z*tx2-@zRuu0fdhAB%_@w*px9C-f3{N$4U_F*AVF{dpBoKLYRy`mbFzXuLuPN9hUUh z2)aaYd=ZK;#dny9R(Vk*(7#ZdFGT7Vxc`n8`aRJ(N0C*@CD3d4W@I( zmWZ!!W7z(qrd!+1VcRw=%-|J!odfydvnVF=&Q30SVj$MSY7mCo%Bt7V1v404ODpMA zR*Xmn!>+r}U3bOlYacu#-ntWT>UF2e*QCzm==m?hDEw5F(#v|cU{Cgp-fpbIk}zUB zl+b_4QJtQQ@!hrls4gFno!dV5ihAdSTk{{m`Og!w19DHREM9d%x|m;iHJ#mGG22=x zO6Lapa=s%Zd^&SKvPpEg-nSWDU)zF}ZSUgZa&U+UH{ps}#a{srA;^49DK{4!O0<%( zWDQ&=?yqso=i5S9425F-jPRwtb0jpUkNRghxks1vrjNqXVTe7sQJr6(iydyo{2SDH zNm((Yv`u?NQ)2h=(`5l)UJw(uH|`2FJ+ zkT4e*`V$egUm!LmFrgh-Ra+MQZVK-om+xO+drLyKV$2on=nxUm6+j3U3eF`<#8^;A zD=xlR4BQ*m_J>2QvR3aAE^ITS!IsoXGL7#ETMOe)TQ!$OP;GYy-(vllB)@F;?wvRa zwtZv*X%cQQAmp)tnVu4Me_boW@T^sN>l@Ehbb;5r$}a-1zd<#X%&$qX?}+V(5kf#} z=v2~X_WAS352erR2s+C}>MKI0^<*2yL`2N5nA@2je%bEgLxNzWM2_vKWVY+yym9oX zCpf=JQWkrI!W|zusN>fC;;}R@a4s2gJ2(1PP;iLZKt@BwKj-i4i*ef3-!dORcKI@{ z_Eh4mX;pF;*-V}Mu{=MRsC+{&-PesF^)&?N0~0j4tEYU?rjmW@qH1;W7-eHksErn} z4+gQF`OaiM2qp=CmArN9(Ifff7GDe&vG0aYwvg-vg64%IZhex|m$#$cp^V|?ZpS95 zRL#Ck0ym?)_6GlCd>0qhn?nf`U)_!t+#hS)KZd-D3X71Gm(P3g_~?aBDnLXcU=CEt zn4y74QyCNthYJT&dSk}#|eUSwht2!I#q6c4B_eP z{W)Zce{QRrI`_9S3i6s@Pgi#s-mg>S=o^N-Y~aTbSrHN4t+6^=E349Fow}PiD(;KJ zeFB0#uZ?e&wFNm8*(ChB{Cv9E*~Ddf>x2bk9l~ET#0%{tE zS6mkcuedblQN>{jVWIY&;9zD-4i3mOoBSxnL5Bnoa8qKQ5Jl844u|@--CNI9Z7zF1 zr-}Uf`_P3hlgN<&Vzx|+&Bv=7G|GWqsBP&62kZ8tFb<$LHzyY;CRR4NghuSTFX{8= z$vmdkhrNL7<;hX+E(8<>1u1e^9`?GB19qbgM38}iho61N?d9wA2l8+D0IFMH) z^!(o1aFD{ntO{lttkvVTNK7ocMi=td+g^V(t;$Z1HBm{r%b2 z+s^KEV_+?w&K3;yqyequ@nSq3&i+FH3B;aAD=HfckCHSAIDE2QEj9BB&{ll`X z#YS2-awfRi-i&u=xkLAu*S}|Ai;MO?g@yvw>n{eL1f4=080W*>h^kLxO+NV35g;r3 z40#rO=Hc_|{$~Gl9r=Vj^8YZD<$8%m%(HV$dNS1UQI|0>X1S~ss+OWgUkvXOFGhy_ zP%wStb{H{_+4KSI-{+x(e`eqPE<5v7Ox&;CAUpTr)2Ozx`g)xWyB=}(iF#@AT;}Rg zC7RnEuRw9B=6vZ>?}H>kyDu-RTjO?XJsNH=0#Z`A1A`3t+vzC8GrIO&5g)?aI=f^;h&rcTv~Ga^__rU+vzmxI}$0IxUrcSM98w>V5)Ei z!{Tp6Er!L@1C^WGbSk%;#b|XNk4H6_bg2x2=eE~(_U4z+QI-70_d(6&wu+3lX!GWj z^#zV%-`Lo*mxqV^=c^=^)qC^@5yarYz*Js0T*$;&J~{zczYta>K|;;U1+(WU5gQxZ z485kBcR|!>zJ!=KH#fIJ21@`EpWD?inArj(TfSV1&(p&#Vofr~my_4;-engQ>@esU zUlv~g?b^)DOpKBefcL8=eV~phDt4oJmu;UR0Q;4U{?iwA^}MgO)*80zl_j`;)Dr$P z@@2j8!FlG>zgpGL53pk{?Ag9jA*NMV28Tj3gVSoCXJV@e+Vrw__sD|lto23^P~DnE2_wQPH!cDztwo^eQedd#h31cCzhf&?{6c7adAV7znV5@VvOB#i`lZ&ydsi#!N2 zGPdges0;Lk@dFt$sP15xA!rD?ui)?jAc)_i}%a?iUG33ru@&Z(dcE$j5JG6zS>d9#v(9 z9V5e%kdrI*3WmadST`=zjIUjVL&7E7z+3V}7K|OM;F@RIoFvVDt@kuSBQq3Fw#;>D@zy zHtm)%BnZjL$Q&-;X8?M9soBxQue|&#)r6Vmq4s0|;55q0HPzJetFk&A4li6(U(em0zX+f>41J-#WaHMXrIJ|s)CgeZ*lKX8c$;F%$ybTMOg1#)qBqx#=#)>2mx;82r(QSBwF z*zkwP8?HAThQUCDBYN#5)DIp+a2XE5qcCcow)>-a5$((@iV6i_##OI~&Mj{F4yE$iI$te>xh?B8ZV>bQ`TMsXa8*FBaB+UMb@~P2r(~j0jg6cy z-Sj06h^<__yvr@lh~WGpPx%sqmKP-R*RPI_N>_zojW(ZQI~?5T{4;W!bq|@v-xlQ& zGKp-z%S_Gnr1+g@gmh|(If^yaQFdriiYe)6X(2-Nxaj!Inb~h1WiE!MD!6T)r_oGH zb@j|F7-))5=Rf=`Lo@zTJTv|2kHfWQ2=60t#_go|Wi4DeBN=iUe?(t(tur-)N78U&UYeKJSI4rz@*X?JG9EDRM05-kid{lY1 z`JLa%tBN&lm1)4h(A>jqZOKINtC**YI7IZEmj9&%2)zsBhIIENQN za+3HtQBd?P#v@ApP(?{io{Y%0su@0?X}^8jBbeb#sJFMDR}fSD^VHo9ng}ltukLT} zSlA8|8OTAVq+(!rmAgb<+}*Q6&?P7DNZn@WxUpkLzh5k`M;3R zOx2F@Ir=gnybYSakW+Kj|1+kh*|3A$;A3DB5gZO{bVF5a~v$K==)#TE4pb@_C>p?_CieGR0t#f0NY<^{ezZq~k z5%jZlF(Twf3)#Is_swi)k_-&H43Y}Dgp?vINgkY~qHs3RPi(RnMcsyO68n;JYUP4& z-@m_(rIFCr zoB7`iE~TrNW&+yQ*49hf^(%=1A&{?Msw%FQ`xXl`7Sa5JoA8j?S#4JSzyAovr+JDK zOO6H;{5(bKz5V@ZQvP=4ijI_FNvoR9`fAP3r$sl3fAe2-6h@KB_Q41APpiR zDczFNNOyNiOG-+!FQ4amzxUnWzsJA7eGiAd)*9=+?knb;=Xp%n6l0-*WZK&YzFOJB zBa;aQ)IV?vIy%`{w@Y2pc*AD5^cXw}4{P=$nS5Yw4h=;WZN&)?BHX%peXQ6eYB|mf zALaYr|8iuI09BG0ZTwtQl}-rK+m$pL7`h;mngCsO)^*?JiZ$ggc`@-qSNMNGGTktHKJ8 z`=t(0C6Lo|O$O*y3-gDN>7cV?VN5jO7S~URN3(wJXfruB*%l zgRNx4Ut*_lqSJcr;rp8pW4oncmQ7~BH2CG)^N>1$$4Dj2XZ}k5%x&?va%!N?>EqMd z6qMh_;(mX93hX$G&5q8_-VQqz|5zaHQLzuub1FV%yEwxalD&e0u%h(#=j>KIf?7Q& z8iHcrl#>PlD!dxiUkRJ=!T<}y!LX}}J$6aYARGue6_tgB1u%rb!@}|zos`tqUkNr0 z)ZESQCo*Mw`tbjD^~%9B1=&5R_v2nC<(|vmY6ktjZwjfXOzove6vsw_VAccN=pQEf zt5v?Am5ZmbilRWa(ofLf@<9BU%rZ$xP=~1~=$ZB1ven6ccLWC5)4&NtVYM0BpC*wi zr{WAbVE@2l8w7bvzj{)@+VrGQuf{*%Is>d;6JbO}yij3Jw^2jeudlZazpwh}zPA5e zq1OcM;&7thmX#&w1I^`=qXZpr9ZN`m`24%+pt}a9_-8H$QYI#Q;GuhpaC-*XXW|j( zd&s`^)K@B21!eEh7NZ?4dky>c*6WdHNHd}_RD^zJ-(dkA0NA3y(zLT>dVn|$&N}?J zE8z%iGQ^qK@JJVJ+egg8_FcKuv=kKEz0vr?6<4Dk8fB8*fYwrw|2duCM*Y2_p^OY7 z;U^&NA;9E%L+*Z@u>g#&rW>rq{~60~J93ll|DO;k#!Jy1wCbR^s9om>{0)MS*LoV? zfFA}_LI@#${2Bj=i76}mpj_-cGw7C=M+yuYGX{(jE8 z6m_z_%c_;ZoycSN&b`^(Xhtm0cgAK}sQSei(K-+wN8@cLeP(#?X3zg2=9^M`icIyq z=6R0jXA_eVGnNlG9E_vy4mBkq2q-R$j62XmMkH?C2vn5cb3`dgNEpHE>uYOW2mVJ{ zm9meVE!&oHDJh&Dlim5UAKBR1Us-CZKLcg8f2T->4_0fj6f3m~e6{dvDjr8`JKj2T zMtf_y_y*G(w0$2s$T^=Xoz};(G%?Z9*RP;c#Ci7n`0{KopXz&s9Jx^Dz)T+~v)(CNj>J&@7jQDm+tZG<>gW%6C18(CZLgCeZAj}Ot*^2}*_ ztY5Pg#=|HI&lY$dz1+43r&%q?NXZ2Cn&Dpa4GhZ_67e{XuL=HHmK$}CbAsSsDQTsq zHoNtWeLA&1{K$Yaniac%UdmX%f>37M(A}-6sd*S4CCi&qP>KMZv)=a!7oyp0K5~8f zQZnXsRCxHk=cb0|V55soSy0~Q4w1>@?Ew>IT7@ICrH+IKtzO!j61#|q(-*&<&MUjR zBtKm5_^rKp3HHhsCI`PiLm4cb*M^K!3OqX4nVFG|jU_~WY;$YD=;(5yBBlcaX1a{Y zafXAzNFmc>f*MdA>z$KRh2oI7G+IO?8?Vj2H9vd`N_FR-BHriG&j`O7hg^0?Y+PI< zNGEoeYUo%;Y1j6fA1&T4FK-Ma_Rwi8;)2xJ--G!0`sCjU2y7UXp%S5g<7QYcRq+rl z=gKO2m+dTmin&eo>!pmwBBB7|MoCGD7^#wtFbJ(K=7YIjzo^h{ck!UIcd8$yMp}rm!3CUzM@4qusEUCUF#ZNRS5CsUKVRP`&(Ir0j zbLxZ!Y5L`*R41*S80c`|1}e*rl#Otyf!v9#l*sDHIt>sFuKa%2CqCy z%U|J{>=3Hn|56xbK4$0Yq%!h(>5GB8cG~!o4kM;=o}?_JJ|@c#lU}K^G6XRFl0Wmz z@Hm&WE8G6Rraasmb?N__dT;(SwSfC>{;9!j#X*U{-tX#|%Tur9HV?q-SE=*z%vd}ay{A2yI!2o#We75yS!wW_JLdQF%Db;4+Ib$?ZKWnYIaP6DZrkH>6&w~e^0rOG= z!Ji2fEuj4W7Ikjyl_iKRaG)SD20m>5V+eZ%uUB1E1J$ zc&!4!-7n{9AOzwcVExJ|*JW&|X_&(-dOna+8Mh0ZLbu+t!_q%~bdRNTvRGT&Tzj_# z1qCs7TRVyp5v{4wX&{Dt?~8qXd3j-4B(p-NmngS`ja83+Vo!Ja(xnO$u_p-r#r!)C zmzrG;5f_(B5EJznR~Hr*rle>b#OQ&tdFi7VbpptnxSd2K4{h&`W$6&qg*TzNHrO#P zxgBP|Rkv14;D#=r2kta}zpLR^g)CqbmVZ8AF}s&93kWe-=;%$BO4HX0UATkud6Hw3 zlgc1;ZfV)o9_krJwxx|uYf-LiNKe09RNfhCjv-sMlS&2w%-UJikqkyMj| z9ZIAZI6il_N8>p$s!HnWd+}u3EUz5*lTLTDmR6h8%A%m{<@hF;E1S0!@i%}~B}yz8 z0AKc{=*yu&bO;^LF)>jMbSA5v!fwylUe!qW`H9QatjL#++QP%b_mz~;ZiK2D7}(oe z6w)Z-P$v)W?^~bkK0VZO&@emnU444Gvnu~<9KgvCl+fq-y_Ny8YE3*_J^whlLYmSk z3Q;HGcSEv!zT?tB!2a&RMApn~8|Xjo?;l*qKdM6+2)1`Uf9@^t)F0oapQ$fD88G{) z?$+ykS$?KMJJ;zP4U{TRR_Ad%JWxlY)y66A?k-M9_QPL9$SGon}MRWGS@pxCmi;xY$mt0 ztF4}_eaNxl)SD?I>AV*6<3@0Ba6BKQKE7I1)nz%At!atc9!^X$ADCH5fwtO*NA5Oje`4dhwv{qJuQ}f%` z(8pO^YBk!Ibp=x^dICm)ty01CT9fm)l{y-&uH|M@;Xz?x8S0}YYV0XY_#PfE;UBho zx)Gc;{8K$v7$i|Js6xiFI2($JsM*-$B#o`GfUGegC;rFqt0~z?*<5TUy9CtQ-m;ms z^j*6W*L*dLMb1}Hn}s;3?Sov7Thy?^xw+Urc-Vh5`VO1DR*2K&u05P9MPr4)(M|oByyZ;6g2v17* z5$UWCByvCj;8m!C5~dn8CNLYyV=cVnNEx#AI4P+@vqKsT2K=RG=evZwzR=2@5R2Uy zhGm2L+(3Spl9hbf{BmjxXuR`g=`tZ=%{P9l6DEB+N@4YJ&vl-M#}M+Cge0909Uc-6 z-k51m{jpt{n;);XHs?7Neh-|BLQJcNiyATSVt5jGBbRlxkW{SVRm=Sq-{%ZT70@}JYt5?`+L8sd0HeW;iP9-0# zmJRonbX8>Lo+=qteuG~GUrka6Uq5lWfc6~qR@|oUoG4b-*FE_<3x?6ro+U|UJB~#3 zv2zJ@}#XBw-mJpjbY-@ni0rKO=N;gr;#U?Ak^17~IiVIiSk3iR^{Sv64j zoPVuP)2Kio%EfGqc79U78XFrQKtZssXnUv^HX20gDykzhXZbVVw%z}DLn1J+CB=b$ z)DB6Zl-8CwnVB6Nfv)dvu8@9Zu{-r{_QejU0=ejOL_9*m)+Bm_a__~aJat5AB~~d^ zl;@0ebTAM;udCsuAyz6Xc!;8^s+jj)Do^BFx@h$=a2)cv>Ddi}Lq$M&{#HgNHx0I& zTDzAm6#$snFZbt}g-hd7RyR$EI?4wtX%_|L>Zwny0Y@C^}L(Mk;A zjxvpiesnZDK5H)&1Pyn-q9_~&LQTDnjK3o#!R5P5PMrO4xWIve5^X!${^UsYw)SLZ zh~`bz%0f-As!~LRgkCexwE zh_To+!dj{J%*s}%l$$~OLQUPA5<<++Z~HT$XLtm)ypxs6$ZmH?e@4bnF>G|xq=`K!J1m4BX^^!4|H<$t->gSC1I&YeBHgd?fRX&2QCKCFDn z_-&RzIlG$=%!4gpWcq`F@$kAM;CIdF`Vq%%7yDNk7z01ul|MR7oxx3>rvdHms@HC< znw5*oz3=Ks457TFHbAv^`WIN^+w|)Xt@rEJFVm*)-$@ZC-uCg}bSB zk(5QPL4!*GAWh)Mfr9i8w^$h(#`zpzLx{=vTMgQM(}p8x!2q+DYQ*B>cwa5w0IH_} z$78HDdTlNnb3yTR!&kc=DgyOw0~Psr&Gyw?$rm2)-u2Ym?hMyE{K~cx@@JzdPU`A> z@!GrfsWbrUan1k>;tvHwu2F#t4XMy)Ct%sSlpw-k#HAqr#p^8O_b?NP5D`*4tqqgvQC>;(9iF?8_VR>-3#38yar`LvE;Y{7NI3HW=+g;Z*BZ> zYh2*)c<>oIas1|eK;%cS|265`z76l7#UANb4$F+s3LA{t7aEE5eqHCZ5+x(JSF#VUeRX?No}U4J4x2#D%i zJ+G$c<^WJ(?`UZuI+tZqR8)kJa7jLuN3E3l&sa_sjIE!#uL=mvRpg_S)Rus6Xf`}F z#7oBiu)5NmCkam|;FyH`^lq^hl=H>pGQBr@QT~i%pTBt=!8p@8ASR0~h7TmxeEkZ6 zyy9fJhuP!Rtev#H4QQPmTH)&aEvX&EtP z-R5-JUbH1qRMNUzdQ%h7US8h+4a=KJx9)9#h$)KxTvw+^t7~+XRGagS$&&Okl~RL zBK|>&E|&!yU~Kw6IEV;Y-`EgojofV9SNMwMd;KdXHkQ-D&e&KaBkBBR^fQkYdVbz0 zLoiSqKsrF}FefKKSZz_L{6o23gI&*=nUYcz7s2Q;f3>Np#@sOk@;X*Sf7BvQLC0-4 z5ka0}p|8(vWwDMWm7bH+?WpOpbF+7LZfA>7M_@s*T1!a26d3seXasRE_tMcL^l3{tYpd%}2 zt&9T7cbT5$Gs=MMQ=$D0cmV`_FN!J)3u9IX4~d77_xhg)iBAj`)o)^nRbMn=S`a=V>5w$1mX`O zD>gHoxx|SRq2bzHN+0NadppC;re7 zkm&)Yo>!{*DAR+V00;9!SZUFMPNN<@xvHz;oS=v_KR!VAbRIk}eK2SZ0vX?C&saGzL z*4xKSO^qHRq@Vfvl6HXt`cGsxHsqzHsHmx^c)czhFH^8S^YHv&L8Z;5G$bWOSK-8E z>V6~SHN<~x*ZFY%`jFQm##RlBj!!o!E_;W#@=i`NCP~m+v({Se5(Ibqe=TJH492|T zxK*~-N-=F7JJw9kr*vYtr73G5+MnmU)Gp0u;oxv}aEMr`=^I(m1LjIedox!wbGYd; zDY_zTak{KoIA`X8}@{<~t`t{r&v`Jq_3oZnONbB_udj zP44f(fBSWFPbP`#<>ARLo&6ty*7cl85CPc7Wq<><&Bx11FgW;nZ?E^} z3k0!e^LRfc=HiP6LBqGvR_%_6VkP8|yDwSmeJ!B7u|v7`ZR&&iXcCR<=_w^H z96dvI8s5ia#5XF11Am_#W`3%cirTD9fPqPlk&j!%MXx!s`bt{SfO1v9&?$zW2eP zPI$U0*y^}F_;ovaEk6DK6Qgwe3J+)TU1<5{6pBJM?h09DkUH?l9P*ye`j?lc?YM}74w;O?!%p*^N z+tWjOpd*#_U}_2_6xk{z)2_J%Dx8Qo3RygRk zl>k`aHu@W!6$%gt5JE%zF}K=@{SH@}IY9)+{BsgsOZBVdnk&fgg1fz1y-AgA#QuC$ zKl2y9+X+I(XWshvIt!7ASJTC=DU8YWxx-K0&}))4-hJuW4cVFh6~7sY!ly4&<^U76 zHOclp3$It0qi^bLEi*H7>Yp;e$?@KDaTW1X-s?_lmp@S(;ClmR9q{6zq(F&y52HoJ zKimOn1)3RkrKj`~1T%^quQ-O|KfJ$h1RRsQg&JFs zta|kbqS@|qNh&mTD-$9ZHdC=X<<28@_`+eX<6jK_K%J`D6m&NSU)ShJz zN`kg*YHBJfl`(`EU+}bOlY4uPUOaz|gVSI@nP`^X_ zPwbgE{Si(@Ybzh{Nn;T3F_OD41HTuj0_Uu4-Rn^!nYd?TDL+j)bb^GdHjfA5nF~hpN%} zg-<|L1zqAD%;|ugHa5C^{*Uu>9$1AfBvtS&nRS( zf)?wa&?(yc{+ij|J}a*;#)&IqvoGea!E1jo@0lC=s3+fwO@My3nKq-kU8mfsD{0*b z_(pzy%hSbKM}W2p%xc3|giT4R(L#%)7*aAa-xc2}9O@UV%1Di4dJH7wx7*+7F{ao* zY{vG;eq_P98rs<&bLb7_r})*`hM{qL?I{tP<4ZVnC$wKu*#eQY-1&VE>d$p?Mvri7x0s`c0 z)5F8`paSH`$H&iLJD5}q9F$o+m#o$a{=QJ4I1URjH8Yox%gjhleg^4pjQ>F-wALvz zCiMd4xr_5VPP2Vgtk5YqWL!&7Lc_zW_qjubGXouN!cc2!Yp2O&FhKZbY-`JJ+K&dn zcI;;#Qdz;#QI*WX%=~J9LB+tpuRkuQ!QSG)n4>B2=l1sJ_)OoECN!W*O68<;B_S`BUa@L7bqG#_>IoiEZq{(Ngb4@B0mG_iO@ zur`BqeDp7y#qyLjbA4?+Wi>n}-YN36VE4-SPtI205YqHiD07WFXZReJo|P3DvVQ!w zW{5tfU7+1fq1|b>*Xo&y$_HdB{7&D8FR~whSzBvzbL$GW&xszldV*D}zTQ$xi>&K^ z5@JADga0GK*{F0ZFDk0~`V|@il2nR`Ao*9J)2vRJ2+ouhdJO{Z%kuyfmvQ%-({kRq zK4Z-7cv@N>54il<*=NLGK_Cl76Oog_l(vnXo2SzvKqs^Zw1gSJkzdQ0Y6F<=)!tgF z)1;_jHC_tzYHH=GZ|35y(ShXmGa*FCz#waHV^33g<#~(WlYnsc-$kq8crsE-Kakp; zTCCGXI@n+QT$Fa^*cNmD=HMRcjy;*KoKnmtSbLoQqQtr`L_iJsG?rc=)$ zdlRCWDZjsFXIEus|LP1PWg)QAWe05*sxtYvbsDtYJq9i>^cxUBc?b$}?ftedCVGtD zX=h$tt@?YH`19x6B@6MuEiz6fIS5jw+I1zj=VP`ms{XGgWK*VRr-9u3c)3m|Uy)x{ zRu&3;>R7QfXke7_`Ex9Rz#%C30CL6t;=>pWJcxh*%Wu+r0@z7+$1>h_$R zj@1Y?ED*?+nvtcr74&!Oz@Ma;ZA~st1H(2Wal zB5#za%0T7YU#m~i%;DYDWm$1C*dH-5-{5CTG<)Xz1OI7MlEzWEqJgK z>XWnCxy{#tuj9tQug*v=b|NAt9WGg@t9CCm&mCSWzJ~v=st?Zl|6cW>vt1V&$nr}o z8YP23j7{XDBDp}@g|5&DgSwN$A6*o7c4wb?M=ZC&5`aTwA86DuiC$W4^s@p21Ly^C zsCd%=L;?f9p?WOZ7KVWif~1YjO%NdgDK!_`?&g84*juUaxmpMk*q#2PtVId~0}Tzj zVNjqC{PcU&!hJQ6{Xt!6Bq%3`WP)lOR?x3~d0DquH7yQ}h_JQRWgtV){utEQn2}jI z8_*C#cp^P(Duu{CcKw0;fI<IWlim;iTO`LU^#`d5^rBaUyfroU@w_Tl zw1+vOVSu9nsHuFGiiRMXo4-#ROjeJyj8-gV25b%{5`nhbTJpzn67#O9o{D=IXi!R! z;kEev@jTZ|)P^pn*q@@3@;1r@8|Nm8RBt&Z%{}gaS=l`RCvp4*I zJ;`@)uK6~2oEN;BD!e?NNk{(gwWev1B6b8kZvo$;`FDp~%60tWkW6;A} zX)Y46h6&?4aFTAnzCVXk>dN@$ls-7tw=<_&QLFrCS&1fL zqaOx%+T#pvP{pQ#u|iS6X+}gq05-0N+bK8CRdfB?cb2vk&cEf=#@i5{um6@69DG?8 z>r(^j(J{}SF)YG1{YO3M{3!eDSMZfR`eL&DV=hJ$ZgOVh8&WLNeMe74&kpK$N{-I3 z5MYsZ#&|ssuX&SkF60qzk1@?^cFoH=1Jn5%D7%eKpL{{jk?xcD(Wyco*VByCk#L*49T>C!P@Bni0?YA=5uYcap zrwnJH8OCYRR_u<+HrO1K%nV?e8kj1{u6d zWL2>b{V(hBC^=Ng|El?z);1-@b+>a^B|F9o&sk&);T^VVaO*5hAnxz#pe zJ*AnG_%HFiWcu-?-(Q+qZ@edvgvh@}2&CSM1l#~H&V?&@g#Wye2%YvB%I_WLDhLF0 ziD)?c)dYtO!xaie(5Hml_kII{8)HHpv%wVugW2bRtg!)s;)>klf_sB38o|XCV*=@M zK!(AM*~AS+A7CcvdXKygJmJwV^+R9?x*U+nOgFe*hI0;fJLr~l@MXxiA-P~i;R9za zXcLiZW$*dVO+pxPUn0{4?}n>R-*L@8c*WNp9>qtacICPuwcXfCfo~L$E0dqYtgIE5 zJVX1?^wUBx1#h2>J487bBh;8Ha)UaQ?$3uOA#}b+?olL=Jnb#TjiFNle?=i9)}e?@ z#iJwUO=^^fM#>NxWu_T~EY9qO+y(s1Gei+w;u%$F-IHSWat3#T=1uANKiPvk$u}^4 zxyoEhYfALnw#MK!9O>kd=R5UL4Pp<>Z3@;T3RE1A7Ee1ms0rX9Ql%xw52t-KCVgle zOJ3EG*Vh8*!ALg1Z5Ec_zT?PUOZ(`epl7YvH}9P|L{6GIM&zz6JUY z5&!5{%~AYIlej+@gcYcJO%azrMYUj3FMq!DX?}Ha^kuEGSxHhS#!W*M6=}kxoreoS zV^`E5mP>QG%l~-&tCa=n+VtalTwgA^S46j_Q{h+Yp;0fk*kW(hPxKzlv6VrobGvD?)Z6hrWw z$1!-%913DrroG)@j*^X!cL+EpARO7=+5$TuJS047DJwCN)n(seWKXY-kdcaN$dm=* zFGtzzc=L5}Mn-t1X4fOjhvR5W@WuUFtc~+aO(mNC;U=?p@6h?|4u{-)OM$KTB5r;C zV_$&f>n+EHA||*XmN^)04VcE2}wH4NPzxn-8>Sv zlzJ~A(RA#vScI+p?BuImS``S|fmo_sztz0=Ln@@s60F)D%M{#=z*5(=_{ zO|_lO34xpq;x{q8g{G~Ep6=JnOF(>P3=tZYB|&%C@13%SbU68n&J~fvnLW0t?d+Hq z;C(kDb3?S2zT8ko;-zoIy*(K5j8ImY6&rSPyYUs&-G2M9J6*24*z$F@{QN@oya$JHe++k2ru)jNVzIc&eZ@o^H--e^LgK-F?I&-nOCZ6HlkEh?{<+%_jo6$$9w zuUzXz;a>E~qL%rWM@yV{t{f0zK!Kl{Qn^I0c^s~nTn8XV z&{I>eLW>L&(IsA5u`q834UK3H0XqhU0Ag&VDvfpfMT{olhnqe%-WPYPx-;nr=$>D^ z9+RandT>rSz6fFq(j^MgCMHdUI}k(Ot+bR$H~58XY6RQJ^0eW zL5z!;TS^Y|jFmN?oqbeTc(@w?N>;kM^4i)~f%5A1;+5%j@)QzdopJ2kpGLcsywwT-H`w zK^YUUq9x&@GlBjCG+BN1iKNdf979`uW}`?%<IBsnkdFq(s7yh> zfac~qKTDF@KTp}qtPk_8Ua{(rR^EJqL=Zz0lP-ejdM-MR$M?S~+fiThUHA!>^8=~M z+4fKoNg9vl?~@gbs2=X$C#55EtOsN7yi8l=GPtak>dQ@A-wcr#O({7cg#Y$|Egi6b zNecP7-Tl+F@B15Yu)%k#fbMzFyHq0RQykCiQ>S%6wlLv>aLtZJ=5@c1AZTFw5qy(s zgd3B{gulV{wgoF31{oeV=7;~i^nHgxtNr|^U@6&0sx>)s^g*TNo(WtCtVKpNxkTp0 zd>QI&s8L(YP#!%3Yg3)C&sx5HZ9;Jr_N7*1)ky*cSLh1p z6KQ*M_M^HQ;?HPgWH7KTmZ3r>d0VL^s(1Ca>x~|fo8NK((BC|q_~D~7>BB-=`iE3n zc`S}~Inn`uv1xj`G%AJON_%m^=>i2A0s)ncG#+?Z#tZ=Q#KmBPgS-KZFxixZ(JWq0 z_g{uAfhc2XL)!pB3$kY|;E=QOS)^DM8nRW{C?gdP5BWeO2qiut-~Mp*ThK2S32=Ne zxP9;-Z+yQ8gQM3^u2y#N$!9@ivUzzUBO?QMY!KpYYeayazdrTUJ>FL%OVZ4tF zc(tOH|K}moMq2Z}I|4c}KmB%n(s<{?y%z7D$Oe0olI(KKo$shb0)a)C^7l5hyhc=M z`kh9MZ(Y=|Acl{DH%{hbG&BsGj^Db%P}Goel6QXoq)8k=M@KhhNnJ$vh<#^N%MWcZ zni);pABrMaSWv(i9WzUtm>r{y?amZ-O)Oa@^hb}UdDHbf>jQ3#jfA##nsRZs4pgPU zp+83D3t9)=2oppCm5oo(l2}|N9m$Ra$wo4-3X+UvXi6;kk{lzH8I}6G5mPluY~p0` zx0K^`NfTtn9E&w66MK4l0cH%B%+tvpIyh_k3mSr;bV1eqJu>)}V5equor^J^?r1kN zWl$;X+inj_ehIbp7Ekqe*HP|jIje{51?%`_@7Ywm_~ngrR?_0YfOsQ8JwH|5Lc9bO zYUIT@;S!A{;ywpmdKEnRCrPkt$^m?1(RR7V?L~GoufrqnX}$)*nytNofv#M}92WMm zgR`ovTEa)yT0cL6zNhgiFW<8*fbs>u%VQANUG~kaQ={6A;j<|PFva*EUaluQS~?*i zp@1!XT2}5pt1ianusS|Y94`fauh;CXjxtBVpfpkP;{q%LxnTk?c({9pCdkXjST;sY7ylObbx{1O-T4n*Ne5MU2G8@n&A*2oE*Nl zxj4-c1#i!Ugp@iGQO^Y|-bb@_NT*YIv3Fp9o<`G7g%+k5TO1sl3$w6Qqd?oU69ijY zhAcUHu6~pA@s}vMK%Vk6aO_5+?)RH$dD=QvZx|%8cd2ZXlkxV#lvL6!?#7bQ&FS7k zl&k38l94OuHbvAe=m0;__L(Be6?A-YOycsmtT}C04UonvQmuFw;knf>n-#MYDVo!L z7g~4M3k^ZOn9ux7-!|{kH!?6BH>55v9{tX`|L3t~)8z(IY|PHbUQeITBb=EYi*pO# zHM6W*-h=%vP^Q{iN-5dh|KK2*KtVa>>AK1A?@yvA#EDl5QIKnRTV5NRhc_ zW@aF>Wc$rX(B~EtvVOAG=qCh7d5}MZ-|o19Y~g4dJLvlds6YLiO00l4HR94}i}oXD z!7nZPMJH&$tAv6qk9i1{T{BX94-9`Oft4>)b~0jAO|*uBD5|K`fSz6PWRgI4LJ%GW zy2be1VT+W(lYW$*P)Bq!;wFe;yjNkip0+eDN#n+|b%2I}aeB?i=f0%@ri!UbjYx}$C4$)n6&AGjlf*Nlw>OR(XR(wzvefML;4Xw!< zWFK>M7`H+m7aNOM`@4=6wI?hGd1x2=$?oRu_|Ba*?R6j>Rjc*j|3vSb^kw`!Teq{Y zOIdN()?-M}h}z=JRL^SHc)V<^Fby8r&DzxnZ_xK<9-Rsxu`&N}cXvWfK!pkhwjH2` zIeo8la%xp6F$L!9N`I#qlu*)qb45|1=0V1XqaIqFsk$o60?yvHyGJh#jXC@Fy9$t0 zI8qRNnF6xEP!KR+IeLX(?bq5^)8?L73iAV9BTjFeb|DbJ2#1+C)<7(2yV=oUX`v`8 zEsa{K0mzF46^%|35{N$rRZJF_0|5l>)|$~}cpmIQK&JntpkVP=nZ-yNNNIz*Ay5jE znQT6Bu(8_!p&g{7GssV`)iW8hAF}Z|2oQ(i)YUfsK2G%4k?KGo*n84q!m3EY@v0gc zlE5*eQxELE_ZNOozpogAYoX+mb4`rcPb-TLCM$s*`$p#hb zlqh%GrYem?+#NKlb#!kjrpE4%HJkSF@qZdv6j?ht^As06dHK*HdEpd`i5nY zYp&-^AC^AFYcP^R8zgc1|4NLN-Jjl=k{BH=h5A8Nlc}-Em3jIFF*vJ5L$NfO)VJLE zCI`MkHlay^LZWA-vMjN<(M_lO6~3~ts#QMTpL;5dwFwL7G3mDmrRC}}3VL4j?AWdu{b*0q1BrS(Zip|kx;sj&3F^L1VV6kP z3E>WWVixWmQz8?r{-Fg-#O-ECO3!Tb_mnjWZ#04wsdbx7BML3nu8s)!`S0Flymn*;DDJ08YAsWIzhGEa=unlClSiRb(BYu#6J@!W#T5gRAB-tB zmX_B5jt>CXYcn&KqKmYJ3<3mCj1b=!c+lDiKvV($CQ$q{-Mce&Zu!WkBF*|!XEnQs zcVEH=u9yg$cpc?0wIGoD5yDKZaHyB<+8+emX?Rn$o_;e5e`=UWdZY~X6bhI$EuUQ= zea)N$nw0-_)e_iyF?}y^?&-)Js;kzp3H!}_YeZVvnw%*TLC4%u60pZu?2W5x_9>zV zT3-*4_FmoV&@Z{=+x>Vf+1?y(;@uxe<`R8T>F}e4BQ6W>;YE%WrVP$XTKN+^_r)_H z(S(AUaJ9VA54N4`OrWhgL5EGfNl;5HyKll9OwMkpIL&8;h37hLdL09U{m>hL0C82% zQ2U|2dlKHxORLNE-Ca`wruZ!SHI}>6b>yBQ^VsvYp@$E#^)FxxeTlO}z;|c~`jez= zlIxn0uIhoOMGX0BP;h=Y%#G!8VK6iGm7xY10tjL0ZoiO*2SWPt`DA*&G!^_q3saNfV)PtR znpt9TGZs0LE=)%`lD>QvIm$j$M>)p6ZsjuJB_$HE=Ea|v``@)LW2+kRwp)rTV@fMk zm4Mm3)Z&G_MzKL<{hk0~irZeB=8ptH%v5K}u?aN?zE zJ3O5y@3ewwl5NY)KG1tTZ}of*t|g#?=LuTrpHsRQ8Lt zR)4aj25qJY)B9Q@JFlRjb5GS*H%<)e%;D*dBAgYp%R{hMmpZGy>T5BHn>iw@Y{)!g z)L2)h@PMSEOC>i-h0aR9$$>3RY!lee-%A%{4nVj(FxH$We%e%q3Ed1I{DpNoK(U2Y zYYlp43A!C;07w#{EG9m_j*4FE;Y>kGci;0USs5luN^Y0;w`WmImMTDsxHLEC)*1K= zPJm3X=5kBj^XQ_vr+nvIqFj*gkW<_!3O{vkRieJ-iQkkmBOv)_$y>*y-6l zUuwN2_dyb8$1)XfN3xWNu)MS<$*N`d1=O&W5&zjH)rZm$v0~b(0`^ZC8N=o^IH27D zuor?Z2sGNt$_W5JZ)*Al#J>5mDY(#ep6WFoKvsEeFHwd2k!MD>YQFS)3TZ?QMGA^P zIt)GXI`yC1@r+S4fIt!xq694#K!)f)Emft>O!+a7#MXE8fTSZd0 zw`h?{q8yW>X)crvB$o!ye$P;K4-9l_5QSS<9hroLDQH)3r0-l-NWK523tCne6&2wy z?fvfCKEGLMa$)7*P)DJsqjPe0o_2shT5i*73eL@6yo*D3o(p^Rg`j*NC@JgI$tr06 zbWi}f?uN*s-#F!(x!7mYI-8{N{eZqiF)MyxFd~|mWW@pS9z+1g0rp)oGBV&J1Gy}l zNXldxA0HoZsPpmmZUeoO;1PVtWP3af^#i_UzEu2p4t3R^F?f%HM;NpsbsY#I33CJ z*;0{{gJ(ojM`x|YV+x!h0qPpi)&S}n&{eE0E#JR?KRz{8T2TRb=3XF;kMP_NFu>P4 zgCcsBrfxu86|^x7Z#~}J+>HM40a#zp&d-6gD)G}NOKKQAz&l} z;FsNUqp%F|XI235XDo19XMGXm&l4QG3x<1zhd`*#8~^AeLAPxIMum55DIibu<6uzJyLBW&9NK1AuTX;yr=RG)kEA3JO#$ zWQ>e4T|abN+)qJMT`)uchM4@_S!H!KbGB*vK5F)*r#9QB)JxBKf+!XklTW zBOwhH#29L6Y9gv#y|VdCBNC6v>(!p4Ua_9~{zKzCe`0iQT1f|rm}~^3XW`KBj+h$8 zkZ11EnyGy$v*F`B&$X5F+)3gzrfI-pozqRXpS0}~$-`XYIUP081cxc=Pz*i7m|)(j z=(rG_7$iS4H8dpKS6vFKn@W8Z;q00q0n6Xid^}(M`Ra!N3(Mr%lXRB`h?ll7EUc_(9R6qrK}i!#XGXmyaQ9w9 zh%pf<(4|4n4=gu80a^kpk_9Byzy}0`bnXBP==hC~j0^^%sG;Eonvj6*RZO~#<0B&s zG&B)XjsP+bnD$`&{QRDPr?g~HNhP-AIRqdpu0f$I%lm8~2{imPE!kfN&oixFiO0VOka14d&u_qh z1EJMtZl@gpzXuO|--lPMCcPiNd?EkdTs)hRh3l_!1Vhs2>P(%% z#&XoXkv2(8v}VbdgNtw<8ozi>%f1mNjHDIvXyv<16)EUYP0=sT-3EbSFQAV#e*4zf zbEMHMR@O;dS=8btXmN9f)&6*f#O|S{h7}9CWd3{!3+(gQQ9Zb!sh>UpnbykE(h^9J z0fQ!>nFHFtvTViBK4{-!4T_4!0pdPB{9#=r*mf792Wecyla3QJX8{R139gE3HC9Cqpmje{O^ zcMb5eMZW&B02Ax>?b|_NTisaKIh(LBC15NU78hajB?T3vSFeCX6Mr}KFZC+RtghFI zlS3OF9Tz~V1}114)_2g#!s0#n6%mQ~#l=!!c9poC<&gXM9uU@`&1ezMHo%?`h~*RA zb*6vSRvprId?dNQcA=6x1?+oD!fzD`^+a=*?=$_7loIZSqPxtz*iZ{^dwU!#RJ0V! z1vt`jMWQ0PF-AZl(GO4?dF0be^Bw!kO2&`;k>S@vJ$10;kaIVt7bS@ z#V~hY%FfE_Hk${_n-xt(n9neVP`v*Hp&Mcd)K!A5i`a^Or4Y>_h6imk7EQXrNH72R zKG>58kD0yBh7G7BBm`m&j7veGTiA@-U?u2{K)gL9T1au(C?r@h2a1buf)4C{Rg+(EG~DQj?SH?CWaOy&`cU>^vZZSBa+5{S~an^j`YVIUK&6l)-3uffFqO&J4Ton*yBPMwwJYOunSkdXQ>^o9y|95Xa<|iN|Ah{b zr0fEhMzCyP?ypux>+C`yhpo}=T30lPNSg*yMwMQ6Rlma;13B|N1u8G3EVTAbkX48S zhDq5#a6c#5erC6>=Yoq{T}}jd`LsfO^E1Jj-ogi3DyuvFgB~If(B6GWs3cEgGMQvo z`e8AUYi~x0Ge|Z8eUbBe>`H^iO$A;g*2fQJ`7^2kWEF9=x)LdVy z{p(o}x>#`dF+UY)m!G0@Zf0C7?={#TH363cqF}~1DZJ#&cbD_8nO+HGR#af73)n5i zeLW_L)m2tFocD?$;U4P(qgt6vCb>t10ry)A-u8e1K7afOMk&s*1Lj^6tinRrexN*H zVR`2J1oBObKoO?<$eMW8mDau;4sp;L?!9T|sJlzdZ!KkI)ZrrANJ@yd7Hxc4>x5S1 zw*NOSivlh;E-Y+)U*`j{`0|Ra#XUe$1wNsoH}%zc5?{Ahc0^6CZ^Ag3%Tuna(B%3@ zoGeQ2NDjcb%OT_~+8nKQ5byiIs^Uzb`RRUA3(DJ&@6Pjzqp$K z#vG!!R^UjPGJU&fwd~qFegR+7V{*cj!s%lHov7RH3yOf?z4MQGJ_@8-3XuikWWQm6u*CMPf(zKLep) z9s(hquAEM2kG?gSL;UzlIGOC3gyJS%UtGsEmfZA;`UeLoEieDMnko{;9)lT49hZCW zBO_{~2DO87MwYH--+Wm8K=8W?-U1b(>6iJ0`iu^i^@Xz}Xt*r9gg8)n3lr5*)khs-jhc zyW?Srp->4k@Y3^=5`r#I#RxD_rxn^{_94_NW$@4PV0J)>XG*Lo!kkh$(>x-i8>woq z|1QY$Pdl*29zZXMGy%#4ks@U!B?wkGs;lYqMb|#PYMq{)ef;ntII%}SOwvFiRUg24 zYF~dp$cVgx7F9+0b`W@56;;pWUWXM2D-g(p@Zf9~3)oXhgf9>`!TA{CD_o$WqO#`H z%zhy~tThD`;YyM|=R`CER)8u|Y)8x%3mmQ*x3ik%F}_C>aLvlqH5}Ujm;cUUeP0+W z-S$f_fE>`?=pr~L$?&8A3WWlaJ+RuK%m_X%fK_7to$kQGkjd-^das|KpQ%sDo)%nJ zC}z+g7~tGju^&IJ|0nW!Its`q^VAIB{Ox)5l9%)1o}O+4*Fo56{s#%$)&Ca~#x5-_ z4IMri8j7axhfX5)+lJr{ ziV@nrLUgP^uYX{Roy1K|>39M1!xQgi-}3tV7o}f*XJqN0m@l=wuQo&&B2=i4cG4HgNSUoLzHQLW?)U`bRvJ1l*+*3lpEtS` zn|@>C<%190eQizKUi?YE&nG;U7KGWf7wT2?R?q0}zob@yEpH;ACsspEYD(^P+fhokRFaQdWi2Yjy1TY}v9L-tojxbE3j)c>f3wckdm45F%3l1#m;*GXMYp literal 0 HcmV?d00001 diff --git a/website/resparpics/default.png b/website/resparpics/default.png new file mode 100644 index 0000000000000000000000000000000000000000..a20e89389d742d037a384c2767a366bb3490ed80 GIT binary patch literal 40542 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 V-CfD4phP5}}sYbco`4=GbiP!)D literal 0 HcmV?d00001 diff --git a/website/resparpics/detailSmallGreyTable.png b/website/resparpics/detailSmallGreyTable.png new file mode 100644 index 0000000000000000000000000000000000000000..98dc29bdc75d87f7ad0004b3818946ff598dce24 GIT binary patch literal 31701 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 N002ovPDHLkV1f;iv{nEB literal 0 HcmV?d00001 diff --git a/website/resparpics/issue73.png b/website/resparpics/issue73.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c90c8a81c9a39af3ee582c87e8c29a0120cc96 GIT binary patch literal 37751 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

                {|)8iw5!FxdjB?-SKr!Fv%z>;WDL{Lg@DwAw|jLKza`SP-sm`nMYVzSye})ATkuq zEG>b~TDSY+Q&mmP>WFVc=j3D!n3WZIYTqR$KKAEk3sc3kX|xvTeN_?5+#>9`lPrDz znj_qDc>%pJLnEUx;+bXbzlSLe*4EZgDFnsnYw3%-E^^xn)La|Hu_LkT(hLYBw86vn zL$>zS8r6@JtA-?5s3djLR|rv0D5cKTW8cpi z%8UUxSZ6??=Aw3w>sa=lFl}oavf{`>1 z?VUl6|NKPLDF`|5QImc8r$hS0c15~cb3j*3`<#X4b^Jaa9VU5_1`FA)!*}%&<_|wv z^G1n$t9K{9w6zVkcYHCC4D9K9wupC=BrNgQsBwQHuT3-9gjQ8mQK^@J%jgOGZiB8+ zLv@r`*b}-WNC;ZV&~JkdklTC-uvJ2F= z+y48wq;EnC)ddR^!=vhPG5Zs;U1e}O;%~OiW3%{D<11pME4N{IG2vT&^^K`)D%;iK z(b1eTb_^=~X~0LuTb#!0NqJQ6delnmc@Cqzj5%J)%F0fCS}6Q&W=#piG$JBXYwKGG z;mbOg{k62DRGA?0pX;wwVn2S7;_Vb%KkRykh-6%!@XV>cYT+!pl8G)dL;O14PxyO} z5s^*wjNiizy^0R^fY#~wmu#FgI>M=_6rItup$3!jI+CqGt>m#K)|LqrSDntyect`NVjP@k-QgW7La7S zJrNVr?C#=(v!@^(IMt#~R;@`v<=NfdZhH`6$-=?{jqfrYQwm>E8vbN`ml4P*ND!aQ z!;p&gYS|bby#Y)IaPeEJ!h{)@C#4{t<5x3by);mx#Ki>KS4{}FxSc3N$pK2JFoaO2 z+QPW@6Ve5sZteQ^ZqQ%fxJ^#{SYPBgUkS|J=Ku0ea?F0fd8tMp9{!*_p-_zxylZ-L zj6Y%y{U2w39$*-%^5JqJ#fxTQXrGiAw&0P)I-K^gJ=FqMy3lM3by{B=x zU29lAjh|4wE<2tq;+)l;kBf}j%4XBYoI&-|oGJEKw@S6D_wVQ25x>W|e5|vX@9ch& zUx?9lV{p|@cZtlhw`O{6_#m<}lvJN(=)U8S=HTBodrt4dP3Kr7e4~}DoG9=WfT?Bpkb_rvr zHLJ)atiE|I8#oBzE@6sq+io@s)OIunDsJcq?Avdi*sYNuI+xz@2((IQ#dxe_c(4x6 ze+qtW#3$dh8Ud&Xpa`G)@olPB@X zXH$7?0m8QutG*l;x53~J6lCQ4cY**GeNEW4T~2#=$&xP>(Q?&{i$~%BH8MXe;gM#h zpE6KrSAoG+hkriloN}C$3OZfR2NNusAf;kKW- z<0S{ao;6llNUfcjrUp~Xz(}m10@zTZd(q(=bXQbVbTQ=#EgMf9jCsZ!SglQO z%{D(wL9B%kN)}7*N$2sSTMl|6{Vf;j+HAVD))yTCw~1Iadp#P!;z;=P*OerAA-Z+$ zz1(d&8&lwSX6Xp~RYtE-w9z@zt(a?}hUwwqLFMuI2%xCzk>s_ZKQsVfnE`*tHHh*( zEB@uzTO@qD zcs*^UMn^h|y6`GY!z}*n+Z1;;Bq-dgo1dvf&#Q&NBuUc0o`y1C|EEf<`Sf@HjNK~C z1JL$2sIgl3>~>O{#AAi-6-6txN`znW76i|xaOxaP6>iR&{#HUfBEr<<*NoU)u6f*u zb2M?BYCU)uhlqSrdmJ4_fr`)lDPXS0b(e*F#z1^34h{snfU2;Tv)6|R1uO5+s6I zma6>pLq_(@UW8PYleq~uTd$lPCtVo#_s{jNnMXn%=U|ZkB2CBv6Oo#mXX$yibXy1) z)2~RqL{>)T{5V>{!fE^Ls=BHI*$aG}#hQ@fqUq%kt-W}(GZoC$1G`{=uMJ3m*#WrU>RxxV?0gm*B!jydWxQOlu&w$)@oXx4Llc}`jEGd-MeWM

                dH2dt*qgluo0V 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 literal 0 HcmV?d00001 diff --git a/website/resparpics/pz3.png b/website/resparpics/pz3.png new file mode 100644 index 0000000000000000000000000000000000000000..c6157527893e0520ac44389ea22ab0495460b01c GIT binary patch literal 59963 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 z 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 P01z1oMe%acHy{5mx;Avj literal 0 HcmV?d00001 diff --git a/website/resparpics/weblike.png b/website/resparpics/weblike.png new file mode 100644 index 0000000000000000000000000000000000000000..340f03133d1e10f226c508a5c35856345a12dc75 GIT binary patch literal 25158 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 literal 0 HcmV?d00001 diff --git a/website/styles/style.css b/website/styles/style.css new file mode 100644 index 00000000..62bf869e --- /dev/null +++ b/website/styles/style.css @@ -0,0 +1,122 @@ +/*--General-----------------------------------------------*/ +html { + margin: 0; +} +body { + position: relative; + color: black; + font-family: Verdana, Helvetica, Arial, sans-serif; + margin: 1em; +} + +a img { + border:none; + margin:0px; + padding:0px; +} + +/*- Menu---------------------------------------*/ + +div.rightlinks { + width: 130px; + float: right; + font-size: 80%; + padding-top: 4em; +} + +.rightlinks ul { + margin-left: 2px ; + padding-left: 1.5em ; + line-height: 200%; +} + +/*-Main content area-------------------------*/ +.content { + margin-top: 2em; + margin-left: 2em; + margin-right: 145px; +} + +.content img { + margin: 0.3em; +} + +.content dt { + font-weight: bold; +} + +h1, h2, h3, h4, h5, h6 { + margin-left: -1em; + color: #222299; +} + +h1 { + font-weight: normal; + font-size: 140%; + padding-bottom: 1em; +} +h2 { + font-weight: normal; + font-size: 120%; + padding-top: 1em; +} +h3 { + font-weight: bold; + font-size: 100%; + padding-top: 1em; +} +p.indexthumb { + margin-left: 1em; +} +.guimenu, .guimenuitem, .guisubmenu, +.guilabel, .interface, .guibutton, +.shortcut, .shortcut .keycap { + background-color: #F0F0F0; + font-family: monospace; +} + +p.remark { + color: #888888; + font-size: 80%; + font-style: italic; + margin-left: 4em; + margin-right: 4em; +} +div.news { + font-size: 90%; + margin-right: 5em; +} +.application { + font-weight: bold; +} +.literal { + font-family: monospace; +} +.command { + font-family: monospace; +} +.filename { + font-family: monospace; + color: #007a00; +} + +.important { + background: yellow; +} +a.weak { + color: #aaaaaa; +} + +table { empty-cells:show; } +div.intrapage { + background: #ccccff; + padding-left: 1em; + margin-left: -2em; +} +.code { + white-space: pre; + font-size: 100%; + font-family: monospace; + margin-left: 2em; +} + diff --git a/website/support.html.en b/website/support.html.en new file mode 100644 index 00000000..a20fe60d --- /dev/null +++ b/website/support.html.en @@ -0,0 +1,65 @@ + + + + + RECOLL: a personal text search system for + Unix/Linux + + + + + + + + + + + + +

                + +
                + +

                Support

                + +

                If you have any problem with Recoll, or a suggestion for + improvement, please provide feedback. There are three + possible channels, depending on your preferences: +

                +

                + +

                Mailing list information: +

                +

                + +

                The list of known bugs is here

                +
                + + + diff --git a/website/usermanual/README-dir.txt b/website/usermanual/README-dir.txt new file mode 100644 index 00000000..4fba138b --- /dev/null +++ b/website/usermanual/README-dir.txt @@ -0,0 +1 @@ +This file is needed because of mercurial neglect of empty directories. diff --git a/website/xapUpg100.html b/website/xapUpg100.html new file mode 100644 index 00000000..f4c4bd33 --- /dev/null +++ b/website/xapUpg100.html @@ -0,0 +1,69 @@ + + + + + Upgrading to xapian 1.0.x + + + + + + + + + + + + + + + + +
                + +

                Upgrading to Xapian 1.0

                + +

                Xapian has supported two main index formats for quite some + time: the older Quartz format, and the + newer Flint

                + +

                Up to Xapian release 1.0, Quartz was the + default. This is also quite probably what your Recoll index + used, except if you had explicitely required a Flint + index by setting the XAPIAN_PREFER_FLINT environment + variable.

                + +

                When upgrading an existing Recoll installation to Recoll 1.9, + which is normally built with Xapian 1.0 (0.9 is still + supported), or after rebuilding Recoll 1.8.2 with Xapian 1.0, + you probably want to convert your index format + to Flint, which is faster and more efficient (if you + were using the default Quartz, you can also elect to + just do nothing, the older Quartz format is still + supported).

                + +

                The index format upgrade will not happen automatically, and + you will need to destroy the old index explicitely, then + restart the indexer (this will cause a full indexing pass, of + course, which may take some time, so you may prefer to let it + work overnight).

                + +

                To destroy the old index, you just need to erase the xapiandb + directory: typically: rm -rf ~/.recoll/xapiandb, except if you + specified a special storage place with the dbdir + configuration variable.

                + +

                If you were using Flint with Xapian 0.9, + you must destroy the old index, + because Flint had an incompatible format change + between 0.9 and 1.0

                + +
                + +

                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 ZfvA&o){NI@XM&93(%e3;oaBH zjv$~taeO=tWap%b=uHGH7QT6Ec6RHJB(%s`ripD4DOjq*p~05QLW2FG*b~6QMF%ro zvP>mQ2wNov{asDhCSE+y%S4oBc$NA1_=YxJ3Tk7k5T8da>J~VL&6E53q=+6`mrg^A z_2?E26FM!PMoBx}>v)x!164zrEfxFq>(^8?G|3b2K9<&SlbZT^DYn!?H5Rps*>AJ9 z;25)|N+v@*JUv?jAH~FPrV_0AvNuk>!BR#^2Q#bYu6Wb%J1%{lLvZu+Gk4nSnskTz zbkKya)Y)gt^D1zr!vTqq+8gu-w=ikm~1w|C8)<2I-(Y=vB{B;z2McHv3F!B^!Sju|}7NS_nPo zshC5o3aAK72D|A`6zv~s1|uKP6p-;Kn~1XNM53n!fm@|DD_LB?yGFc%*bV<15#ob6 z;uCB?6^S?F1dH_Cl;~wbQ>~9Omaa7D@1^pl%BwP(|t#uJP(Q4PB^I`|Izq z%{EVif&MZX$QS0^%BOF<>!VWDwHmn&k9EFS)=N}s2jXeF5yi=_|3sA7m}U+36?@ZI zXDRSxK3~I4OoG&!-RO0uy?PH>_4YBpieo`$gtE-y_H}cKO|U#?fulStAq=E;`OOO$ zFyz!?beL(zi1NzsWtWj)X4HeU6de-5oclNJ3Z1lb3-~>OA_Qx>_VVMkUMCOzFweEp z^FBf~FG7{WZAku&=g#FVMYx1mo;d&U+Xa3jW~A{hMk_MvYW~n8h?d^{BSh z#iSr1)v-g#RJ%FS*M6O0;&k@|PIjYeo9mSM{<*b~7gMiawv~jLU=}aOkiP=H%Z5v9 zl5+*R5neBL-iC)T2hg2vFAs_1WLsS}qbE;3kX35O_=$-Z>Ig%_qh59HjZ}lu<9+fo zfn6YMvk045iu~dBA^A(h#RVS*2FBRLgb55EY*!tQ-8`I*!~~OhSMKf5Psh_v zZr@HfVjSSJvswTt%QL04RP{YPAWPsXYH3L&Kl7aDTz}Kl58tQFg@>`suCBf)*1#Hc z&iL}>Cl~I(z<}5?gl;t0S2Ee_;Z9IBPmF;m?x>IUj!yc!u`~wVYVN5hG#S*QRqoZ} z^+C-Ft+qwZ5}SXhoiiP14@&~|D}7gI>2HQaCK!_BClTjE<~;wzIG{EH6K9GyPMW?4 z=Gb*#ys`fcoacahgwZMJNHr}jS0m@lP$JMRq}544%>kum!$t6Uob0@I7a%1-MD4Eo zo|s%YhbXXl4pig4!^8R?KgRCv?!tsh;ND_W2!tbCrL+%&)~_3A%b;ce_X@Owh(b_h zo|Kf9vZg9Ph_K9cw}4#jUAccO#6&vi{O?18MI20^eOECHE)~eKU=4b?yz?3lP;SKL zz~$H9Z7_>J^~>%w6|?Sj@*!i|fd>wqits8+&AAKZ;DdYd+qSp&U~@E`B&OeW=8Elm zMJ{vAxf0WQH9hD0`Z{o%wBNrM6cM>opt8|_FKuFIXlUZ=8(~;|nK_+gkqL|#dsqSY z%)kJ8oNS0;HTfT5urRsefi$vyK#cj}cden;rp0FD;eLfXg#pSt(3TMh1W>8D`S{4H za$ztS68IuXrL^m8aSKWm+F7B=W?fF93T_LaOwF+3S=*d(2Im(~Yh3tJ@K$#|z3Ps9 zJ-K2caEtpziHX}krU^7oaJzC;iptr*%1S*AR8f(d^uv3;F-m1#g#eybWWT9?s|#ZT z9Z7@fRCTDKR5GOV_@I3|i|mF6cU0yC-o~k@s0i*?+oFTlUttjub5m0k!W!GIAuusuM^1$>o5hW$1euoDsaBYhezAqA2&QFX2^It zk%cSf3*P8#EFq4c!0NnWG-%cCCASLvfOc8x&DG+*=kcChza?9Sv{|F2gw>7rMG zv=-Ey>r+A$@x5nS-xG*ou~XDr?_W+>rLJZi!{CH7yEAs~^RNYTJG)qG-r&XNg{39S zay4T=KR;tk5_ur+r7I_VpEL?>`0(;6HiEt7&24!Mn%f_0H!0d^sxwj&RkW~c)yf>k z&^Kl40@6iO)#mp&D{})lBy7)X^#A2`)H5<`_996cz#j+b`3$NJ;r~&rO%Y9%6?Y|ul178oksSr4H9Oj zta0aRlK1W3$grBAn!iZ>6}nYgy7@BE#1nCP;y(SW-}z@(k-ZO(>+c;Kbav;r+U%o6 zPYb|C_UKY&%b_V~5Vt?4p?OVScGz<}c+H(4TOw2`_E|gIrE%+2S%E=e-Gre--SKT+ z&sHCS_{N{cj{x$halX&U$tl+0jBx1cy6S(`;Koo^` zt`{fGGyLCwWR;dF6?0YU6=LvN@swV2OOSoll*eF9k=+r2hD~>O2@Yabm&oqksgZ+pHfM= zC5CufIL~~z1X($Zg>&%7EmJ_ze!Kk)|Kc)gpzz1(FHi3aj@}Ij1-f+68txDx^n7!H zVGK$HQG#l1ZIY$8?r#$&)N>({n6*o{=WPb^kbKQx^J#Pcdn_}vb?YqIYAd37Vx6?G zau$KA5Sy&8;eTXB%X+fn&=(!jE8bT-Umh4V@$t)KRN1E9-}@gdbw~jR%gQQUvY;E( zru%@rzCKfHN~a`z5xz7lZ|^9>>cLl!*LhQJIka~x7$k}^Y_r($>rPHJsBuO8N3 zmCf1St&2Y}@OL>AE6){Z<-YlVk}Ebt83t?0h?-U zOzHH$4}nT$kmoMGln>W=CO&#@xr*t=W>Rin0N}?pl1YL@4JOby*K{S6AU0eDbH#iW zN*7lbW~@xx$zyol2=?D&TxN1A&Ae6yy$Sf7t^T)s`ySaj`}Ux5$nm8Y!*-H~%?%M~ zbo!b09v+@QSCS!|25mq0VR?z;=3(zQ@2G&R1uoX%$0>f-?Y<)rXSaGnFd)fTW4TbE zfVfkUk&!R_oqs#?24pmXRI8znsXD zKB`$kYOY%XvKc)+$jcAEn!^_RuTNV4zK>#% zD4mhj(k!eMC=nd(`7~tK^$NYsJ|-|Cf}VhqvgQZJ$VJED8-e-2p7lZ1N#4|e<<&op z{E0!Tc_LV%wl7CbU2NIx@}{u5QI)m8;RXJ70*z=PXwH;Eild5l4h~o`5(a4NUotaI z0s|9cP%fU?4p%9f z!VR&SkAI00q(c@Z?T03$t7}LjK<8ca<45d%N-_thB!nK_3tY0_iU5TGL3#PrrPk*l zXVxP$zlXI}r>-Xnmb{ z@K9LnMJhi0)0)M5dOHkC%bV!g8D(JdWa-GW(%bs>CLS65J}Qk04l&AGdQ<+pia zv8pU2J+;-wnN`j$C@9mak1nG3((A~W%La!^zrmjV#h=zW;(amh7amU*Ih9mZ0UK!4 zi__w_feb|6UmqL|;4{psEe#DD#CDqUw^c(Oh6(08(Dua( zg9uSv252?2HVQ1<@|~t>GrN#nGkeoR9S56u>W%FVQu%B&fu~?6GBhhBL`tKK#DA1N zNh#dw2VFNHZfKC@nR?Y`7(@2B1_#;o`R(E9MO<@~jM><)U#368se|C&nj;n(JG=mx zL5S$d%)7_w;yIxJuBCzSR{qRRBKV+aqDklz~Qktx!68_{TM;$NR(JpWw8c~R;VfdA&#N2-o$ z2_WH2eTz(kT%R-J%`U1}&V5_^&x+GB|C_5mhJkqI`pWAVxO%0w6lIdxLy|FN!qG;YLUhJM8tewKNE6R}a`Y-?g>p{ZRWzR`R7P?0^3Di+M7b zAn#e=J>n92`{B%^ef+oPr?u4=wO+9xo|G%*KXP)yBP=Wo4nkU5IslL>JqeFj2@@~r zFqy-Q9!_5kCB%XAe)l>@S|k^Q&&()fzhPkJ(;Cb@qol+!VXRoT0+vTWmnt~Vv$i0J zmQ`}CIRxww%*MQlJaPD<=kn&oKJ0h77I2tb{5G-uM@>CF)5|20gT}{|c`|VUrBY(* z156d*w(RAr@R|Z6BY54!cgo2~jFP?%!&jQdCCN~Z$1zHQ`R|pL+`_^k<+e)7%2T$D zp~((@Uu26uS!C_eQXN$~`o}EhPs z69&uppMw(*ES1M2g2!%vtN<*1ft#UF40Iy%dK7NV78ZBqqSbemAG2hcQpC|wqaE># zyGPUIOuAL%^2L)krW~3mYcwzLu%Ot1t`yO2U<|V|RJs5j9w% zvpiH&M?dh9kDc(72J~%EX6#TP4{Lsp=7_ofKKFHPEg|}k$d6}Fg^{AP>!S)NeZfu|XkT zuyeUhQ3cD)`$1XcDF$Go!~;b0fB$wn>$@p4u%z4 z%Te;x&-~nRLxSz*&gkETU+QL9LP-%Hj>G<5CG)=f{#PVKezrPi;0N=D!>*T z{zR$7COCR5?@sLD%52H+bo}U2p}2QrgCyyd7Ye5K1#sH{Ne6hbSTX(TX9TkHsHvr8 zcx$U55EK6`PEmpw_(m2GZBincYi@v6NjBjwMWJ@?iIq)BIX3p|Xr1;EO*!Ry>2f8# zEA-sGRzV0~Nx5f`R;rjDJ+UfALaUmqrPaTM7I zfwwVtbWFJKFsL$Um#t*VC~5}0h=y!Id>$^me9c+MQQO{*ipI6_95A(t*}_=|keTID z#(^~fx6!&y1<0r~4uHYe>ICNs4z3mq71`r3HX^XYERj&Fs&Qc9Na!LWI-4`9;xeAm(4=R!n8uJx`!p^s-k(fPT?U9h=_h3g8|AfyjfQ>H+>`ZYKA zwL(rGa5yvl4{ksnxEa=es&5V**gFRW#!bi`lmck!JAnsng;`A!Ef5GKOkn<|&At*L zu4iOaw0NMF!4?@W_6Axp+j|nFdYjhY7eR1W$@DEc`rwenT-U_ZWxCmdkR_C3)H)#X zDKu>oPZT1HXSolm+n>?&pQg?Lqi5!16O$#!$CR^yQ_G{pk~nUe$)HhkAEv?I@xX$sLHob7&J3?6%?7kOE8oyW95|(Hwl7V;jJH2 z08(RFABFHaYwL})Ha(gBv!?|KLKeR|uYN+^>bUv75@^P|Cb(!5jx%9lPyR`2x47e} zE>B=hAWB(Rok638&KBLPX)bd)UAT{hk%ifSyv)GZw2O(QW`#k5ynL zwZz9P9!8)$_iF$__n$ekV5fbBP*qA)D0UW2(C1VX6Av%P{iQ9wD z&(W`IMMg(Qf#;q$zU9P8n5^P+wUV2zVr9+uL4ZcT-6zbnmZF!Vr-?n1m$-$CiOAV) zF<*xRXy(oa={g)9FW#*n(cGL@FT-y>%t1>uKtM{VUanEE-&GX6e~o=MShNzG7h=>2 zgFrPUiHYbP(47Gl!n}SVk*{65k|<_y`x3(^%HzWx=0DG9dfx-^Ik5-!yQPpb*gjva z4u@OzxMe+%5J6utsn0JEos;3m_31Daz`{gd=^0>aAy?unVfCOZu>lH{Y@`Nw_O^ZI zusKU=G)r`J;gCQ)C5;t6K7K}Cc9A2@I%}&hm-RW`aX`@&A>Y$@W9U zC2;wQR_S*rh|pM_;AEhM!&-GXh!SuVykJf0T5mW$a`m8d85=W_6E*>b5LZgADCTwz zlQ1gsVPVG&$wZ>9p24{L`WhMc8_SvwVRum4n;Jqp-k;KRnj|!Nel9VRCeO9B!k(B` zh70|^1gi=zxMG$IH$%M0)2@FLjl#j1Jia*(TYRR36laM8 z^U&4RCCU+2GbIciK9%&7O-32Axw?$;<(e&@oiu!_{h7?|4}3>{9DLW=k%@{@GFbGY7{Hp2qANT4}Z#xbZ%|w+fhY3@qp9IFH*zt z?t5%B%Kb71)=s|Oz047T4#dZj0CKlJY4wpAc3>7z!vBgTS77bD&A@!KkZVP7$|{i7 zMddM(Fl5NXj<@kPbwlfOBG>p*m3)^v+l$v*AjmC()ZEO#l6GWR_Rh%L4II zLMixIPo+?E8KhrWIgjMPulaDb^wNNbH|R$azM56EES7Zvt(k#-R%VunAWwRKO6K|s z4HdssaBtz_Hc>*@N>=-Ky>WMdQK$rExYY#vvQyT5rvUu6JfXl!Zv2O8N{rLJcWy*s zd5ah>MfY-PPtaRTQH-uUW(hG7RiQMvNy`>u zAs0=t6uV?*KI^F^`_gKmOP`~1x>Ks!_qu;;iwQ`h+L-5GjN}uH?$*eG43`u+7&Txj z|CT=U>#Qx{KYd74DCl-Yh;Z7PnYF1RIbhKcR%vRj@*8KFdOBbJqVBw|1fm({Pr8(0 zm(#8BL?70mU5}>b%=4msCL$C)#J|9tI{-EyzV~z88QAO-xni4tC>>V>_>NnGU`jJ2 z?#CNgVLLVuC@|oF^swXBCJ^5T7-M-k@VX<)S*!zw8iJxLrmWRC$kfd!$oq~nJxZ3|&DTIv%gn_k`9rgV zI%_)U^j(8s=E9%CDM?bIJ4k|}iu{$~N-O8FbZ}}a2qByTpW(Qmmubp6)>i9hm=c8O zA(*)qkYo;RWBZqVsqFOCtyG#7DE&j`Kf63WWR%fTy=5}1Yr07EGwcpp%=IpRf~axc zg*p>6!Q-@gMFQ`0m5RdJ|O5ar85PycEEk<*&2}DrgA&R>Xy+W0hSC{ zvGpx}hm)Raak`vgI^;69XdM9SbiU5)(~a`9RRPb1-{v<$#P{a2wNlHwl6N*FT0OPY zw&y}&Wvt&j8JqGuXqIobn!Q?^nCQ_}m1}EjKVg7;9~g8=EnjJCciCk7r+0y*wKVN1@ zFCRg){O^eI^Pw*Vg`xPJO|jr&qP%~seqf*f>o-sok?>FU)~f&;dE&fz$uux94=|U) za_g*-ILbpOFQ@LMB^t*c*Gyo{%cG+I-~hk4FbMgdo%KSI==RnZ>8!a~*T|@^mKwxR zyY@Z6oP~~d9^hT=i;{D0z|XJrz)_x!>`%$qLg_D5v;5O^q))0~j%w zj;1cj9_>i^pfWZ+TzWo7d@r*%}Z7 z(Mg-6NKjS!qBtzZK?884B(|&69EQhP00j#Jkwh|N)gLZQ*r@kXf1()nRDNiloPtF& z8Pc?9E~)L!Bs^vIEf&Sxlg)S;Hvo++i%(#kt1EH4FdLI|9P(kd8oYn(ABV^rkk`9CWV#+*mWVgS8$ z!94IWNMR?)qe3(oW$e`$4vDejs|=*+-;~N!gXc!c5x$9aQ|Jhph~vUVrRjNyUzohjbM}AL7GxxGfpIX5mLrC{ovqINZup3j zVV_Hr;KgrWTyzm+9{ho~n6-KMs0vb>M25lBYR{hJ^<4bIFAfnk5fbG^9vhFrG7b!M zqnCdhy&~G8jN^2HGtlPm}^YV zOyjg1Cp6hird7ifx$La+x{m4HO?1g5y3;05Q1$-%)@ygP*KhJxfU^8lBq8l@ud9K^ zjvGaVNrv(H*9WrSk22dQhB&w^%`6JVu3c}4XsAMWc5l0Gw6+H_RZ6Gab1KKdD22c& zXoYuEavX+j(g36Al{wkiL}`@C^JQ;RE_+?xExq`(FVI^sK+IGFIM7)+&aeN{EW%U- zKvl8M8UPK0m3B9pnFw@BkX1n#PA|?8 zZoZ};TP{u*fk%#pak~L&GYM6XK*?aqRMOx~7ZeeoOH~2EreSj)lYAV)0il_h*Sy&v zS*1XcQM8v=CY-}JTP~n7TsJl_Aat%L8ajn5B{$;+x)_k?K!WicF}JX=RH9v74=~$d zz~u*rzg`glqk4FFNWPv0S@XJuy=!}KWWa$U2xvmT=9iaa5Ah`B?`E5$-tAe5n}H<* z&jR`5#hpZzQV_&5`S}GD2_k)P6`C@DjGSCM1K<`FU}QajN};9|CT47fQKkQEvP&>t zKx$$f3+Q`x*jrQvgU5>*ipA5IST+S}D?r65)Zjb~p}h;Tn#ldwWJZ#C z(l%=O^72K>PHodgkRK=T8Qpw4aCE)mInu$l+kAFyp9M9ws#evmI*`spDd zs3lCy-X}Z60B z0%$^89hXb%0C>%N(CTW-m%als9xm39`D^JSbudp36s)s-G2q{A>?0gc<2;uw0t0Ci zt((IFuO1!@TSoYv;{lNhWD9||s#i(&cy*e0>iAIq7~6H*-nCx+uv;A|jf;;@;C;OI z1nKc+`HqrC+~?=ggV@u)ZfApso9f3b;1fSwlXtBc-On0<%L5iK2dClM@j4I=7|nGp zIr8AwF>sKS;cMngvIqkf)b9<5=i#D-k572O@)}4P42iKjisi{&4r`Ihto~P-kYw@1 zU@lUYzS;r>)3_Tfjp6sI8|xt=Fw{Y0|54aZSp{r+xk_!ulwn}4HfQ8yZi3GbC<@ga zW2O>)4-&d22}IY@)iot^$L8Tm^#P?X@oJS|mAnf?l|J#WjKv21LZK2}!TF}WDt?DC z|JQ4vPmUlnCkITDU{V~l5upA@*_jhH@_!-Q=61ynb>PN>c{V`N@l3i8{SSSIlE;9P zhSVZUM#dI>adO5Flnu$Wu#3l{ zgwQT2B-Eu&yya_^5Dn)L5DU2J8!GfK6oMUGHk_WJ+Tt~CIm?d{hUDl6^NUwb{pQ` zvbHMNgYDyc|Na#L*1ea=0jx=CV($f1V<@!TMySmJFu4vxg1$%q4!&tsAhFcNvd3Vy z{EKIudXE$nRjmUWsq=yO)0@+4ZrsKEwJs})aHp2z)(guLE3bz&!I_yEud4ZjowjhZ zm~YjA$LWC*;3)pH{eeggKU$&Fp9*R52O+eXJ?EWi##~X~X#0QG0@!j@h)A9r-#^Bs z`8LldjDFC8G1GFk7@U|hd&)s)zl5gvyk*QvZFV=Oa?Q}@obN0d9W)-xB`|v+l*k(* z#R;gQP#k%7-M@@3&;R(myhOcv7Wk)1$|~wQUrOdk!}$~yM}g@OJs%*34ZMJVlhFVQ z&g_Nlj6?^QlmXxNUBw*OT_2i%mT$L(RCcX*UtJl)sN$l#E-#-`t2UG z;(EAaZtKSafF6rX6ffG|j!Dsgv3IRFwMy&>nHdt{XE3tdpoQ=A!`p2va%@jNd{Ewk z4@OCcE=qS84xaxCM)qgi1+#fSr0Jm@Q)tkwO8(`1jWR-RT>2^Np+d^;z&efyyds3q z|B!Uv;aI=#8@Do_?3KN#WPgx7Ly-}(vS-Maz4r{+*=1&nkiE&?sqB!Qy?>YQ@1KsN zKhpDl-0%Co?(;g&*OmB``7ji3A)(qdg_uw9z@_n(-n5yMQy^q|c@d9kT5bKih4#E~ z-Bbi){4|+4493HDOi6m_bO@-15IW+;5Oj`@!U^mp^V*UBQKoimn+gP4Z;E_Ubrt zNpO^aoGXDKGj~sOTadXmW)k=M?eSNYUrWa1s1Vks`$$E{)kC)j z?BiS^0u$3QQ?L9cGM{1#eGu$vLKe;XX#O$wuD7_~xkvN8FEh;13x0WL(kb7b#q*)u zjWKlV5$eqL|0sFVMy=#}c&+d;dmC4GZti{Lg%4YO0;``Y`G`v;JB}`HEw0?_tqE(n z-KyXN3Z-(jOzHerv}f+ z!dU`cWw|lpY`oJUV;UV5T`r9i1--^rScdJn_4wi%YDt5kr?39G-1yc}r@KMW4uy~A z=R;(JRx3wUa+P>yk!i-n=aGFgv=3R^{QPJay0Lu4mC+EGnXD~@2thU4Dio?rwXnAG z*Y@-?uMa(5`5eLeeOjf+k{~(l0+j(c`n)!E=a&k^ukKGnx9H2!f8bG1CgoIRPXvSO zw~L)FqgIbREQ`LiPTSSAJ!i zo7SN8}z9k zg0w;NUKTzvvA$s+mPJ7Zy{U-_KLSf~bOgNQy)bBJ)XYF(X~zPSkdX z->T!|Lk23AJJDU{+OG!fw|_{4Yd^rceU~Fz&0kzLH{#Um#ePXX={slH{q-i6j$ulb zKu&AFkwOns5pS-PztW9e-TccOiZyBFfDn}2dn@}Uj`i$`j=|uG1J@#iKIB)HxU$i{ z-CSQVP>Xv+eE&)8c z&eTfNAUHPn4EtU?8G~nQHg9fwp`HddG*Q~J5@@3Sb@}sWtz~QfvY!DNl1>o(p;sV; zhLQd^H_7rjleZRfh$#6WsHwrOHvqX8*Op;QyXK8*(YNH3lpS0MN$*b&el~jx*U*Ns z65bY7F^OFr(wZ*~vU{Yesj5cM9cCsPrrP8!?jW|p{dFHX%~oQ7hX3P z^JJAMk)eKj*m?#A7};|hj+;}D78{plQbZRU%3i1W{e(+`5@V{okAwRLr+RY?@bm&V4%?iU=Ha4jq}5QIZj)n_^eU?lYi z8pPV>K0cY-rH>$km^=V}msA5SLno8K@ID3cGFq}sB$TC4(Cg~;=(ACAX7mRVv7wz9 ze0In2OoXnTb0dUK+4)thsT%n|kf-I*L_efRXo9&N9S-?dS$$Fr(X0!{kQcaeIaO0-lKHNT@!Caatsy)Qjidm5eIH++j-&Mq1V2w3`4w zcAWfsXjn68vlwIIb~%2ES_>yn@Sf}DVt{UJu)h?nVv}VQ^oc7;cJhpeDE$Yox@kpy zn6@~*EbfeN8O;H)A~iLm>!2eu)f^8iTuUS-ABTK|tCPu)90fP3Cm17p88fqE-$C{F z_BIO+4v`E)z;KnOwH{l4!vE}RG|DO^0`JU%0qnucBpM}yu+g0`MM8bT5I2IMf3i_B zzEP9X=jC%yZAyN-Ni(fNKb8e(C(^3KITBUuxuff?4qYxA7rPKeGOpB`>6595A_toc zlx3gLJr0h@NGFF$FRJ6{_kf$pC`Cm!mOIXRwEyb_4816huyjuqGOfyk; zgm;k85jz+jk^0K5ejCn7#;S<*qWj#ILkF;1b|Dd#)zSb{$H>D2U1?mZP+RrA$~2){ z0Cqdc8;2P~nKMaP)`Gk*m&eWJ zbS$FUZK}3qnyX6GK^}lisZ?8ASCkmZkl&4u%_Yh!Eta*mw?~(Pv^4QoNrb8FGkacP z1l~g`f2kNZg*(4hGX+K*^*fPsG!Kj@_{o{_QXVxvp@!;xvF>DSaqsEvz7FfM<_KilWxIG} zqQCoHA@_%CajUmc+6gz*Fgh3;Uq834blQ^kHb z&nmW=_rv&j7Il-@%H3WCw?PH{fWXSp*KcQj{>W7mf^8s^3wcFQM1)Ed#qGNP@7JMO z%vpu^CFOp4g0<2ub{Cq?a$~DY8y|kQ=V|?|N4|G6A`@?KgVAVr;dW%96iPJTgc;r` z+bJy(;o9Q6&lkFXHLR1ru$-kjG+4xBbm4OmK(_3(auP|X&|Z6Cq25VAEm48OR{WGF z5&Npk|DCh3+p2(48`vGYPzQKqlY;Aa?h#6a_Q^1Otj7J;Wuxo-H&3O{YHxHe>1opH zy8(lLRu$|9aadu!B2`p6c$x3Z7iav*g70ynQ{Nr>7_k)mZo~cEh^l4Jfr#F`HAkEx z4Vc6FpDjEpV#6+b$g;qRa!onZxJ@~rM~sg6{GYOQUiDw}&ZL=I`pi>fBMGFAgP33x z+7K<&8BWW!>Tep#uOE*7{#Pj?Jmg2e{{8%&S4rWE0eYVpAymjmCL3J+O*W3?czCFo zP*kLFd~zJlN~rie?9}pQx&CT})<^vkFs?lNq(h(h^xzjLIzPJ;n8anK{^XA=kz#8l zF&k1V5IT%AhwGH~PfQR$e3)FM-oNPnduJ|6ST3Pho&oWmP`M>+vBEB434fEd9OV>?}@Hp^c8$mI{ zDWDwAvpeygXqTCG0rU_2n4Ghn&Q8IbL**NS>B_T%tjjwP!*Z;bVM&lpGMk#xhc3R9 zd_NarQEAqau8#-)#Vt;4Z8)pCv2h?4$anCW9~sooy{XgI*P-}N)%&jT96!J&On%Gh z@+o~%Bj7Upq-NyfLxXj?q3qiax!n~fcjBy1_Y?Yp=;u+63*a8r$z@p!W>gs_LL+12 zh^#Bcc9+GmPpWDouDTLta!tr{w)^aY6PrixY$j@LVS@z~h8{I8-wHwp`-`EpAX~Zb zHi<6*Rq1DwQz+0aMo@VZ`bJ*!yB}ZPE88TDW&OJ4iK^LehK!o8Mt}GUlBw4u9;iFJ z1kpoP4QZ><0y3GbENBR=qW>?gEHJve8=wywYjcdkwJWM8o@u&lXz+-yU}}8k28r*^KY%LU&F^Lqk)O!z7Ib z;vmMPGD~}V?;t_2e>h(7+0N$OQ3+FRFg@>+{&wCw8C=KnH&^qJ0GJMz>IpP13fmNtVN?Y>2*_GK zf#T+GEt1_B{CC!JAZf~`Sn-AVJ$HIK!@|eSh_ANR*16yP(Wm*8rlxPLEnwi^`Pr-_ z5=UoDo{~hDc1v7@Mj`FZY0s_S?Ma>jJH={`?`6-#=6_k=JC^&Fd*Gjl7(yUua*_Pmf=e2*nyiNo!W)fbO7&r}W_+je_4Lo#FKtfH5=t4$(t!gig6(_~# ztZ1yhr4~jv*h@8f?m|<^>1VySE}Ms$f=oud=^|D`JpqrXt(`5m2HReN?|HIJ9^w2o z|7Fh&8~Qh<@V4p-dn(YdxKpk>d_kiKh3`+51B-lbdvp4+pkTI62{!9P*&I-$3jgo#O4My~?Bn{TdYvwN#BlOj7oq=G;hL%(L-!1i37cLP6U(?YFuEYl*& zHu)%&=2_^Xt;$r2Fh8+i9x_Ovg&4J#y!0mDo4ebeXbbUN?{2FX@4jbZqtaBP5l_Rb z1y*;kHo~j<_XwPMJOTne-~|=`a`o>+`u0dVxy6d zRul&ZP790D748&A6m&Uf?+w9qHc7@A))l<`eQAk#%ZIkd1yb~fUT>t7rh&&LlS?p` z>KxV#%rQ8{D);xD9#b30q6GZ`bS4{>&C>peOXJ)&4==B@kxr0YWVbOa{$MGiG(dew z2-bWYyAKWVT>X;K4Oi*avNCIE4;+3+xXe>lOa{zfKEd}x50Z;#Qt?Z@SBX0AlJgiS z2+lv6Xc%_P*oWXXjVLCJe4^_0(uoeyK^ohY@*#~-js%M*73fWfLL74gX@Ix|A0!kP zb`oLHi2HPYv9=2n*LG15AvsObRtR zO7VT_nDqA}2)oCh6{zv04UQCu`k@5k0-aICf}rzyobOQ-4SU5tXlLwtN|ep3OMA2R zzutr!#+8NSVh%s*z|VL-jxHW(l4|soK8k|+UoF*f17gSzEYO{Ml0gi+kP9i+=w@Y+ zvW8CN^CnHkzdd}2LmJ73e5(*Hz3gXPO1wVBwF##Ed0hyT~0b zLy2p`Y}_^nYe9Ce>RBd=@a%J;LWvVTY*g%CEF8nW*a&vBk%q9#3c_SW1q%9ylIN1H|= zSHb^BQ8Q=Uios=Q|Cx9=vZ{NTA;6x=IJ(vE=t*F7w9;P^BMhD>6v({79puy4;vSj` zhQgoz)x>vdo-=J5>)(AoAev?Zj@X$ZB>EwBT4^jw1 z2ixM7>e3h;UrN~B6cLmGFf1d42g2jQW%i*o)DFO0QR? z8-D%9B9e$vD-!fVdv~eb+vcQPcsTyxFvxlhP9wqEs~?qbu_{7+Xou|fF7_irjP};} zlm|I=hNLUdU-c4{6q=aK{j;DcmYW->_nVw42_FfXi}B7WU6=j4Ahqk;X3L6PYZ7X9 z@if=ZhbHv(sybGp9|}5gM5!STDk}Mi0~J*dR-GmCOV0{hoZpW*1;c;<@+i`cfg1(y z4!%Z(60Lrla^OHfsbd)K>D&O_mZqT*DH|(^ELJ!_bjJHwLO#t=vu!#4tN{4@K{nz?WGzId4qf4Y&4BG&>H71g`_LHS@QWjs{B8ewXPWP7JOq@<-S?feq<+S|lCy~gut zjiwYh9So%n(H&M6tM3AvSTe_}rSx5&gn92nVPBN6Ta|!)06SdlW+RJu{yF7uA6@4{ zOZ5*eOAZd*j>2@yf zzmvUB5&aJjjQ?y^--QL{+jt(0r6NK@F>Gw#>=*bR7u*(9&+7)VK*YdT$^9=~DJx2Y z>rRtb{nJvNJT6f`WX2H5U*gp}J3IEv-NK+O$ceXeA>bQ<`(Iao|LU+AidXzh?clG* zw<%c$m>7~^(nuuiEX2Wyl#lNm_BrM))2o-_PnX?y$Kjo2hhrHF{F27BPZ$DzBZ8JZ zUcXL*dhoFE3_PKr-IgXv+$qy1*}mt7TC0Onv@epbQ_6CB;C(|Znc{$-hGw1C4K5y9 zpFLzy*u~HHY4<^d0t40H*ci{ak6tgZIZI|&HmZ@(qnuVj0TcC-nGHoA-{1p(zncih zSHAzE!4dMK8k5{UW^K6o+gX0^!3q-<4K@>FB4NbP6KOW2x;i7TZvz99!XJ6H5z+X+l`}?-@K2Rz0vQ70*9pV1mCHo0{~Wl}i26jWx!c&;j#^HnrhR~BxXOd% zcI{n}{XMkqrs}|DA*jp=BD+pcmt()WAFx0XCW z++Gu$;GfIw@T0LPPmL>kS0;#|1HRDa4OartC3L=oYzqcdRL>fF=&W6x%oogU?G5jG18;#06*dL5V@LGJo<>s=GiC%8Pi&?%o$Aarh$KiLrm`AP-kcu&`Wc$WeS9^Nc zN5nJB9%JjYF*asReHpWi`MXCgb&{-vt+>6vADi}qD;u)AJ3EzJ;>y*x(8Aj${vY$T zTd*t|^N0TdYKdjd9q9d#nQ75~ngiIivJ#~-#Sa-?kf6NS6fZ*uRSC1`5OSHgu$iXB zf%X^nPRsRv$ZKm-<;|OR25SooDl$e9*g6ehGpwG>g>t!Epn@G|+6C@v*?OeAR|^>8 zKsq+63y>+&GBq)w)=&kO&(B6raEXU(p3DJ~J-@gx?Ma@h+_ZCi5hC9`^|c1VMjBvn+(vFutkal|fFB)r;MvGgn<9YcuUIW@3` z!L=~8{t_xohEqqqG`FnE2LlF+zKvI~`(6WL;-BbLz6 zza7KU%%qWUf4W+)O7lIg9pUp{$v`sx4*^_wZ!$BJUexhy9fFBp+VdpBG?BrT z`(XW#e)21nB!l2rE0?Mj7aNvgp;nY*eP^j|-Pir&ySdzw{?|e*{zl{#t3+-{&2MBr zt4N-qI?c9z{#nJ265#>f#-murB(vO2RO2=>1>1%X?eulz=yLaq%QzE}nZ=%*!bfNuOZeGJE>#<56d zm=B2Gl>W$%#^Ih6lZ}WmSr#m_GY5G+tc!*Gv@~hmi6I&pidsx^mFXsYg5qgPNK~no zCjrYdEhm(%b!FnCVKYba6ILXq)K9Bs#In?_UeZL}R+Y0)vhjw6b@$gLp)C+6f`$GK z)8;Kz2;zauDWjZd{ZPDW^yw^>6Kmy2#vdcMc)2;GexaPt$oKxhn(FHSE>pq!t~X@;v5L(RhicDg1LqKLnKT!Nr|4!@3-TwdKmx1M);vn{2@T< zELRyOvO=2KSw}pi4<3ow49I`VMtFFxpEBl-oj4!r=9l`eD1~RRdAQiCQ(r!jSx?!1 z9%GxHJDUV=2g8wcOyo-CKFrd-)%=ZRE!tjKz?S zq%RH^s_~|dFMNj8wQEtfw)pk8QieQ4R+%OMWKAh zx7CBu_2i|Q1HVd->owReGVING`d?S}tcJ54l_~W&a@)pM20iT|6dhDyP7@_liqpyr zt1zguhh08Ur^lS3sPaYiS0R#5W?o2GNtRy4t_nusx4-j(}<+x<&Gx^*4?yq)|fEN+dK_iA4td4!!zytm>T=Am$1|M zP7jGGY0PF^WQomtCDH@*N8>rWZW9f-FYZUjtU9_p=>Ijyzx%z*GL<6&(ZF!9?-5yN zVLZ{mfA;msfb;s%uZrfphVSE7WffK}tttdW)u9~E^wJ}$40b~U>4;ufrQ)U*_CFu& zbXg32sKEb}<^*p1PvpED?^P7kYxy|79?>k42qRezf;8`4;>j6F&=vR9C~+?k zV|Bj}nyejcD#cw^h*nh0nW;(b`@1!H(Mc8imHxM?sp@00Fa^x8n1{~@H&UeN^TyYI ze5LuwfL(>qC5e>Mk$!3RnmS!wMl#VQH!W(z?eLtVC@jD#GW9LJh2am>UtPMq+_eu_ zrt@?8JaC(uQ=-#FLsLHsitEP6%{jBx={R3-6tlYuMX-l^s4$m3mvwj*8#}Gr5=!sG z?I7xA!V{4%FPJGu|7pCI>PLPgdz)q#(;K$$tB5pFZmf^F*q$zt&D(?morV#o4^ylf z*CS*UlNDs|GNgTXQ@gvVn3O%?ag>5w#h%m4(-+omGu7%K3X923smJn=ir|zdr|Kmc z&eH)$t$VQ*^XmtHoZsuucesk=^HRj%G`hg!oou$6Fchg;%~4I*5O**?p8j;s?mu}L zU7;6lIh0#Z)W&ai{)j}|C60K#j)WmqEMgy97s((XBXUiWB|kpqK@>CJ&YLd|qVjSY zA|gE8!BRRMu96x|nk)<{wOT(J(xR4>f7EWq@e!ZL$mMO?zkSiZ(_3@GKS{zFgNcAQzylOH+4Fs@$HbK7golxwm+FsFa|#Wo>^&3JCfgNZ?? z%RH-g;~f`6%_Fio66(+{^_zgSt$)qSF#>QONKe2~G4P3Fiy zcdV)_`?1ZT!YNM3uNQ?aQF+WZA{NdbF|!_AX>y_M^tQS4jbz@*jpLd>yX@ zJaH#uv})j&piU$_;;bG;+jFq4!!fW-F!j{@EAzBQYS;tSUBMdm%71b$_pmCP>~uM5 znHHXR**hp|e?HCEy2^=V@+>4E6Sc~drB;9WX{s_+@wIar?w6Qo%0`LDw?xJ}nQuRw;y(or*=8`;huKY`>o2!DF;<~ za-OE<0lgu^YGa*u_w#5tu4ulqDi-HI9expq ztVCe;=%b74YtmP~guB|g`X`j6ArB6woZoxSQ48hIO!Y)d{_6LkMw?TSB`tY7Z#N7C zA_M0Tyt&!dk@xohRG7GP{uW2Aeq{(_rHOgiKl)b0SBf;Sz3SEFY00|uiERt5WrQH- z+ec)LB?~_Yb$)h#F_Thicu0S?<_lS#^Z3v?GTrr;k4N2UOz)-_E>+F*j$F=mxU`Kh zvCm1zG3(7|u~2J_Xru-{nHLwr93`>h(v+f3UiVB|HcDMMW;Pw{*nVcrP+@91DSpui z|3k!%(TV9{;WHt6(!jy0u1_@`H~&16_45L((kvS!kQY!skP&H{&5R`PcBE!Skgx$6I$UM|vzDr$5?Gk$K*oDf%z(FvX zvy9Mrf+9pcP>!Q&S5zodKF3-T?x8!!t8kyDr~-G3=!g61GltS(215OrA@AvX#XSpU zYX-t4pXDxQ9b((!yjW~$+u|ht#XfBQhp^+?Q~q|1eUvpug_xDqw23*cS-$E*pToKM z)mz>3*A+7~f~VKubev|;&R&#=O@#SeG@&R(X3Cyp!lVPDTSo38?Kg{a2knn7-X-!j zAwT~2^DM9{Z?cdmk~MC4p;I_!(Dyg8U=U}PR?PCe8wp-dWUpoN)t1?70m^oXCzQu? z;zfx=B`ute#s_nc<7ARJYx}OheJjn{y&^i7!<>(vN-#UNw@KF$A!v5ziyj~IN%ZoX zIwpve3=M3u6aq(lZWRM}5(s(61(X@j!f2Jk-pK(|JrGsxJ#U9_K zx3vI~I$7Ok`aI_DdILwv$cs{d0bl!%q zweIf)`)|KNmcvK#7BQZvKfG1G95f-z-ryguXSnL_agd|eD)n;DY*^AS0#lj5TVA#O z&Lg_!J5rmIt$)?0hiPafb+PcC-jls|bXk4Dur;sn+poh#Z<-1BWbqsG7WsY4g7L-V zmP?DJ{h-}`wgkm6Epq^-!SxzqK>$-w_u^daZ47!4uedlMkiE$9-hhAz!6g`7;d6C;;RVW`-1L9o zgZ_I!GbM~zsfMfu)Lv(zha6XE=U`o1Ainnp3c)eqHlN26~b$!Vy z-o~Q@52A`4%@XT)ej7LZR zJxF}udno5C16X=n+edtr&92)N;hk%-*v>W5^VcgxV7$U&kRpkcg|5jbwYX28;A*tE zd$YLfzWjr-lPH|a@)-x~>1IKGe!G^xWOkgZ?#wWRu<{GmPD6e1&oehRByA)#sE^QV z*tx@Obrs2{%ly}lAoBo@KpGLZh4h-9!pY*o;`V4taiEJaMMfGEl2ZoC%lujF!1!73 z6uP=fl8N^NoUbc2SyT;24W|orb9ubq=NrNOMj@OAZ=+FlnvNwEZg@ z(2>ZyQHHZD>V00N2#{g7w-xErx}i>OF0FN=D=N9T)t_VasZ(@tp?}OKTSmq7Ox$%$ z&7H5SU{BuOegqVRvqe1LUPv@%JWn>Rln17NwDojQsCu;m5HlX5a>#gZHRM)l{1^4- zU~6N1gqk;t7KT6EPTT-T+E88d*&~2U_k!6_OHw0Pty1QT&Z@ypx^D-Ve-=BW79!&Qe+dWB5Ny(mk6P%z@sg))Pm_+GO5exEFv)^|7bKHqo&%YQgi6m+}~$=23d`S%$Z=u?7vx_iLx#?L#>D_9n} zJj0Z5A53XTociAu&JHY0$L{@{#z(AZ2@3~YR;iW3OsxmK2Al?emSe>j(g#2%gm0bw zJ74IZtiDYTe%X?+#>NbkN%($FCJm`zFP7s~!{YiElK0=+9M?E9y!l+ZALN9^o= zZ|5fgs@NX-giBjhV+|T5<*@td9>IZ=6S#Jb_XWWgN1P8fj6O)MiiO01@Y_b9TG~FC z4)%P80qjpe5vc#(b}c4;IT|bVLj(w}>LoTdHpb*a-~-H)i$%jj9occd%t#4fczBCQ zlV;86H`19doL;>4=8hBf70bqGba{rKQC8YUY1g_vw>N0VUpS3BD~=yj0Sh3tzTOEB zUrt_96l6^hx}1fS*dK&ZRnH=20=5e3I^2B9p4B4+A52~V; zXFxCJ=H>ZKPU3cItle z)0vo#@89|2HdZDFG( zR3ozbAJgcclnXyQVSorED&O^)YI~o>t3L=gBWLH}2+_UP`SO78ZzXvZ)2K}?tX|kE zfvFkKWW1Luns7NYvnG^AHITP^_p}Y8g@rVlK6W*ZIn}i!cw6w}_`OAiAG-;C=57bk z0$`9^U06W!17_mPDLG^v+Jom#Zj#Ny<(WeAi(u;lUwa%AI2f-ljE@AoDal`v1p?7g zaOk6&G2QAx0F13LGBXRd;qN*BK{2a`E1Lu|ZfA|6$1e_E-g~&XXm{SW;w;wFq}ph9 z=DjzI3X?3KW;P~&|BxgLTZx`D^5ArzF^S_9_7%XlZ^`&#VqmZ9JkS%$C~Fz{YFcH* zK7jf1!u-Wb-6;P11soh>hJN#|Hx^DrxOl>P4SdmM7{C3#M1E04Le;c(Q6F6Bo}2El z??vv2D%+%wj0p=h2SiWtZdbk)MX4r^()iG?eq2vfog|X@81yZP2zC=4(uT57MIL1T zk7n9N7~3Zo5K#h%Ww;E=v`fbVP8Arj{O<)EcrS#LyyM2ju)`#O8(?e3PKwhs9*`xe z(~%*(Fji-q-qa+jsi`Sto@-=0NSFW1ej%I=SHEuVZp&L$$YB6XW*${(0*Kl$xh#mA z5|y)hap94FVKGJgM@UkEMYaPN#Y%jHBst&o1K-futSN@XD3jwL2+Goo8u2_)(P`eb zt>kQaXbB{lVey-fW4j3ZuNi`?TAxh!(nj+V(S*E>+&Eq#kZl!#%<|rwCYDCb)bTa; ztLd|aK)m&nM<5l#pfEgt!O_CK)`V5uvN={7rm9` zAXNNu3l!H`cc*Z>auG6?!g-&NfB$FtoGllEQiFQyH~1_{IA0dMe5hs7>L*PkfvTYS z)lvIHPY888BrUaRED+Xp!$}@WZm7lnV=EIi0d1~Tfj_LmWZrelj){3(saJJ7%~SqU z5lOq@{kQ+%i1gd6q@F6^Rr+KkkpA47lN@{`veH2WoWU$qXm4uKFyLd{&hzp`&LKTPh&>SK)^#(cEb z>^Xj}uzd)CG<$t)R$q(Lt*wlI-@|ubeQp>!trd80x6vs?t@x}*Ha=h>yF8uvaOIyT z;~8~dAHkH_?hJ393rqCJx5om?XIC{oF%q#s#zQyV_wVxm#Au4k@vQmYBe^hsz)mpp zl#26Y|I(Ay`D^6!Wk%ouurV!RQPHAr90jp(8l_v5+S6Vd6N)QpQ=WK1OJ=HsP>XI33P#0FZ0dpiipE@D0 zc}W}-;49ZcR;h0#RVF1%wtWUw?995NNgM|qL2Lo!V=1l$uB}z~r6?*Yh{F{`UHM&4^ zTGP_iU4!5$U}%NO{?e7LsXi8w`DfJnB(Dz&FEGOaJr7nxYFZitMKm0Bz{NKK0D}61 zzROFL+X#B*n!~{#C7)|Z3+~=rwX9uVdCJQxlH`ANTH^rBm<&VT*cgQW7UAS%;89_c z0)Uko2khIjUv$iXCa1;zR4lo`?sf<*ScU)*`|)=FI);7&L(H$2eoPYaGFzPx{QKvg z^Ud>m>)xbJBDCg;iz6JLfx3eS4TD&vP&h9|K4Bf3p=Mm{2 zGO)yWJaUIk<|mYK=4*fUMDSq3mxu@xFhAHy0k8wivj2VlKk0Vha07a|N7EC)|L-mM zwIA|9GeVI?`isupKA~-&EG?0ttt}MsoBE()Z03cP6*k1zI#y#;01LHnmbIL*xMj)~ zspGof0tRz`-=RghvpvNh<{kZc*>cVdIRWvjYVlP-$ASkeeKpYxJJ?D@*`Al*n|x${ zwg~#f?Rj!|_eq|8b2?ywE*4B1;7K*~y+L|4-D_I4;4WYFeX$MsiD_Jca`m^XTER_a z07I!c#%x`7)TxFscZ@+>dt5$nwl5bN|&9%}b<9<>06xz_eYsU{%Op=<_= zT?KVIG=Cai5twGHlDXM7PGVbq9wwT0aX($B2VhHe^)n{Iobfl+&6Pup+AIluJpcXI z1(9VKO!5u-;suPv`p_QQ+TD($9dNq2_I7oxg@`ZAF31}tmV9o2o&bIY){S)X4;O`ap%4V9(jh>w}b0rVQBpNF$BE)Uki{(r$&m`~q^+lRJZRi#ZY)`~n7h zdy9=y^jWRVdi0>z&m{GNyj3^PkI2y&7y5Op{ZiO z=nax-(ll{$dco!|nhcm-f^M@ana0U(z^_Thn?W_&kdvUW#$74^sERgJ?(ilzdg7$g zBs%1~@{;pz((kt^=L^RR$?lUzqF8M>LmlBQOOEfgZi50A+S9z)b>~I^$K)4uA(978 zVc?-)SqBi+f#zu9upi&@X{Eg+FSqw=%)rn!E>S{)*nP`rfRq{)OSI~eMRx7&$$uJy zU&P|+Tyt=jER+T+Y+SsL_&yUbO8qKL7&KQUx$_I0tU>guVp$eu?)Q4?4vQy?89u7> zz*Ue1#wv0na3f{o6~bZdQ$({QnQ`-rp^M#pYsh?T7KsK1wBj!mXL>PTlC7a|VjrOJ zM=qHxE@xJz8vrCyEL>UGpe0;q%l8W4@H(aZNoFxrBw{aVyn|;kXfM;;*kgpa>4kh6 z1J~SF9JOK0D)7l*PAfoYEzHf6I#7|9bo0AbI+=h{1B{cj!F>6bNeVJ~;BaJr$mc~~ z@himO>gnesF`X!*FiEGQV!D|cc4X8)j_tS-iulQWYX?AZj1Ob&UHjLWtC|)KQ)J%* z3yw;z^Ao~QL_1Ewf=BVW(s|A@gOT95W4)qK!V^_A&Xwh!SYQaVj5xti+=5@`08f!& z@L#KU7Jen}-1v+?xvdI8aTi&XpCVwbLX*h%VT9n&%0cdDU0oH9Bdu?IyeO#p@Z5pO z^X?ZO@*blb&Qi}x=(2-y*_?$k@G~LsMNd_*d0y|Z8qe_;Y1tsxTh3RF++_^91A9~WAz^kTJY|L zAfpO$7v|*!o(Lk=qwU4exr{*^SdJApcQEqT6H{g<6`uZlk-JT0QyM728j&01k)E9y zxNuKW7~SE9Pf0j`8cV7cK zxLFAA1tW(lNE&=DQ!7t0xP$(_zN(5)2vtG)Yd&I=ng+8AVaVo4!pW!6<&l^906cKJs6F|2The+M0W4joxIv=j^0i;a>7 zTSpBu-sv(t?vC@KMWfH#lZLyIAJbxps2NEM8p18aX_LfAqHjJI0mUP2ywuE~#m~e5 z0WW1)T8wXD_luYmV7@$4-{OTF4%g`p*7S4Bnz*({)E5gI7CA&jf}e~Qq~?k_)xE5F z6ymSK9oT&1ojo3#B0pN3bBIE8GIrtFh>0ny2DUNW*}&Y{9zCZj{%-ispV50=@ZQ26 zj!_zNxshOD?9eGs561B5N-PBy8d+##7!&=43oQ?3q+%?Kpa`WqLj6pRwT5W!Z_wp4 zxt)ynAp}44_K=XI^%Z0!)kRXi29!BuMz#7?+RumWIek@BZ_b7TkRK*uSFyvJ&jBbk+Fv5dAL0V#pF^i;fWjsV zkZG-cwYDbbntA?r^2;_CRqx1%Q^PCZf!jUi&VxXG(9gC)mQ4<^%MKSCVPx9YhwXkq zcE25f4OCIsBV4^K04)0o33x+rPMA43#6c+`w2ccC4hZYRC?ra<5M@_$gRf8t znw2y(px$`;MGdBaNobJd#<7jw(j)?m$idSCw`iY80JKBS3}iLY>z132o7SxB*{rxe zQ@8WO7kl_z3rh^aQj1?!T!_(~VGt<*JwA?05xAfAlkh1mXI<~px^JGlKng!CUlrz; zfDA@O#RYjrC=mc)BSM5K@&FMCm zM-g4dg`mwg0&DzsRFVkk0i)x?|8&4AHR!x>G7T#mi;Z(aube++zkpyy_~J* z%|o_3jGO?FAvlpZHCMkDfODFfm9;iistb2n5Nn`xUI(w<5(C&Vn&-pXp?*561UZmQ zntYG;Mz!+_m3yRI&)@STsEQp-h6Ko{`pqKXuBV~`nA-51!0$hM3-8qG6rFEV20(MhY`~x5iFe%7HrDdj`fec;A zHT4_#Nrq`G0KlDg5EK+NbbW){GSCf`v~d?X#3B->moS zpr(_qUSqZJ$q#Ss>J07b|K@xx4c;DmXPFPWc2DI`e@_23IbjpuWsH@LL|oIWNcSb; zJE9VghM+fyqd33UB;=_oK_<-(4b9G)@Y)4L^|X8%zHj~fpkz$<>Z`MpV!XYE?{XzM zO)N%vPe*Sr=I`d92%S=>kWpYRn^77%SlJQ9j=^aeM<>#}SOhNGrRwDO?irbwWVo?E zUn3?T3EzIlla<-o8DrDcDRXX z3-rmwo5Ij{@MM8AUP!b(W3KLwF9ZwF4i9Nk-9li<;NPQ$uSNI+e^uDnlYSL5aJl#8 zP7-p##ee{Txm4u7ndFD;^2+U+2#Z_6xzQe6tz#PmnlClC$jLKQRBT+NbLe<^tAWgR z+8Gon1rv)!II8ZMX?O3ERlUJQkk{p`OK`QqYEN-ib7BsEQy`r;%alHdk3Gv}*cjcD zXH3Dep&k%(7gfmpCN)as({rXy%_pjzPka242h5`DXYY&X(}uj6;accASt^?K8)~kY z-UMaFKRcTYY?f#!{{HNxpiT|%zRgLEJYKunduNr#5w&WMMTJM^k|aCiIU2&S{|6>O ztvAt>e>?w+_nOe&5HLEwJ_{8nKMzFCh*B!JORY8N|5KvXKg;Wqo41-5#8MRh*5G$L z?o;!_8P73ddw7vhk9X&(d#X`+g|*X$+@H@2ab=@k9C!Fhap;Nc=Z!Kts9>Nwd!h6g zwW_RRqU-7D!9zCS<-e&5WTI~K!+kz)$=6yHHbX`3m!7(QIuvue^-WQ?#M~^oT^xrx zrsqE`4=s7IVag!%YBNaS;_7))_RjeoU{M;EBeE#bzqzjVBfZR8KHI%<_9&ZNb!bia z;a6aEFYrG>kKtAeh4_l*+`=!rK?-Aj{0pj{hr`Df_2IEsHDmUvfF}|@K>~H1cE6tU&x@%H13#EmWZ8C(dL2`6Aw#~Ef<_AYRGN%RW zsATw)>b|MtB! zltbv4XEnnkii!RqPyGEOC7Y=tF5er|2Xk4RF243cTfX|#pRNy>MvteM%hs6?maO8y zSu&M%O}jY?chmW>dq50^1E#G21i za-kA(JT~abp|HSl7_Iu^t37LwBz^9n9X6^hTui-+RNuJ5^{l=u_-bx?Q@5{4c*aXl}kiqEew??vFp6UPlOoou zU5JR+gONE$C1rKB;G>!qxX*8gXTf0#8}ZKkP1IbS9YiOf<}h(~CZ1e|;hGN;c{p1x zvFm>}Q(w>BkC&N8|ybg3}CmvE*TU-Ax+g9Hpy!)*qlC!z@`*%d7awd|B z9bZa%x`~(9<-?*9RMh8+&l@&YfhY>;mu8iP?r2J2OO9uOP!r>a+@#;X%Cn&!aXYbd zg$WkJ$GfQL()0j=%7}R)NM&Sho+*B#-M&T?!^=vkq8fD4l0~eZ)OB629~yjzYcM7o zsao1yx0Dq2N{F4~W23`)dFmzh=2t^klc#TvI{SWX%h}y5aktij6Y*6LoC5lXxByD9 z9f*7vUp-Ga`b;Ani&ok}9#4jk(I0=CU8C9khJ#u=*IrrQ_%Qn! zD`kZqDcYyu%(e-27^f7A8Qk8^`q72^*Iv`J=SWvvh6Q=5Y{c@NL@=#P-}kELw%zjh zaq#p*p$eGxLp|&W<1w2wS!wLV$q?i*GSKFPuMpVqmJ_lK1-J9lRRp}(w(III{;#gH z4$5+k);`_c4I~GjnG4 zj5AwbUf_M6=U(et*ZN&QmElH-4a(kvj`FsA`+MB>-XaNxRde2JMio=9H>*WNMH}tx z?ZC>se}N3h%gRfaspgXZg8yVOf;+!*K3F=u2$$`Eq`x4;YS7Ori63%yEO0k^LO!~p zQVt`%_vxJnO{bXzOZ+Oa{1z-UIZp~4%#jeFtIW_XuBfT`uHX^0Q~WB{Bx9zCa!dy1 zuYh;A=Zr z0Y{&U9u;A>iLK}1%&YdV)HqmqhFmPy4xTTg6lgQ2_aCed`9^ap1I2>LAalgJthrK^l_{lWNH@KFWeR-u zo4DjCU;5ERtl=ZAWi-%ExTwx&N%L65_bM%}~lRa1|z{8W5NY z@5R1YW5S`p0_@Z6E!gN91(FLV+3m0zPU@k(wUN$H^9o7;gF{?~7L*m?L7f3R|AbAY z(uYEa_PY6Tt7>kAAXocnkV0xl?+}HTwbrf;Mng539jExH`M2Hkq+2zvGY}bA4LOM> zKunEQ3H!Zi&MwFB=WV!jKn6jz2X67~_pHKq7QC>?#@WwE7c;W8Asy%5-+!FWb4QEm1S*^6ASAuj6D6^pv}Vv4$q~6=?1W;5o3mGiqnbFJ)+-j^E=rM zPtF=6dcjFT#67(;vzRNWdSE08w*K>nj~~k$fGDRgwyJgx8>H|~KEij1g_+f zk?UcnlQTS=6)7dPy2|*S_407Fi>)p02BB|hsnH=5Thu+4E@50Pm=*7RD2DGOis2z2 z%cxlao16aKzIACGV;-spSSXY`UV zykA}wBO7fh)y=m4!wL_FRS}5}2PN9HEl*k5+>Tb)!N1cShqjOtDX@UHC>fO*~7N zeR#*^0Vc8%FPt8f`&{W#mgg;E4>UJYG9FbwA!VYCaI%z+Kjc#&kAEdmTKmtgZS})T z@fE>A(cLWp%>1!!J1KQ~wsmsr$fcXNVi$+~NwY&E7!hAnrd@}&K1!mai1EpMz>cPu zC5-<4Z!Jo(IBROkZ=wGlM_NFY*Fdk|FX~q{uC81u2xzH(aZIvUBuDT5J?+K)Ax!td zSvwrNVT_2cV3GMtia37^*Xh?gS6z;ydo_y3N{ZFOq(hC>w4x6A-m0d#vqOcMcx@JI zMiZKC6BdgiYRAp-IA=6S-^ml)mF{c4A?>fyARP;CNAKR)huQWQ;)LMgBb!7~XKDF&eP-SD=vlFgS9t<(F)6nNPH8 zJ5^v_UAHlm10h$0Ha5z2?oDzoq#LkC@H#$|+=%E@JA7kjl;VSj63AuMLZBl|jpmZQ z_@v-h@X-c~$ZONK=bD_M^76q;+xc9Jo~<{~BTuP4LqVn*$kq2h^8#J_ZR4-jf!7L7 zsmBxi10je*p}lf9u7IsHR_|I8Mn%&`tE9cS7~ANNwtrTbuGZlfg|^ppCE#z0pctn~ z60E^0TRW5SqyX-B*5yN$p&uGOYa=35Nh%4_5<{oozO9%^ncCR&suujPtb{WbhPH!q zX@4-D85u3~U6R`WZi1f$PO%2yf~SeYsx&p2XCS+(``0g6^Nlz=J5#v7o z3Cx=Cd>7Z(S%an1q!@ZO`>-}*35~svV4#wx!3urzMqJ~>4Wym)Y;WVVn}#I|I{4hb zGscA@#N%&caC+qf4j)CPMIas6&ou;3Y^@AAGIb?aZG34|8`dR{lgDbUc-QDKN}_%!P!`Z_;VrY6W@{pyJj{t7BGlj7>_LDXFd7AbEI z3eQ%yrzR#capno>5^(h3$q`29&CZJ7@>NA-xBWgCm$EqeC_cAvPg1Jy*z>vZ6f1<| z3#%{_s8!Xau1N2tCOr9*@7o?x4bAy5PrfNNUh0gIAo=Z?!LZkQlLqCsK!!#b1m5z9 zKODHaIKf0ig1bXhZak7x*=}#U4zJToLY^_!+~d3t&i7)x4nKVQ2%Wa;7AeGlM+euz z4x9SdJXzfC_iHM=-r^sJ1~GDCcYhQEtG45?*qvD)%AZj zA%(M+g(A@5ca#6n8m!X!K?VIwcjIB}-xREHwY+|G`X+ULDq?dAGU@YyrQ7dwWQ6eI zQJk6C0vGV>AvQ&!V!c~iWB{NkAlBGcKi_j8%^bm?(=mTP4%JX^=4?poC90)WSNu;( ztg%9j)7Ki)8VcFt2})`W`)|H~=LPo(;0Zy$ux9FjBqY$nV4kMZX$rO%DF(l}QB9p- zeNHu3uixYBB#r@oh><0One%&AAb2Jv*)+;A0iGLb`rZP?fJcbPwy&c6Ox`VxjPR#M zCq9<3v+A=T#BgzBNIPw3D8Z_rX85%YxnhCcOVwslu`|w^F+hC~DKl)P2rJnF4#uTV zD|Nt>deFKQAGutI@V>?mOYhfzh~-Hq{eRO;+QLxx=;%#cFB67Y}Mg6C=SgWk18zh z3%ti&f2Jjgqt8wTD~FJ4z?Wgrol^1bRQEUMWAxoE*DfpcX?~n?5zsTN4wx$tw>V2n zd=P;fCRV|i?(c5oSN_b>6ajpTj!XfIcc%ezR5mNT#LqK=_hRC9Z(*??e5=Rn-yzsb`Mu+ zx(=GCjER+P!<+QCJU&QxV>c+CKDv16fg@oZV+ci}K<8I#|n8%9lYZ z=gI5DK)lkVtPQRXb<`K{v!sb5yC8^FAZn5Kjxi)UERQ>7WYz(Py z&q9rLff`McBNav^mh-<`3Z_mM!USbzQW=ttbU6B~%Mj$tcqs=AU*vL{L323!c8)cF z%^SED~bod;wfd0*C?#>7g&XV+}rdAUVaZ*?chKIC< zIP9-Se`{t^bny_0W4bG;1XLy~SE=CsV2BiLB>`P2^baxp}BK zlN+uS)cx;=u=7`sCVai>5s_|l*MkweySs05p5ZA1Fb*VtKR?9MXDhk5$Xxfih@!eM zP%dS&c&`6-OWrzG)=j`!6|z8?%k&I zEP6ma0G{vr-U)=iV+Kn@q=bBaVZ_kZ%5kb_B2|jXH#jFiFT-3SCf-H1aBzT-I7n7s z3nn*iTRS`epKfsDTNA+O42K{_!h;E(N6==;Wf`+1DQSXnfdp^VzSjETQ`r}qt81ms zdug()OifE!S@PVbz5=Fj)fcrFl?Ig5_O3XU;1^C=zwfmKP;6=>J>Jz<|d|(bBBS*zqKRm1Vxe@^d0R(tRWCuvN7CULUEF%mv77pDN z?`a)x8bS(f*k-*4JIhw1Z-RN+JzXj9YE&)+(b>l~F;G(A7GXN5~etE!YIR%LVtjYn1A zkO;4>`2OqBlTN?n| zZTLSk*#Q=F0Ir*J(>CG9^7024$hUK&y1Jgz^^F4`tX;!7SaBL7{QhNjzVYiJFq~9t|E~mp^?@ zgGfpIF*QG>n0Ld~#KnbU?67tZ@(PY?OejF{Ht_Yo-#QFN&#d3-a z#~!uk8-)88y_UT1-bI@l+!n*i4TFFS=z4+)Q%LEotSoRcjM(w#YjYf5>)xS?TsX)- zZIaj&z{$5^q;~W%M!69h%77m9^7LwPgB}Nq0u&{MHelNKnpfOvHQMa=7+T!k74Lv~ zi^RFIk|Ouk5d|^2YD|alsV7mS6HGyZTm&OA4jTB-DJdzT_4bmGRE~^<{p$#_SV*A- z8|SCbWbtJdN!Es;rmR63TkoQye{Oi#2*^ok6`=6(1#}6eN-XmHdQ;9jITPsm)XLtK zY^)dUt9Cg-?~?=z(6FFpKHfVDR>uc9jBNM!Yf5+8$;UdRF0%v$SrYUOb22*O$OIpd zX(jM+*1wXZ9(I^T( z83s;=cfuQfN{a6zCwT8x+x#H$gbQcAO3OE)z*!w;{W#DzG2A9$JuhG1L=`%jwJ?<$ z{lJ4$9{jor*RwgRxi!mq{Xl5{i{ed3p)Bf<0^I>)h9an|k^C7} z{_;=|D6VdP6gEGrsQ+WNGM4HvX8Tb==s8PxO7IKJMjR@~srf63PeIF;$R1+GE!8_# zQ&%+MDbiRT;|}TGw29~K4{YL?=#{sHlYZU3lWCzI7m%izdleJ-*}Hkdd3mW+5On0p zQYS}8DKI?E5%dlF`_Z?Ws36$h3@KIwOl-;MkR+xYgdJ*C@D;21SRKWN7^AK3=hKM^ z6rY~aI*I%^X)3#M=N?YPusLn~gi;d{P#Z&f`tC)m|FLM}vwqd(IMNlB*&jaf7MPrN za>@N;MK=oa*ZbN}hLwq&j8Bu}f^5P`BPQ0Iw;UN~PxNi8%>@^8Or=_$+14`o=gl~` z5{^{os#?FmHGhitbs`vsEKUVM6Kf!G*UJ(Y>qgqw%7}niXL+^8*dvNz|46SP#B{JN;u!UOqnGTy6L{n%R#O+;9d&-_@$~c+^m4ZKygPYG zHlLTBE?6Tv*4HOG(Xp%pP+GNQ!5u{=R2yOu%Ct=NDf2%+*5bLoK&@L+;Ux= zk4p9L<_CYc4D#VDq2RDq*u2q0KNNHRZeCloc!VeIvr}{G)f8cWoD(%?W7PbBq`{W> z!nPzj;{}U#JN1#s-V})%*w4h=_WhtMEo-QV;OuWYKHq9O%9A{p-YTuEXi`z%MzhE264w;z^Fy7X>3kw0eGh!kIOxPq-$Ce~8}7*o2>f?NCDfQ`EMIyi zn=-V;7<=wKu}St-kKfLwV?sy!0hv+C%<=aUXUL)Ngz6xx>3I4jfE2A~|GJM0j-Ora z-GrO-_CmhK)2B1H^8=7w3kqyN!7Jm8gsdKz!2*NdO^m(u=1Q{s@*i77=6j{Qso%c| zP*U5!gmH2tSigMbbGeibdDp)iV0Iz_9>?$9!9tJQ=uNHOh5|BPB5|o}ruN|C>UZPY zm_!qw;J^+p8_}(c=8aW(6x3LtCG`p90QqR zBuCRZW^H-uX7(j_K%%8jpN|>e$aHH`i0cDt2n^Lh)aZZEDn_7}b&StCT9N;YnrSqP zqG51+kn39Ny>0O$RwCdzKpJiM;*lnRWOeZ4r(VODUc57VX0+hpXYwJ(Svsez-d!I& zMY1V7y^?2yb?b8yD@q>&pJOWOZXCN98iv|d_s#i4L*Fk%B(vo*f*YUO?2Tizb{HCC z7gc>9v}7PVi+Nq%l9m_4Nh%gIo)nj-b7(l!zunxMfNl<6VNsl$!0q~Eh1qF9*&Ah^ltIYRY7 z(@$w;KW$$EQeMlU=JaymF5yjy13?vKMq(P*(ve5_w?%2<(vjz$Z`Bj9>*|;qc6D?+PEv;xE+F zUOsOnhkpGd*`j{By}JSuHK&Bp_pO63`E*!aM63RP@Fu5!n?opG`2i&nn|>WKy%&aI zcaoQ^)9|#2LPT9SlVbKS0V>Bs)TC-FWpLK;35v=~q{A#I5Tp-SvnnrB;beA0;usSt zoCsY!cv7f+aDJIB-#siMo>u${3buB2pTGDhGQh-VQp^~!JM7InL4EK-Op(jvPnkZ9 z25M@$RM~2$NjP+{&cx!FVh7YRw}>QsBac)Msvgip@UJ~4PS9fz#Z!)COn&`ZvtzCF z%bP~)RJte4icd!=Xlc7DnqaHq=gu(&rD9`K!mgWBir;``WE!SIK&;+&mkQ3Tqk#(3 zd6Hi=QV{J>iA7SPM4 zKR8Sr-D8$cVe(ElS;W_{M%0-=$ty}y9`Xh0Q-OnzsL^Xhj_ z>W(APD~qWS(@Z0rQO65qO_FjGfp0$J+_;Tb(bKvUZ&W&668}Xoz7X+d2tU@*j&&}{ zmljZ#?&xs3P^mzVFrxx{q0~O2%XUp7X;Sn!B4!gEe#O^1=u$zZaucEB^TBh`z9K-jYS?rP}6< zmQvt_@&*%WXYXai5_A0n@&Vzi2~-T+z{9}F7&By+LqW9Z8_v9On+Xr4nG_mw`B(E* zIZ!^Ct{myxf20AM)#dqXEFLA0 z1{mi}-D_i}tNwQC%Diy>wd-0yY&DpeKq*?~o$>xjrsfnNpY293OG- z?%!yAZ1tUnwZGo7(Ja-2)+mu*gINH3TWU7t#Jf~2KeuvGn0+l@thV`l#`_Dt9e$}% zY31g!@e8G^!5rNXHJ}dOExclalH_HE0v@D zZBMK9YG3^Z#gw9I`aVvlYyzpP>o?u!V01PtRs$=qz5T9iN|%iQHzI`d0Cwmu)Q#bs zqAb{|?)??-QwhAnLsNfuJ z8CiC|-p=b3-r21Y|CzMIuQ4vXQb(NYJ({MQKtU|syXyAzq&9xkhp29;hgNG`bN{p5 z#Fg8Hknf~Le&J>Xhp(Q>#2c}OKT8m6cbog3ezk3-pCHFdviRo@f$As>xCevFmfBFh zc!)s|jAns0C4IUhTPlvxqqu1M=}J%!5%dMrY>#HQ)zEtrMm4*2iLYoSG+Kh0lI2r5 z43Jab-HVhIVqf}oK6O-)GR*B6!|7_VIMjQ$`oy(+=&dfIee-s8!@J;cx9T$Pi@p!* zp0-a{r6?2F(%J@9XG~BR3LX21Cs>3htZA!9H4WrBkb0Zhi%Q>JcUR_Q1)VBWLVSRinm5gr zzZU9~)|_$mFN{-Vo?>Z`2{XNIcz-7LQ}eHf^=eXUvVN{l?^576>KFdpIDYn-t#{SP z^)UV7<`3)6u<_3Z-&-##3;P}lq41jXS24k`#ShqfH_nRW=Uc-jbHWy{ze?E8)m+7N zmH$2O-#n42vzYWj&AaqJ6v_6W(A)o8sgM|-c^H%bEF_&1;#FG_+*ITWWLgT(yuY51XtY%)A zjcokeFCe1RIa5K9#=x^S`(zVWK>OSNu%pq1xy!D!*F zv$V*2;%MS7{roBtN6gCULyOytw;6HD4cW2V(3IyNaIW(|8&B!Us2S%1QV zSL&s&Pj13;j)%D%qO)+K|9s6b8cg|!e(C*vcIpgkE!A9p;aDzYn%J+0RZIJ0_(-|K zo#^u+-c`cz;m|NHl2zA;*cdV08p`7odT%xmy!+tO8mC~=w( z=ase01>Q`#=jBZ5F}xgi=VkQ*3U^h;mES8NMEF}tQ_+WbZ51ddO`ScWQjF`1JKnui zgNlPsFDiqFF@>U7hBvV(h*s$2UeMlLS2>$;_xEw9YK&IKNcMLxptN|U`n-?a+!wQW zrafp81K+{mm*sL+J!-o|@#8473~FY>q2(`yqZ^d}aN^VK8%mAVny(B5Rp&m%pRUYu z_G*6y`)rMXV6S;4lxiUHrhEMbhHoX5)5@%QC8e6Bg5acp1q4{-foL;ziL)R*6Yq~O zSI^LBTRJGKuUE`6UOSK4dZ#*g&^?45gv|b6==**FR*1!d4in_SX^e%Tihm+I6{`@{ zW2*=ny6dd5^|!W~SF0DHGAlrUZClUAS_H9Fx;lp#Gasdik?tl7UlJ&fWtENnP!*~$ zF@7-Fs{Ty7#+6YRkgc`9=iAfXeh2mefSnf5&amS;qv~$t^*4yV`Irh;blk-3D}O5? zFOo;^_W``Pl8+C$Q0PCOX&?RdKKk`p`c0A-SGVY1ODBLFnSoKq#b?JvM5%@$LtVzl zf-tMiT8)I_rSXz7JBv5YqU_Vl3awu@Z&jy_0$ugUOKDSeC#1G0s~SWMCzxn)_H*xK ze!Sf|e;ew^)B&RlCr%d@SpYe zP%txf1X$mR=xDvs{A9}~r6)Loi#%JUhj3gdRjY>>V)puFc3>xctXf`p_Y#CAzIN33 zbAGhdbnso>{igZE4F-u&nwlCw_#(I;sHV4$Fi?=pdF8`#U%a41@<*7p@77^W@GEff zGil-OVA&#Viuj>a(yqU+u5QD}Or zrDaV`Dy%e+b{(hi4KUW)MGtSyS8C{;+^oyk5RMG_KBy0M*`v(XK}+(;x?S_%(8iJ@ zY`}!;`^V4_WVlKfjmhq9@Ke1RhXL>x4FbY6c*^ip#`|A_P3SwX0l@uuRO7)j-W1bF zFD1x%+$SQMLpKl|&Mw2t#FL~EhU)0Nt18Nt?dTRZvBi=+07K1c!;g+ai$vkNMLM?C z>=NneFiiuhsDcpDqXY}cDOy@ug3W9&kHMmKCqJrLW;Y~GCNq}c_7$o2D&-E#Hn9;%Yl}$&kCth&d;_t zA~-!G)mX!N(EqD6yf3GZ;bfP%!}kjFedo0h{mNhbNJ@qV_a}ViIHb5^b1>x zdHlluN$2v1_jyjTTr>s+ASBcfh>Duqt$YFdrAR8=9PqnDzqmNf%f)oRCm=YXm>0+2 zCtU}UE+iFj7ouXk(|oW@NlT5)3A5+?H{wCX%*9wu?tC)!+Dx^cQtX6lrVcT^y=;pa z2whLY9a)1)wt(CVS;XK4?A$tnG2*9BpUk25gE1V8E-GL#6b6go8r-a5^#0-DilFww zv)i(=_uIFi{$JA%_J!iqmhe$vi_$4v5yEhG|3xnuRw`Py!BTw)**X}!_r^)<1EN~fQ|Vh4_ZH2#svwX6ii~2 zd0Bocac4)kz$VJ6!6tO{qMuX}_MVUzD+l+4RT>9!|73|}_}sx9dym|cC5&nZ4U|JtpSyiqH8wGjilEa18hWK#^Qzh4dQ#t%ft53SX?9#KKW zQMUZg{6h57i9q=yf~c-K?+XD)d}*FF0xJG+mB4~ykYVxnj~sfC=cKX*G0xvi9TAk1jpE_K@1|FthAO{H+U{;34SD8I8Jb^2}GxHY3eR-U$u~8Hl z=g2YL%C$3hsG>mZieyp*ec#c|O-d}y(c%}_IDqqfdW8tyLU?}n^A}8PJtq=}Z9u+$ z7(d6yYjNJczi{Z0^f@ipu=qIz8eI%XO^*unv-7ZD>z7U_gU6mI{O|nrmhTGvoLeBZ zpgja3$h2s{Tqji&8yl{g$;nTSi$0g-8W@{L@LsU03%C*1>A^V&5rs<-l(nphouAeM zbv{>U2^K&W=5YaZ>>w=2x^Lt_Cr1s_dZ&80og1OChe>|EZc%=rk^l$uLUit(e%@IK zv*f<@lEN5k^4v}2MG_AD({GtP63xEpg7aSSUJ~j6k_GZ7?7+{oJ{2Q*MX--gdZos&77B8%ZDkgZ^^4ii9_ zrhxtle_f>(+FQT|pVidVEUcKuKz^uknMGfkgi*)d;nIN{46Z;@frp?qKNU!bV@e+t z_&15PFs9b%U_1h?9(a<2z5L66P~5t9cXytzqrn%3Oz@hwt`Hv!w!ZO+akys{Dt_$l z(zQz=FfCkexrpS`eN5V*^zxynEtY{f5Aa^Lr`RQL&K|(2A7fK(_@U1NL>l0@LwMC4 z69y8jg~N-p?aCprXS#{g!Oo7oZ+i97L+N$`_=!xpdwwnwCE0}}8vBGt=az$bTWkzT zWluKvfu`_njhu#f%oeqDLcVkY0-oSzVf}cUjO+}lzJJfeDmdZy6;{YfqAUm8a)6~c z8xD|xliQkKi80pH)iPmh%!;c%EVsIxv(EQM3y3`*^^7gR5N=-!X%%ES&%^7_go6T{ zAb`fY+Hg1GaH;hws$2!FcocG40(2`C83?{SV~3TA@VfU8N2i}N+EfSqZm==<6w*GL zllShVc&;VVb(c&k?#plfQ(yY=BudSKw}`!rdb>{wPwbG;+V!#a4?L2?%f8(lYu)(e zQnmFcP{qjSjM?(>#=(B6qoZTn`Xoh$28Lq5^YS1&?59d`@HBL;#Rg^(w6bBh%Icpl zZ9qux&DMXCoX`a<9*3p_EtS#bSxE4;w1kAPzMdXdu$J>uQ&WHa`n9agF_A@`j_;v( z6lj#E+khW$X8+*qEwOn7t4kb^^pWwbspc_6MbpI`CeL3cs4#ar_#9H7H27T1%tM@9 z488a*9=bpqa?_RuQ)k57D|*IWPC)I)oJ#jPoe0l2*}@R|=vevzJ`rB&`e&A2UPuP8 z`y6+t(fqsN27fnIe*R1L7kKF7&CzpnE!nkSNVMXFnm#1Y98dX0eV05!Y;X=q{^IBL&EAdI zwELncrDBC0^9P?)K}v3Qj3**TukHH~TU;(E)*6@Agm2a~?9z25tt35Ny>t9s9ZO7v zR9=Fyi8sl`_d+ZV-DtvSEXTNXO|7jvMv`$>tdKg4f5ebvFGO>P2Ch4WQ!k_2!!CA@)2dKIb&FjQH=ojq-`kOsZpjr6c@C{$N-f z!r2d(@q4A5y4Op&97oL4S*k)bxl?x25$(6JRYB5lmW%lK`nibQUoJJgub0$Q!3jzA z!P5Sw++i78pAy0gJ@(JMfERWf&je=>xVgMz!=llz5tPjTN)pFKyV6xUP} zqH%3)1f)~=;oy1HUQucz>aeHCod?<88V^n;f7{$;BZ|+GuD~KKw2UII{$V>Tw*1st zTByCiSgFrBxVec1c>?PmF;Euqs}g6D(nbvos6w>ad-Gn>d~nRc9xjvOZDj-~vC8IV zz(Wu|MbpWE=*)gBpxT?+PxxMn?9@DF zPt61yD+WrwE<2Py&wFm; zM`1JjL7;^`ihY!)qP)fR#(dOkD*=VJyBR%1rSmwWC2!8UO`?Z?sqF4mDKrtZ?U6n^ zxJppUGpKm8Lh@8cF3$XIy$G*JN8jHF(J!eC>5f7GS<8LG1_9F{88gPaGO(GzV1I6_ z6UNLQp?c1tV5X^)fw=dTJ8OisK$}Wt0`s&>C8G!HtWylCLWqB~2v6?dSN&PQU!zN4 z%EKG?ee1}~07h>Kunof)n>}L9sK|SGs3*H#Y*RVdM>K068rUg=Bh$Tih~4)Fx}ql# z5ny_P3hNnoD^B4W ztSaT&6*(22_LPHvCB%6<7UNm?pQhHhIeo4U2`>wS7$d!XvkJ5vC{d8GLUXv#bLd)A^pYZ!8G3<1mdOe;Q8J^6-j(C< z$1flk7qA)!Zrb3Py$`eFH_R-|`D0tKAi_$Lty|RC{}74=-6H3`ITN>)k9x3R%#zqo zh;bS&8|NajnCl=Ay!x~mR=}dLHnKG^8fKY8%<6bep|OAhsCFi2W~TwGbaDFg?%d3j zo~W`XLi*6!2D|-TC7%#mo6Icq5e_x zNGy}FpXmC%(oEH`vRrN!yYW2)SMxDY65vVC(zosFYY=trlasnv=&gl(UGa#`YHY2^ zBQ1peUu&xhy|-SVWlN0fBO1SDEW)0K$9?=Zf}9DuqQ9Op8^`>ZefsFT7LikFz)<`h z3Y?#I0#j2{3$Rg+EOPLlTx{f8KXq#o7)XC{@y~FCA zuY90#*KR+fZ`%){14(=ScouCu^j7+2qgF$Je~v#HLfi&l4Y}rjDcS$mUo#N&ER@uS zc&WmRPX?J3J2qdmpuI&Z)6f~S=%t;8FLhO=md7DPxihqjCBARSlxmbw2aI%0u5O|^1ywA-G|7r6;P0cOBEy%&mBf`y{eDVhWf4tz8gSm~R`~P|Y ckFW?Y&;NfxNq&VSyZ}K_PEEE%+BD$*0ou#ZS^xk5 literal 0 HcmV?d00001 diff --git a/website/pics/result-table.html b/website/pics/result-table.html new file mode 100644 index 00000000..262d20d4 --- /dev/null +++ b/website/pics/result-table.html @@ -0,0 +1,13 @@ + + + + Photo + + +

              Prev Up + Next      + Image

              Prev Up + Next      + Image

              Prev Up + Next      + Image